This repository has been archived on 2023-03-25. You can view files and clone it, but cannot push or open issues or pull requests.
mightyscape-1.1-deprecated/extensions/cutcraft/README.md

58 lines
2.9 KiB
Markdown
Raw Normal View History

# cut-craft
## Python package
Note that this package is written for Python 3, however requires Python 2 compatibility for Inkscape integration.
The `cutcraft` package contains components in the following categories:
| Folder | Description |
| --------- | ---------------------------------------------------- |
| core | Core components (point, line etc). |
| platforms | Platforms used to construct shapes (circular etc). |
| shapes | Fundamental 3D shapes (cylinder, cone, sphere etc). |
| supports | Vertical supports to hold the shape levels apart. |
## Core
| Module | Description |
| --------- | --------------------------------------------------------------------------- |
| point | A 2D point with `x` and `y` coordinates. |
| rectangle | Two `point`s defining topleft and bottom right for a rectangle. |
| trace | An ordered collection of `point`s. |
| part | A collection of one or more `trace`s. |
| line | A type of `trace` with two `point`s defining the start and end of the line. |
| circle | A type of `trace` with `point`s defining a circle. |
| neopixel | A type of `trace` with the `point`s defining a cutout suitable to fit a variety of [NeoPixels](https://www.adafruit.com/category/168). |
## Shapes
| Module | Description |
| -------- | -------------------------------------- |
| shape | The core 3D functionality for a shape. |
| cone | A cone `shape`. |
| cylinder | A cylinder `shape`. |
| sphere | A 3D spherical `shape`. |
> Note that the fundamental `shape`s listed above can be used flexibly considering the number of `circle` segments can be specified. For example a `cone` with 4 segments becomes a **pyramid**, and a `cylinder` with 4 segments becomes a **cube**.
## Supports
| Module | Description |
| -------- | --------------------------------------------------- |
| support | The core support structure functionality. |
| pier | A pier like `support` to hold `shape` levels apart. |
| face | A solid face to `support` `shape` levels. |
## Python 2 vs 3 Compatibility
The initial aim was to develop only for Python 3, however [Inkscape](https://inkscape.org) currently uses Python 2 as the default interpreter for extensions. As a result, the following should be noted while reviewing the code:
1) The calls to `super()` are written in a way that works with both versions of Python.
2) The `math.isclose()` function is not available in Python 2 so a local version has been created in [util.py](util.py).