This changed is inspired by (and slightly refactors) the Array Path modifier.
It currently takes the Placement XYZ and Z Angle into consideration.
Future work could also implement rotating the path around the X and Y
axes.
* Start of new dogbone dressup
* Added Instruction and tangents support for G2/3 moves
* Added Maneuver class to represent a set of moves and process them coherently
* Created kinks and verify their creation.
* Added dogbone detection and verification
* Simplified gcode strings
* Added horizontal t-bones generation
* Added support for vertical t-bone
* Consolidated t-bone creation
* Added support for pathLength
* Added support for tbone on short edge
* Added support for long edges
* Added support for dogbones
* Fixed dogbone for non-horizontal lead-in
* Horizontal bone adaptive length tests
* Fixed dogbone angle and adaptive length
* Some code cleanup
* Added adaptive length tests for dogbones
* Split base data classes into their own PathLanguage module.
* Splitting dogboneII implementation into its constituents
* Moved adaptive length into DogbonII module
* Separate dogboneII generator test cases and changed interface to allow for dynamic length calculations
* Unit tests for length calculation
* Initial DogboneII unit test
* Unit tests and fixes for plunge move handling
* Unit tests for the remaining styles and incision strategies
* Basic DogboneII gui
* Added support for markers
* Better color and selection scheme for markers
* Cleaned up import statements
* Added DogboneII to Path WB init
* Support for dogbone on dogbone and fixed t-bone generation
* Fixed t-bone on short leg bones
* Fixed tbone on short edge when short edge is m1
* Fixed t-bone on long edge for m0/m1 and CW/CCW
* Removed redundant code
* Removed redundant 'Dress-up' from menu entries
* black code formatting
* added generator to cmake
* Fixed typos
Add code block to remove first of any two consecutive, roughly equal depth values (twin values).
Add two unit tests to support new code block and use cases.
black reformat for PathCommands
Black reform PathCopy
Black reform PathComment
Black reformat PathCustom/gui
Black reformat PathUtil/PathUtils
Black reformat PathHop
Black reformat PathGeom
Black reformat
Black reformat
Black reformat
Black reformat
Black reformat
black reformat
Black reformat
black
Generalize the `extractFaceOffset` method to `getOffsetArea`, which can
handle both face offsetting and projection. Another difference is that
the new method exposes Area's ability to preserve internal holes,
defaulting to preserving. The method is moved to the PathUtils module,
reflecting its generality and fairly wide used across Path.
This method is then used to provide a drop-in alternative to
`FindUnifiedRegions` via a small wrapper in PathSurfaceSupport. The Area
implementation is generally quick, but can fail (throw) in some cases,
so the wrapper is trying the Area method as an optimization first, and
falls back to the full `FindUnifiedRegions` logic if that fails.
Implement an iterative version of the Ramer-Douglas-Peucker line
simplification algorithm
(https://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm),
which reduces line complexity to a limited linear deviation from the
original polyline. The ability to reason about linear deflection is the
key improvement over the previous linear implementation.
Worst case complexity is O(n^2), but expected complexity for typical
cases is O(n log n). A potentially faster alternative would be to call
out to libclipper, treating the line as a closed polygon. However, in
practice, performance of this implementation seems good enough. A
complex 3d surface operation optimizes in a few seconds, and reduces
output gcode size from about 220MB with the previous implementation to
10MB.
lazy_loader is copied to Ext now, modified external imports to lazy_load
add a few more imports to be lazy loaded, think the install path is correct now
[TD]"<" symbol embedded in html
revert changes to path modules for testing
use lazyloader in PathAreaOp.py
add back in deferred loading
temp change to print error message in tests
temp change to print error message in tests
add _init__.py to lazy_loader
make install in CMakeLists.txt one line