Compare commits

..

655 commits
v0.8.0 ... dev

Author SHA1 Message Date
gumyr
a971cbbad6 Making project_to_viewport a proper method
Some checks failed
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (macos-15-intel, 3.10) (push) Has been cancelled
tests / tests (macos-15-intel, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
2025-12-03 13:41:53 -05:00
gumyr
726a72a20b Eliminating copying exploration methods in higher order classes
Some checks are pending
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (macos-15-intel, 3.10) (push) Waiting to run
tests / tests (macos-15-intel, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-12-03 11:35:20 -05:00
gumyr
3871345dcd Improving split to explicitly handle all Keep Enum values 2025-12-03 10:13:09 -05:00
gumyr
6605b676a3 Fixed problem with hollow STL files
Some checks are pending
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (macos-15-intel, 3.10) (push) Waiting to run
tests / tests (macos-15-intel, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-12-02 20:25:34 -05:00
gumyr
17ccdd01cc Fixing OCCT typing problems 2025-12-02 20:24:55 -05:00
gumyr
3474dc61d2 Fixed typing @ OCCT level
Some checks are pending
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (macos-15-intel, 3.10) (push) Waiting to run
tests / tests (macos-15-intel, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-12-02 13:03:58 -05:00
gumyr
5adf296fd8 Fixed typing and linting issues
Some checks are pending
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (macos-15-intel, 3.10) (push) Waiting to run
tests / tests (macos-15-intel, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-12-02 11:04:08 -05:00
gumyr
8985220c79 Typing improvements
Some checks are pending
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (macos-15-intel, 3.10) (push) Waiting to run
tests / tests (macos-15-intel, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-12-01 21:05:38 -05:00
gumyr
e7045ea856 Merge branch 'dev' of https://github.com/gumyr/build123d into dev 2025-12-01 20:05:02 -05:00
gumyr
2fa0dd22da Refactored Solid.extrude_until, moved split to Shape, fixed misc typing problems 2025-12-01 20:04:48 -05:00
Roger Maitland
ad77bf5f7f
Merge pull request #1158 from gumyr/pr1140
Some checks failed
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (macos-15-intel, 3.10) (push) Has been cancelled
tests / tests (macos-15-intel, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
Pr1140 with typing and test coverage improvements
2025-11-29 12:01:43 -05:00
gumyr
0bedc9c9ad Fixed typing problems and increased coverage to 100% 2025-11-29 11:43:27 -05:00
gumyr
a8fc16b344 Replacing Mixin1D.discretize with enhanced Minxin1D.positions
Some checks failed
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (macos-15-intel, 3.10) (push) Has been cancelled
tests / tests (macos-15-intel, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
2025-11-25 13:26:36 -05:00
Roger Maitland
6eb11ad9f6
Merge pull request #1081 from paulftw/dev
Add Mixin1D.discretize
2025-11-25 13:14:58 -05:00
Roger Maitland
05eb8fbd4d
Merge branch 'dev' into dev 2025-11-25 12:58:56 -05:00
gumyr
82aa0aa367 Updating positions tests 2025-11-25 11:39:39 -05:00
gumyr
2d82b2ca5c Adding tests for positions with deflection 2025-11-25 11:27:21 -05:00
gumyr
7f6d44249b Added GCPnts_UniformDeflection to positions 2025-11-25 11:27:21 -05:00
gumyr
bdad339e58 Merge branch 'dev' of https://github.com/gumyr/build123d into dev
Some checks failed
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (macos-15-intel, 3.10) (push) Has been cancelled
tests / tests (macos-15-intel, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
2025-11-21 15:09:32 -05:00
gumyr
bc8d01dc7e Improve length accuracy Issue #1136, minor typing fixes 2025-11-21 15:09:11 -05:00
jdegenstein
7a4f1f7e55
Merge pull request #1141 from jdegenstein/bytesio
Some checks are pending
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (macos-15-intel, 3.10) (push) Waiting to run
tests / tests (macos-15-intel, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
Add BytesIO export support to SVG, DXF, STEP, and STL/3MF via a lib3mf/Mesher workaround
2025-11-20 15:56:02 -06:00
jdegenstein
70764bbe08 revert spurious docstring change for Mesher.write 2025-11-20 15:28:37 -06:00
gumyr
26caed754c Removing make_face changes keeping BoundBox.extent
Some checks are pending
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (macos-15-intel, 3.10) (push) Waiting to run
tests / tests (macos-15-intel, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-11-20 13:31:25 -05:00
gumyr
02a8c07e0a Reapply "Enhanced make_face so faces can have holes. Added BoundBox.measure"
This reverts commit 607efade27.
2025-11-20 11:51:04 -05:00
gumyr
607efade27 Revert "Enhanced make_face so faces can have holes. Added BoundBox.measure"
This reverts commit a5e95fe72f.
2025-11-20 11:50:15 -05:00
gumyr
a5e95fe72f Enhanced make_face so faces can have holes. Added BoundBox.measure 2025-11-20 11:15:12 -05:00
jdegenstein
e6d272b2fa
Merge pull request #1144 from Birdulon/patch-1
Some checks are pending
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (macos-15-intel, 3.10) (push) Waiting to run
tests / tests (macos-15-intel, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
Fix Example 14 header in introductory_examples.rst
2025-11-19 10:43:47 -06:00
Luke H-W
a00cecbc38
Fix Example 14 header in introductory_examples.rst
Header had "1." instead of "14."
2025-11-20 02:36:46 +10:30
gumyr
4507d78fff Added Color.categorical_set that generates a creates a list of visually distinct colors 2025-11-19 10:01:58 -05:00
gumyr
f3b080e351 Merge branch 'dev' of https://github.com/gumyr/build123d into dev 2025-11-19 09:25:01 -05:00
Roger Maitland
bc96e84dc2
Merge pull request #1143 from jwagenet/doc-fixes
Documentation: Formatting corrections and code style fixes
2025-11-19 09:23:56 -05:00
Roger Maitland
8980120cb2
Merge pull request #1133 from jwagenet/color_hexstr_rgba
Some checks are pending
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (macos-15-intel, 3.10) (push) Waiting to run
tests / tests (macos-15-intel, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
Feature: add support for Color initialization with RGBA hex string
2025-11-18 13:11:59 -05:00
Jonathan Wagenet
f144ca5aa8 Fix tutorial links 2025-11-18 10:34:21 -05:00
jdegenstein
7f4e92f0bf enable BytesIO in STEP, STL and 3MF (via lib3mf/Mesher). Add necessary tests 2025-11-17 22:05:45 -06:00
Jonathan Wagenet
9707749c61 Merge branch 'dev' into doc-fixes 2025-11-17 18:42:32 -05:00
jdegenstein
d329cf1094 initial changes to support BytesIO 2025-11-17 10:09:54 -06:00
Roger Maitland
837b743a13
Merge pull request #1088 from jwagenet/lexer
Some checks failed
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (macos-15-intel, 3.10) (push) Has been cancelled
tests / tests (macos-15-intel, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
Docs: Add improved syntax highlighting to code blocks
2025-11-16 10:45:16 -05:00
Roger Maitland
caa25671fb
Merge branch 'dev' into lexer 2025-11-16 10:21:51 -05:00
x0pherl
1095f3ee4c changes to make development more friendly on MacOS 2025-11-16 10:16:25 -05:00
Alex Verschoot
c7034202f3 Changed the tests to not expect a valueorrer when having a 0 radius, but add two assertEquals so the number of Circles and Lines should be correct 2025-11-16 16:15:13 +01:00
Alex Verschoot
dc90a4b15a Changed the FilletPolyLine to be compatible with 0-radius fillets, where it should behave like a normal Polyline 2025-11-16 15:48:30 +01:00
x0pherl
e92255cefc updated to handle polygons without closed lines
Some checks are pending
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (macos-15-intel, 3.10) (push) Waiting to run
tests / tests (macos-15-intel, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-11-15 14:23:32 -05:00
x0pherl
173c7b08e2 added support for passing an iterable of radii to FilletPolyline. 2025-11-15 14:23:32 -05:00
gumyr
2768427087 Merge branch 'dev' of https://github.com/gumyr/build123d into dev 2025-11-15 13:47:06 -05:00
Roger Maitland
df17ae8698
Merge pull request #1120 from jwagenet/intersections-2d
Intersect Everything: 2D, 3D, Composite Shapes
2025-11-15 13:28:39 -05:00
Jonathan Wagenet
5f67a1932a Update for dev merge to Compound and Face(Plane) 2025-11-14 17:30:55 -05:00
Jonathan Wagenet
5ea2dab174 Merge branch 'dev' into intersections-2d 2025-11-14 14:41:37 -05:00
Jonathan Wagenet
5523a2184c Revert mode == Mode.INTERSECT iteration. pass Compound instead 2025-11-14 14:40:58 -05:00
Jonathan Wagenet
c384df21c7 Intersect: dissolve Wire, Shell after intersection, no need to process 0d, 1d separately 2025-11-14 13:31:40 -05:00
Jonathan Wagenet
68f6ef2125 Convert intersect to use _bool_op and split Wire after intersect 2025-11-14 13:26:17 -05:00
Jonathan Wagenet
3877fd5876 Ignore orderless Shapes in _bool_op 2025-11-14 12:58:46 -05:00
jdegenstein
6937501e79
Merge pull request #1134 from jdegenstein/pytest842
Some checks failed
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (macos-15-intel, 3.10) (push) Has been cancelled
tests / tests (macos-15-intel, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
pyproject.toml -> pin to pytest==8.4.2 per pytest-dev/pytest-xdist/issues/1273
2025-11-12 16:06:01 -06:00
jdegenstein
20854b3d4d
pyproject.toml -> pin to pytest==8.4.2 per pytest-dev/pytest-xdist/issues/1273 2025-11-12 15:40:23 -06:00
Jonathan Wagenet
083cb1611c Remove depreciated Color.to_tuple 2025-11-12 12:29:48 -05:00
Jonathan Wagenet
cc34b5a743 Convert to pytest with parameterization and test ids 2025-11-12 12:18:30 -05:00
Jonathan Wagenet
5d84002aa5 Add Color support for RGBA hex string 2025-11-12 10:37:45 -05:00
gumyr
38e69844b3 Merge branch 'dev' of https://github.com/gumyr/build123d into dev 2025-11-08 10:29:53 -05:00
Roger Maitland
e6d98de840
Merge pull request #1113 from jwagenet/face_plane
Some checks failed
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (macos-15-intel, 3.10) (push) Has been cancelled
tests / tests (macos-15-intel, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
Replace `Face.make_plane()` with `Face(Plane)`
2025-11-08 10:19:42 -05:00
gumyr
395ecc173e Merge branch 'dev' of https://github.com/gumyr/build123d into dev 2025-11-08 10:14:56 -05:00
gumyr
513c50530c Added support for Face/cone properties: enhanced axis_of_rotation added semi_angle 2025-11-08 10:13:03 -05:00
Roger Maitland
0416967a61
Merge pull request #1110 from snoyer/improve-shapes-typing
Improve shapes typing
2025-11-08 09:59:09 -05:00
Jonathan Wagenet
3bea4d3228 Re-add make_plane with depreciation warning 2025-11-07 16:11:33 -05:00
snoyer
27567a10ef fix typo 2025-11-07 21:29:06 +04:00
jdegenstein
fa8e93687c
Merge pull request #1125 from jdegenstein/logo_link
Some checks failed
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (macos-15-intel, 3.10) (push) Has been cancelled
tests / tests (macos-15-intel, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
README.md -> use an absolute image link to fix logo on pypi
2025-11-05 13:50:28 -06:00
jdegenstein
44faaae5a7
README.md -> use an absolute image link to fix logo on pypi 2025-11-05 13:25:27 -06:00
Jonathan Wagenet
b049e6a8ce Merge branch 'dev' into intersections-2d (fix import conflict) 2025-10-29 13:49:49 -04:00
Jonathan Wagenet
3713574519 Remove xfail notes from issue tests 2025-10-29 13:02:31 -04:00
Jonathan Wagenet
5d7b098379 Correct mode == Mode.INTERSECT to iterate intersections instead of pass all in to_intersect
Shape.intersect(A, B) through BRepAlgoAPI_Common appears to treat tool as a single object such that intersection is Shape ^ (A + B). The updated intersect methods treat this intersection as Shape ^ A ^ B. The intersections in this change need to be interated to accomadate.
2025-10-29 00:16:02 -04:00
Jonathan Wagenet
069b691964 Conform Shape.intersect to None | ShapeList 2025-10-28 23:56:29 -04:00
Jonathan Wagenet
315605f485 Correct area/volume calculations from intersect with new return type of ShapeList 2025-10-28 23:45:29 -04:00
Jonathan Wagenet
c13ef47cef Correct ex26 by revolving 180 and removing mirror which creates invalid shape 2025-10-28 23:33:29 -04:00
Jonathan Wagenet
a7b554001f Add intersect method to Compound, similar to 2d and 3d 2025-10-24 22:37:28 -04:00
Jonathan Wagenet
cfd4546585 Add Compound tests 2025-10-24 22:36:56 -04:00
gumyr
696e99c889 Improving Face creation - fix inner Wires
Some checks failed
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (macos-15-intel, 3.10) (push) Has been cancelled
tests / tests (macos-15-intel, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
2025-10-24 18:34:11 -04:00
gumyr
70310ddd4a Shortened and removed CQ reference
Some checks failed
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (macos-15-intel, 3.10) (push) Has been cancelled
tests / tests (macos-15-intel, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
2025-10-23 14:34:11 -04:00
gumyr
3942c32804 Merge branch 'dev' of https://github.com/gumyr/build123d into dev 2025-10-23 13:51:01 -04:00
gumyr
a649fab27c Improving attribution 2025-10-23 13:50:50 -04:00
Jonathan Wagenet
89dedd0888 Add lexer to surface tuts 2025-10-21 14:03:22 -04:00
Jonathan Wagenet
8c32e3bed3 Merge branch 'dev' into lexer 2025-10-21 13:59:45 -04:00
Jonathan Wagenet
c83aedaae2 Merge branch 'dev' into doc-fixes 2025-10-21 13:49:35 -04:00
jdegenstein
72e89b7b1d
Merge pull request #1097 from jdegenstein/deprecate_arcs
Some checks failed
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (macos-15-intel, 3.10) (push) Has been cancelled
tests / tests (macos-15-intel, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
Deprecate some Arcs (e.g. ArcArcTangentArc)
2025-10-21 12:40:50 -05:00
jdegenstein
b509ef5761
Merge branch 'dev' into deprecate_arcs 2025-10-21 12:31:27 -05:00
Jonathan Wagenet
9a6c382ced Replace Face.make_plane() with Face(Plane) to match Edge(Axis) 2025-10-21 13:31:14 -04:00
Jonathan Wagenet
fb324adced Add 2d and 3d multi to_intersect cases, exception cases 2025-10-21 12:57:03 -04:00
jdegenstein
86624f576d
Merge pull request #1111 from jdegenstein/rtd_tab_title
.readthedocs.yaml -> fix tab title version on dev version builds
2025-10-21 10:12:43 -05:00
jdegenstein
96ce15a1e1
.readthedocs.yaml -> fix tab title version on dev version builds 2025-10-21 09:49:24 -05:00
snoyer
6ce4a31355 appease mypy 2025-10-21 10:31:41 +04:00
snoyer
a6d8f9bdc1 refactor .wrapped is None usages 2025-10-21 10:15:47 +04:00
snoyer
0013b9fa87 fix Mixins generic types 2025-10-21 08:28:24 +04:00
snoyer
5d485ee705 use _wrapped: TOPODS | None member and wrapped: TOPODS property 2025-10-21 08:12:29 +04:00
gumyr
453f676882 Adding points to trim
Some checks are pending
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (macos-15-intel, 3.10) (push) Waiting to run
tests / tests (macos-15-intel, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-10-20 18:50:14 -04:00
Jonathan Wagenet
c7bf48c80c Add intersect methods to Mixin2D and Mixin3D
These methods are very similar using a branching structure to pick intersection method.
2025-10-20 17:59:19 -04:00
gumyr
d66e22655e Adding missing spitfile file
Some checks failed
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (macos-15-intel, 3.10) (push) Has been cancelled
tests / tests (macos-15-intel, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
2025-10-19 15:37:32 -04:00
gumyr
4a32cedcd2 Updating surface modeling docs 2025-10-19 15:31:47 -04:00
gumyr
283767f69d Cached color lookups 2025-10-19 11:29:21 -04:00
Jonathan Wagenet
99da8912df Add 2d and 3d intersection tests 2025-10-17 11:45:11 -04:00
gumyr
52b2883fca Merge branch 'dev' into tangents
Some checks failed
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (macos-15-intel, 3.10) (push) Has been cancelled
tests / tests (macos-15-intel, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
2025-10-17 11:28:51 -04:00
gumyr
1368513956 make_constrained_lines working 2025-10-17 11:15:08 -04:00
Roger Maitland
0862ac4fe6
Merge pull request #1106 from gongfan99/gordon_surface_intersect
fix: gradient error in gordon surface intersect
2025-10-17 09:19:19 -04:00
Fan Gong
b097455505 fix: single point only allowed at start and end
modified:   pyproject.toml
	modified:   src/build123d/topology/two_d.py
	modified:   tests/test_direct_api/test_face.py
2025-10-16 22:25:14 -04:00
Fan Gong
bd03fcbdb4 fix: remove minor artifact
modified:   tests/test_direct_api/test_face.py
2025-10-13 11:53:37 -04:00
Fan Gong
acfe5fde8a fix: no need to check wrapped for Vector class
modified:   src/build123d/topology/two_d.py
2025-10-13 11:44:02 -04:00
Fan Gong
02d7be83b1 feat: allow a single point to be used as either a profile or a guide
modified:   pyproject.toml
	modified:   src/build123d/topology/two_d.py
	modified:   tests/test_direct_api/test_face.py
2025-10-13 11:19:21 -04:00
Fan Gong
198dab0ab4 fix: gradient error in gordon surface intersect
modified:   pyproject.toml
2025-10-11 17:04:46 -04:00
gumyr
32c1322370 99% coverage on constrained lines
Some checks failed
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (macos-15-intel, 3.10) (push) Has been cancelled
tests / tests (macos-15-intel, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
2025-10-09 11:37:24 -04:00
gumyr
a12961cfff Merge branch 'dev' into tangents 2025-10-08 09:51:17 -04:00
gumyr
c4ccfb141f Adding missing test
Some checks failed
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (macos-15-intel, 3.10) (push) Has been cancelled
tests / tests (macos-15-intel, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
2025-10-06 13:46:23 -04:00
gumyr
f67cc12c34 Adding Airfoil 1D object 2025-10-06 13:42:46 -04:00
Roger Maitland
d905bddc3c
Merge pull request #1101 from gongfan99/gordon_surface
Some checks are pending
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (macos-15-intel, 3.10) (push) Waiting to run
tests / tests (macos-15-intel, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
fix: make_gordon_surface supports all edge types
2025-10-05 18:33:53 -04:00
Fan Gong
a00ae674ae fix: make_gordon_surface supports all edge types
fix: upgrade ocp_gordon to make intersect stable
	modified:   pyproject.toml
	modified:   src/build123d/topology/two_d.py
	modified:   tests/test_direct_api/test_face.py
2025-10-05 08:14:25 -04:00
Roger Maitland
0ca0598907
Merge pull request #1099 from gongfan99/gordon_surface
Some checks failed
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (macos-15-intel, 3.10) (push) Has been cancelled
tests / tests (macos-15-intel, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
feat: add Gordon surface implementation and test
2025-10-03 10:28:31 -04:00
Fan Gong
3bd4b39b0a fix: minor adjust to test_make_gordon_surface
modified:   tests/test_direct_api/test_face.py
2025-10-02 22:37:39 -04:00
Fan Gong
b3cec27cfb fix: add test for ValueError for gordon surface
modified:   tests/test_direct_api/test_face.py
2025-10-02 22:32:41 -04:00
Fan Gong
925d12ff7c fix: change function name to make_gordon_surface
fix: change the test name accordingly
fix: corrected the type error for Edge.wrapped
fix: change min version of ocp_gordon to 0.1.12
	modified:   pyproject.toml
	modified:   src/build123d/topology/two_d.py
	modified:   tests/test_direct_api/test_face.py
2025-10-02 21:01:28 -04:00
jdegenstein
1af4b0c312
Merge pull request #1100 from jdegenstein/mac15-intel
Some checks are pending
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-15-intel, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (macos-15-intel, 3.10) (push) Waiting to run
tests / tests (macos-15-intel, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
Move from macos-13 (x86_64) to macos-15-intel (also x86_64) for relevant workflows
2025-10-02 16:52:51 -05:00
jdegenstein
bde1ee08a9
benchmark.yml -> macos-15-intel 2025-10-02 12:16:51 -05:00
jdegenstein
9a7c9493d3
test.yml -> move to macos-15-intel 2025-10-02 12:16:29 -05:00
Fan Gong
64267ab3f7 feat: add Gordon surface implementation and test
modified:   pyproject.toml
	modified:   src/build123d/topology/two_d.py
	modified:   tests/test_direct_api/test_face.py
2025-10-01 22:10:19 -04:00
gumyr
6ac2e67a2e Fixed typing problems
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
2025-10-01 19:13:51 -04:00
gumyr
59a6e3623f Fixing docstring & angle calculation
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-10-01 11:55:42 -04:00
gumyr
31a73bacda Basic make_constrained_lines working 2025-10-01 11:36:49 -04:00
Roger Maitland
0166408f60
Merge pull request #1090 from jwagenet/intersections
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
Intersect Everything: Geometry and 0D, 1D Shape
2025-10-01 10:13:48 -04:00
jdegenstein
8490b516bb
Merge branch 'gumyr:dev' into deprecate_arcs 2025-09-30 11:02:06 -05:00
Jonathan Wagenet
640b530058 Fix doctrings for sphinx make 2025-09-24 23:48:46 -04:00
Jonathan Wagenet
bb9495a821 Reorder mirror / make_face bot best practice to resolve #1053 2025-09-24 23:28:22 -04:00
Jonathan Wagenet
f4c79db263 Change kwarg capitalization to fix #1026. Unindent code blocks, fix doublespace + formatting 2025-09-24 23:16:35 -04:00
Jonathan Wagenet
431cf4c191 Merge branch 'dev' into intersections 2025-09-24 20:29:28 -04:00
jdegenstein
25de6af76b
objects_curve.py -> add deprecations to unreleased arc type objects 2025-09-23 13:20:58 -05:00
gumyr
fed77612c0 Coverage at 100%
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
2025-09-23 13:46:12 -04:00
gumyr
404aed73d6 Added Axis as tangent/center_on types
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-09-23 10:48:06 -04:00
Jonathan Wagenet
1754da47fa Restructure intersection loops to intersect next in to_intersect with the previous intersect result, exit early if None 2025-09-22 14:50:44 -04:00
Jonathan Wagenet
26c723ccb6 Add exception tests 2025-09-22 14:48:36 -04:00
gumyr
5bf505341c Handling MAC error codes
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-09-22 14:17:04 -04:00
Jonathan Wagenet
ca748f0f2e Move intersect from Edge to Mixin1D, support Wire, tidy up logic 2025-09-18 18:58:19 -04:00
Jonathan Wagenet
d8a2a3b089 Support results of Vertex or list[Vertex] for set intersection 2025-09-18 17:20:48 -04:00
gumyr
71534e3e9f Improving test coverage
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
2025-09-17 11:43:45 -04:00
gumyr
6f41cd851c Improving test coverage
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-09-16 19:36:41 -04:00
Jonathan Wagenet
4b8a4e92c1 Tidy geometry and zero_d intersection typing and docstrings. 2025-09-16 12:42:47 -04:00
gumyr
bc8fd45625 Another typing fix
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
2025-09-15 11:40:26 -04:00
gumyr
e215a120df Fixing typing after mypy upgrade 2025-09-15 11:36:27 -04:00
gumyr
d8f7da348c Fixing typing
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-09-14 19:09:29 -04:00
gumyr
f0f79fccd4 Refining code and adding tests
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
2025-09-13 14:17:04 -04:00
gumyr
872c62c645 Added support for point inputs & some tests
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-09-12 13:42:44 -04:00
gumyr
9e679046b1 Cleaning up code 2025-09-12 10:40:54 -04:00
Jonathan Wagenet
d313ebda60 Add Vertex.intersect
Vertex is always treated as Vector with point-like objects
2025-09-11 12:52:43 -04:00
Jonathan Wagenet
da1294a390 Add geometry intersection tests. Tighten intersection with Vector from Location and coplanar Planes. 2025-09-11 12:32:23 -04:00
Jonathan Wagenet
a291a942a1 Mark test_freecad xfail due to type missmatches 2025-09-11 12:30:32 -04:00
Jonathan Wagenet
1bcbde29bc Add intersection test framework with tests from issues 2025-09-11 11:38:50 -04:00
gumyr
3b11f40d9d Moved edge/point ordering to make_constrained_arcs
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-09-11 10:09:56 -04:00
Jonathan Wagenet
3d8bbcc539 Add basic b123d lexer and change pygments style 2025-09-09 23:21:05 -04:00
gumyr
76ec798d21 Basic sanity of all options
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
2025-09-09 14:22:41 -04:00
gumyr
32fb6c4ed6 Fixed 1 tangent/pnt and center
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-09-09 11:25:51 -04:00
gumyr
2d280a0deb Fixed tan2 with points and on_curve 2025-09-09 10:56:02 -04:00
gumyr
8b2886144e Initial commit of make_constrained_arcs
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-09-08 12:23:18 -04:00
gumyr
f489854425 Restructuring to utils 2025-09-07 11:49:16 -04:00
gumyr
bfd7968b80 Initial constrained tangent code 2025-09-06 19:30:11 -04:00
gumyr
790f0eaced Adding Mixin1D.curvature_comb
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
2025-09-03 19:29:46 -04:00
gumyr
5681bfb905 Adding BlendCurve to the docs
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-09-03 11:01:05 -04:00
gumyr
6028b14aa0 Adding BlendCurve Issue #1054
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-09-02 14:21:59 -04:00
gumyr
033ad04b70 Improving shape_core.py typing
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-09-01 14:06:08 -04:00
gumyr
cc7b3ffa82 Fixed Edge.filter_by not respecting location Issue #1083 2025-09-01 13:45:50 -04:00
gumyr
a52f112375 Improving test coverage
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
2025-08-31 20:11:58 -04:00
gumyr
6755a721d8 All tests pass
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-08-31 14:16:00 -04:00
gumyr
3074f18d01 Fixed Wire.derivative_at with reversed edges 2025-08-31 13:38:39 -04:00
gumyr
9d019ea436 Improved offset2d side selection 2025-08-31 10:35:28 -04:00
gumyr
af37935790 Merge branch 'dev' into param_at 2025-08-31 09:48:21 -04:00
Roger Maitland
8e830d0e2b
Merge pull request #1082 from paulftw/nitpickDocs
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
Docs should say arc when curve would be ambiguous
2025-08-31 09:47:26 -04:00
Paul Korzhyk
16396571e1 call arcs arcs 2025-08-30 21:01:33 +03:00
gumyr
dc763aa6b7 Adding reversed edges in wire param_at_point test
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-08-30 10:46:30 -04:00
gumyr
735f4ffb4d Wire.param_at_point improved 2025-08-30 10:16:39 -04:00
gumyr
a1b20c582d Merge branch 'dev' into param_at 2025-08-29 10:31:48 -04:00
Paul Korzhyk
335f82d740 Add Mixin1D.discretize 2025-08-28 20:19:06 +03:00
Roger Maitland
26f43dcf26
Merge pull request #1072 from jwagenet/colorlike
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
Feature: add `ColorLike` handling to `Color`
2025-08-26 10:20:50 -04:00
gumyr
232c283efc Working on coverage 2025-08-21 13:23:20 -04:00
gumyr
93331313c1 Improving docstrings and tests 2025-08-19 11:56:56 -04:00
gumyr
5720873441 All tests pass 2025-08-18 14:08:32 -04:00
gumyr
2efa2a3a09 Most functionality working 2025-08-16 17:49:33 -04:00
Jonathan Wagenet
e6cc2c6c0e Color: Strip string input and remove redundant Color | ColorLike typing 2025-08-13 12:34:08 -04:00
Jonathan Wagenet
16abcafa6d Fix color setter in step import which could receive None in tests (despite the lack of None typing). Other color setters more explicitly return rgba so should be safe. 2025-08-12 23:23:05 -04:00
Jonathan Wagenet
110dc698fc Merge branch 'dev' into colorlike 2025-08-12 15:24:18 -04:00
Roger Maitland
94d0d2a868
Merge pull request #1069 from jdegenstein/make_brake_formed_pending_edges
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
operations_part.py -> reset `pending_edges` for `make_brake_formed`
2025-08-12 09:46:04 -04:00
Jonathan Wagenet
4341d8a399 Add ColorLike to Shape.color handling 2025-08-11 21:43:51 -04:00
Jonathan Wagenet
847f4f5f7c Add Color to ColorLike 2025-08-11 21:17:37 -04:00
Jonathan Wagenet
377ec3a40b Add ColorLike and update Color overloads accordingly
- add css3 color support through webcolors
- replace color_tuple
- restructure input branching
2025-08-11 20:43:10 -04:00
jdegenstein
d0284abbb3
operations_part.py -> reset pending_edges for make_brake_formed 2025-08-11 11:18:02 -05:00
Roger Maitland
7c19910382
Merge pull request #1062 from Mx-El/Perspective-Render
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
add ability to do perspective projection
2025-08-06 09:34:42 -04:00
Elle Kaplan
e32799dd6f
add ability to do perspective projection 2025-08-06 02:07:24 -04:00
Roger Maitland
031b6d3700
Merge pull request #1061 from el-cms/manu/links
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
Fix link format in external tools docs
2025-08-05 14:42:22 -04:00
Manuel Tancoigne
fd40c91227
Fix link format in external tools docs 2025-08-05 20:34:38 +02:00
Roger Maitland
ce8b5f285b
Merge pull request #1059 from el-cms/manu/links
Add link to bd_beams_and_bars to external tools
2025-08-05 12:19:43 -04:00
Manuel Tancoigne
13dd4da6a0
Add link to bd_beams_and_bars to external tools 2025-08-04 22:24:37 +02:00
Roger Maitland
45a2166cd2
Merge pull request #1058 from jwagenet/arcarctangentarc
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
Feature: `ArcArcTangentArc` add missing tangent cases and fix bad objects in BuildLine
2025-08-02 10:48:34 -04:00
Jonathan Wagenet
815f30abbf Check TOLERANCE instead of strict equality 2025-08-01 18:21:43 -04:00
Jonathan Wagenet
e766ba96cc Make BaseEdgeObject additions private to avoid adding to context. 2025-08-01 17:10:03 -04:00
Jonathan Wagenet
6dd89cf004 AATA: Add test matrix to spot check min/max limits, tangency for each condition 2025-08-01 15:49:26 -04:00
Jonathan Wagenet
ab6eaff52b AATA: Fix tests and addsome new. Likely incomplete 2025-07-31 23:18:18 -04:00
Jonathan Wagenet
6d6084ce15 Update AATA svg creation 2025-07-31 23:11:20 -04:00
Jonathan Wagenet
cd0763791b Fix pylint and mypy errors 2025-07-31 22:14:05 -04:00
Jonathan Wagenet
eb488afcd3 Add AATA keep table 2025-07-31 16:51:42 -04:00
Jonathan Wagenet
5e4f4dbcb4 AATA: add short_sag option 2025-07-31 16:51:23 -04:00
Jonathan Wagenet
da5b1fb961 AATA: support overlapping cases 2025-07-31 14:52:57 -04:00
Jonathan Wagenet
7dde642f04 AATA: support internal arc placement in addition to external 2025-07-30 14:56:51 -04:00
Jonathan Wagenet
59bc6268bc AATA: correct tangent check to use full start circle if start arc is a segment 2025-07-30 14:04:15 -04:00
gumyr
9f51515c63 Enhancing loft to support a single hole
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
2025-07-30 13:53:05 -04:00
Roger Maitland
e3561fd53e
Merge pull request #1051 from jwagenet/font_list
Add method to list available system font names and FontStyles
2025-07-30 09:26:42 -04:00
Jonathan Wagenet
06d2d9a817 Add FontInfo test 2025-07-29 10:38:05 -04:00
Jonathan Wagenet
986aa30be5 Add new method available_fonts for listing available font names and styles to resolve #364 2025-07-28 12:12:12 -04:00
Roger Maitland
c2b3ed40e3
Merge pull request #1050 from yeicor/patch-1
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
Update external tools to add OCP.wasm and update Yet Another CAD Viewer
2025-07-27 19:21:08 -04:00
jdegenstein
b094d6f56a
Merge pull request #1048 from jdegenstein/surface_fill
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
Add missing docstring to `Face.make_surface_patch` and enhance error checking / handling and related tests
2025-07-27 14:43:13 -05:00
Yeicor
5c7ab703e1
Update external tools to add OCP.wasm and update Yet Another CAD Viewer 2025-07-26 20:31:16 +02:00
jdegenstein
c2bfb74784
test_face.py -> add new test for missing coverage line 2025-07-25 13:30:17 -05:00
jdegenstein
ca823c4c1e
test_face.py -> add error checking tests 2025-07-25 11:56:49 -05:00
jdegenstein
6d16d56586
two_d.py -> Face.make_surface_patch: add docstring and additional error handling 2025-07-25 11:32:40 -05:00
Roger Maitland
e534dd9d44
Merge pull request #1043 from jdegenstein/surface_fill
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
Add `Face.make_surface_patch` constrained surface modeling method
2025-07-22 10:58:07 -04:00
jdegenstein
5612100e60 change interface for better type checking, add a few basic tests 2025-07-21 16:47:17 -05:00
jdegenstein
93e9b22eb5 add a surface modeling method with support for edge/face, edge, and point constraints 2025-07-21 15:12:35 -05:00
Roger Maitland
c6b041db89
Merge pull request #1040 from danieledapo/dev
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
fix PolarLine with angles that make the length negative
2025-07-20 11:00:19 -04:00
Daniele D'Orazio
29cf8959a5 fix PolarLine with angles that make the length negative 2025-07-20 16:38:29 +02:00
gumyr
108c1be3f2 Adding missing ContinuityLevel
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
2025-07-17 08:50:03 -04:00
gumyr
4795bf79ff Added continuity to topo_explore_connected_edges
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-07-16 11:41:55 -04:00
jdegenstein
5b88b93643
Merge pull request #988 from jdegenstein/deglob_write
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
deglob.py -> add ability to write deglobbed change back to target file
2025-07-15 16:44:07 -05:00
jdegenstein
551cd3bdd4
deglob.py -> add requested / discussed changes 2025-07-15 16:33:07 -05:00
jdegenstein
2d2a89bddf
Merge branch 'gumyr:dev' into deglob_write 2025-07-15 14:43:28 -05:00
gumyr
30bbe96cfe Merge branch 'dev' of https://github.com/gumyr/build123d into dev
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
2025-07-03 09:30:06 -04:00
gumyr
228769005a Ensuring Polygon takes an iterable 2025-07-03 09:29:51 -04:00
Roger Maitland
e132f15646
Merge pull request #1023 from jwagenet/docs-step-typos
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
Add missing example STEP and other doc fixes
2025-07-01 19:45:53 -04:00
gumyr
4f2649f0af Reducing thread size to avoid OCCT fuse issue
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-07-01 10:23:57 -04:00
Jonathan Wagenet
7dcee5225b Add tangent objects to Resolve #974 2025-06-30 23:40:30 -04:00
Jonathan Wagenet
82d0af35e7 Resolve #1019 and other spelling 2025-06-30 23:11:39 -04:00
Jonathan Wagenet
742a3dccb3 Add missing step to Fix #1017 2025-06-30 23:01:33 -04:00
gumyr
f3f9fd2357 Improving trace - Issue #1021
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-06-30 11:21:11 -04:00
gumyr
ddb07572be Assigning topo_parent to inner/outer wires methods Issue #393
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
2025-06-15 14:05:20 -04:00
gumyr
344ba7a9ae Reset topo_parent when - Face Issue #1008
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
2025-06-13 10:07:18 -04:00
gumyr
02439d3a36 Fixing fillet/chamfer parent id Issue #393
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-06-12 15:23:12 -04:00
gumyr
fbc170ebdc Fixing _ocp_section
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
2025-06-10 16:34:44 -04:00
Roger Maitland
1102dfab34
Merge pull request #1003 from jwagenet/slot-fixes
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
Bugfixes: Slot objects
2025-06-04 19:30:35 -04:00
Jonathan Wagenet
82f65f7bb0 SlotOverall, SlotCenterToCenter: (re)implement and test circle degenerate case 2025-06-04 16:29:35 -04:00
Jonathan Wagenet
62ebfb9262 Revert "SlotOverall: remove width != height else branch to make circle. width <= height ValueError makes this branch inaccessible."
This reverts commit 1e1c81a093.
2025-06-04 15:50:11 -04:00
gumyr
08a9014923 Added abstract Mixin2d.location_at
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-06-03 19:07:58 -04:00
gumyr
3f2d0a445d Add Shell.location_at(point)
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
2025-06-02 14:55:17 -04:00
gumyr
10a3a2519d Adding Face.location_at(point) 2025-06-02 14:25:58 -04:00
gumyr
b25b330c9b Adding global_location property
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-06-01 19:51:29 -04:00
gumyr
6aaadd12a4 Adding example of making many holes
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
2025-05-31 09:41:50 -04:00
gumyr
b74f8023a3 Fixed more mypy-1.16.0 typing problems
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-05-30 10:46:49 -04:00
gumyr
3f1650d041 Fixed mypy-1.16.0 typing problems 2025-05-30 09:53:12 -04:00
gumyr
6b5a2b6f9c Fix typing problem 2025-05-30 09:25:20 -04:00
gumyr
f93b03fdcc Merge branch 'dev' of https://github.com/gumyr/build123d into dev 2025-05-30 09:12:56 -04:00
gumyr
644200f565 Fixed misplaced label for vertical dimension lines Issue #915 2025-05-30 09:12:48 -04:00
Jonathan Wagenet
811dd569d3 Update SlotCenterPoint ValueError test 2025-05-28 21:57:26 -04:00
Roger Maitland
f59f127b19
Merge pull request #1000 from jwagenet/tangent-fix
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
Bugfix: correct `ArcArcTangentArc` tangency with reversed start_arc in algebra mode
2025-05-28 18:33:38 -04:00
Jonathan Wagenet
7dfe461d08 SlotCenterPoint: change half_line.length validation to resolve #948 2025-05-28 16:19:50 -04:00
Jonathan Wagenet
1e1c81a093 SlotOverall: remove width != height else branch to make circle. width <= height ValueError makes this branch inaccessible. 2025-05-28 16:19:19 -04:00
Jonathan Wagenet
2191d0dc69 SlotArc: remove duplicated rotation 2025-05-28 16:16:23 -04:00
Jonathan Wagenet
87048fabc4 ArcArcTangentArc: correct arc in situation where RadiusArc places center on incorrect side to resolve #983 2025-05-28 14:43:30 -04:00
Roger Maitland
878a737516
Merge pull request #999 from seltzered/wrap_tolerance_patch
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
Ensure tolerance is passed to wrap_edge function...
2025-05-28 13:46:57 -04:00
Vivek Gani
ed0ec6175a Ensure tolerance is passed to wrap_edge function...
In doing some corner-case testing (wrapping a long
ellipse around a cylinder), I noticed an exception
regarding tolerance came up and was referencing the
default tolerance of 0.001 rather than a user-set one.
2025-05-28 11:57:27 -05:00
gumyr
c5d5f443a6 Fixing _wrap_edge start, add point to _wrap_face Issue #998 2025-05-28 10:17:10 -04:00
gumyr
ffc97ef6f0 Deprecating Shape.relocate Issue #768
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-05-27 15:35:34 -04:00
gumyr
560a5369b7 Convert Shape methods to properties: is_null, is_valid, shape_type 2025-05-27 14:38:21 -04:00
gumyr
f445de32c9 Deprecating Location.to_tuple Issue #155
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-05-27 10:43:33 -04:00
gumyr
421dc66784 Deprecating Edge/Wire.to_wire and Face.to_arcs 2025-05-27 09:43:01 -04:00
gumyr
ce3e6ba3a4 Deprecating Vertex.to_tuple - Issue #155
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-05-26 21:02:01 -04:00
gumyr
2e0c193aa8 Deprecating Axis.to_plane, refactored Plane constructor Issue #155 2025-05-26 15:56:01 -04:00
gumyr
83cea3938d Deprecating Color.to_tuple Issue #155 2025-05-26 14:27:43 -04:00
gumyr
86849a329b Fixing bad localization test
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-05-25 19:41:11 -04:00
gumyr
cdaf1caa4c Removing bd_warehouse dependency 2025-05-25 19:21:59 -04:00
gumyr
8dd1336948 Adding draft to operations list 2025-05-25 19:13:44 -04:00
gumyr
e842b321f3 add Vector.to_tuple deprecation warning 2025-05-25 18:46:46 -04:00
gumyr
ff39e37052 Adding draft to cheat sheet 2025-05-25 17:01:25 -04:00
gumyr
3949645e5c Adding draft example to docs 2025-05-25 16:57:23 -04:00
gumyr
55341a4c67 draft - add another missing file, fix typing 2025-05-25 16:25:13 -04:00
gumyr
10ec85bcf5 draft - adding missing init files 2025-05-25 16:16:14 -04:00
gumyr
44c3bac548 Added draft operation Issue #807 2025-05-25 16:11:35 -04:00
gumyr
30d26904ff Adding Technical Drawing Tutorial
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
2025-05-23 13:47:28 -04:00
gumyr
2a049eff0a Merge branch 'dev' of https://github.com/gumyr/build123d into dev
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-05-22 16:07:16 -04:00
gumyr
14ef7d1a0d Improved Edge.param_at_point and Wire.trim - Issue #795 2025-05-22 16:07:08 -04:00
jdegenstein
c38d5610ed
Merge pull request #984 from jgraichen/f/export-step-timestamp
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
Add timestamp argument to STEP export
2025-05-21 13:28:23 -05:00
gumyr
a5800c4ead Updating description of is_frenet parameter 2025-05-21 13:25:08 -04:00
gumyr
0e7ab98430 Adding bicycle tire example
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-05-20 19:10:57 -04:00
Jan Graichen
e6c33137b3 feat: Add timestamp argument to STEP export
Allow passing a timestamp value when export STEP files, to generate STEP
files with a specific timestamp value in the file header.

For example, a null timestamp (`0000-00-00T00:00:00`), or a static
timestamp can be used when generated files should be equal if there are
no visual changes, such as for file versioning.

This commit extends the `#export_step` function, to accept a `timestamp`
keyword argument, that can be a string or a `datetime` object. A
`datetime` is easier to use from Python.
2025-05-20 20:18:15 +02:00
gumyr
cec429c5cc Enabling ShapeList + Shape
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-05-19 19:56:27 -04:00
gumyr
1b69032211 Fixing typing
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-05-19 14:28:37 -04:00
gumyr
aecc71dac2 Adding topo_parent to Triangle vertices 2025-05-19 14:18:42 -04:00
gumyr
ccdfda88e9 Adding method Face.wrap_faces 2025-05-19 12:55:47 -04:00
gumyr
2efd21ff58 Deprecated to_axis Issue #155
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-05-18 10:18:08 -04:00
gumyr
67115111e2 Rework Location constructor, improve pylint
Some checks are pending
benchmarks / benchmarks (macos-13, 3.12) (push) Waiting to run
benchmarks / benchmarks (macos-14, 3.12) (push) Waiting to run
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / benchmarks (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-05-17 13:20:17 -04:00
Roger Maitland
da6b3ae005
Merge pull request #986 from luzpaz/typos-cont
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
Fix various typos
2025-05-14 09:32:38 -04:00
jdegenstein
9b51064671
deglob.py -> add ability to write deglobbed change back to target file 2025-05-13 10:03:52 -05:00
Luz Paz
9ab0405ab0 Fix various typos
Found via `codespell -q 3 -L parm,parms,re-use`
2025-05-11 20:41:24 -04:00
gumyr
297ca9a6b7 Merge branch 'dev' of https://github.com/gumyr/build123d into dev
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
2025-05-07 21:27:12 -04:00
gumyr
2e7df8ccd4 Adding Face/Shell.revolve for Edge/Wire 2025-05-07 21:27:03 -04:00
jdegenstein
57e71f7253
Merge pull request #982 from jdegenstein/csv_benchmark
Some checks failed
benchmarks / benchmarks (macos-13, 3.12) (push) Has been cancelled
benchmarks / benchmarks (macos-14, 3.12) (push) Has been cancelled
benchmarks / benchmarks (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / benchmarks (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
Store benchmark results as CSV; artifact and printed to stdout
2025-05-02 11:14:45 -05:00
gumyr
9259725cf7 Updating to new full_round
Some checks are pending
benchmarks / tests (macos-13, 3.12) (push) Waiting to run
benchmarks / tests (macos-14, 3.12) (push) Waiting to run
benchmarks / tests (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / tests (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-05-01 15:16:11 -04:00
gumyr
46f062c175 Removed meta-data from full_round Issue #979 2025-05-01 14:42:01 -04:00
Roger Maitland
6a4a3b54c4
Merge pull request #960 from jwagenet/text-update
Add OCCT text alignment to `Text`/`make_text`
2025-05-01 14:29:56 -04:00
jdegenstein
7c52e506a3
benchmark.yml -> tag artifact with os matrix name 2025-05-01 11:59:44 -05:00
jdegenstein
c11ed030b3
benchmark.yml -> also upload results.csv to an artifact 2025-05-01 11:55:54 -05:00
jdegenstein
3b59821c54
benchmark.yml -> cat instead of echo 2025-05-01 11:47:46 -05:00
jdegenstein
8f15604ec0
benchmark.yml -> trying --benchmark-autosave instead 2025-05-01 11:45:27 -05:00
jdegenstein
05df0a1bbd
benchmark.yml -> generate JSON results, generate CSV report, echo to console 2025-05-01 11:43:21 -05:00
jdegenstein
cd122b82e3
benchmark.yml -> print csv results to stdout for easier comparison among runs 2025-05-01 10:08:48 -05:00
gumyr
86806dfc25 Fixing typing errors
Some checks are pending
benchmarks / tests (macos-13, 3.12) (push) Waiting to run
benchmarks / tests (macos-14, 3.12) (push) Waiting to run
benchmarks / tests (ubuntu-latest, 3.12) (push) Waiting to run
benchmarks / tests (windows-latest, 3.12) (push) Waiting to run
Upload coverage reports to Codecov / run (push) Waiting to run
pylint / lint (3.10) (push) Waiting to run
Run type checker / typecheck (3.10) (push) Waiting to run
Run type checker / typecheck (3.13) (push) Waiting to run
Wheel building and publishing / Build wheel on ubuntu-latest (push) Waiting to run
Wheel building and publishing / upload_pypi (push) Blocked by required conditions
tests / tests (macos-13, 3.10) (push) Waiting to run
tests / tests (macos-13, 3.13) (push) Waiting to run
tests / tests (macos-14, 3.10) (push) Waiting to run
tests / tests (macos-14, 3.13) (push) Waiting to run
tests / tests (ubuntu-latest, 3.10) (push) Waiting to run
tests / tests (ubuntu-latest, 3.13) (push) Waiting to run
tests / tests (windows-latest, 3.10) (push) Waiting to run
tests / tests (windows-latest, 3.13) (push) Waiting to run
2025-05-01 10:34:18 -04:00
gumyr
6a1b3a2f9b Fixing typing errors 2025-05-01 10:30:57 -04:00
gumyr
a7e80494ff Fixing typing errors 2025-05-01 10:28:03 -04:00
gumyr
8a603f17ee Fixing typing errors 2025-05-01 10:17:00 -04:00
gumyr
60cd260e74 Adding wrap feature 2025-05-01 10:03:33 -04:00
jdegenstein
5b0ee3119f
Merge pull request #978 from ndevenish/scipy
Some checks failed
benchmarks / tests (macos-13, 3.12) (push) Has been cancelled
benchmarks / tests (macos-14, 3.12) (push) Has been cancelled
benchmarks / tests (ubuntu-latest, 3.12) (push) Has been cancelled
benchmarks / tests (windows-latest, 3.12) (push) Has been cancelled
Upload coverage reports to Codecov / run (push) Has been cancelled
pylint / lint (3.10) (push) Has been cancelled
Run type checker / typecheck (3.10) (push) Has been cancelled
Run type checker / typecheck (3.13) (push) Has been cancelled
Wheel building and publishing / Build wheel on ubuntu-latest (push) Has been cancelled
tests / tests (macos-13, 3.10) (push) Has been cancelled
tests / tests (macos-13, 3.13) (push) Has been cancelled
tests / tests (macos-14, 3.10) (push) Has been cancelled
tests / tests (macos-14, 3.13) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.10) (push) Has been cancelled
tests / tests (ubuntu-latest, 3.13) (push) Has been cancelled
tests / tests (windows-latest, 3.10) (push) Has been cancelled
tests / tests (windows-latest, 3.13) (push) Has been cancelled
Wheel building and publishing / upload_pypi (push) Has been cancelled
Add explicit scipy dependency
2025-04-29 14:46:05 -05:00
jdegenstein
6d31874bcc
Merge pull request #981 from jdegenstein/ipydep
pyproject.toml -> update ipython version pin to include v9.x.x
2025-04-29 14:39:06 -05:00
jdegenstein
db2ec675fc
Merge pull request #976 from emmanuel-ferdman/dev
Resolve deprecation warnings of regex library
2025-04-29 14:27:14 -05:00
Emmanuel Ferdman
2374c26898
Resolve deprecation warnings of regex library
Signed-off-by: Emmanuel Ferdman <emmanuelferdman@gmail.com>
2025-04-29 12:19:26 -07:00
jdegenstein
3ef537d640
pyproject.toml -> update ipython version pin to include v9.x.x 2025-04-29 13:55:24 -05:00
Nicholas Devenish
8f344871a6 Add explicit scipy dependency
This is used in several places e.g. topology/one_d.py but
was previously being pulled in implicitly via svgpathtools.
2025-04-27 16:22:38 +01:00
Emmanuel Ferdman
846878f879
Resolve deprecation warnings of regex library
Signed-off-by: Emmanuel Ferdman <emmanuelferdman@gmail.com>
2025-04-26 00:21:20 -07:00
gumyr
890f1a540b Fixed normal_at bug when passed a Vector 2025-04-25 11:57:01 -04:00
gumyr
ed5e0307e3 Fixed full_round Issue #972 2025-04-24 11:54:15 -04:00
gumyr
3920086bd9 Fixing typing problems 2025-04-23 21:43:34 -04:00
gumyr
6590df1e65 Fixed Issue #843 added is_forward to Edge parameter methods 2025-04-23 20:17:02 -04:00
gumyr
739368c417 Updating location_at use normal_at(u,v) 2025-04-22 15:40:25 -04:00
gumyr
0854cac191 Fixed normal_at(u,v) Issue #973 2025-04-22 14:10:29 -04:00
gumyr
d4cb27414e Added Location.mirror 2025-04-18 20:34:07 -04:00
gumyr
2a730b5fef Added Location.center to enable sort_by, etc. 2025-04-18 14:04:21 -04:00
Roger Maitland
6cc1f38087
Merge pull request #964 from jwagenet/revolve-fix
Fix `revolve` direction and size with negative `revolution_arc`
2025-04-18 10:00:59 -04:00
Jonathan Wagenet
1c129b38ab revolve: Fix modulo of revolution_arc to keep expected sign for angle 2025-04-17 13:44:11 -04:00
Roger Maitland
b03fa9a7fb
Merge pull request #947 from jwagenet/tangent-objects
Add Tangent objects for Point and Arc
2025-04-16 09:36:12 -04:00
Jonathan Wagenet
294095b978 Text: extend docstring 2025-04-12 22:25:38 -04:00
gumyr
2431a05446 Adding deglob tool to help remove glob imports 2025-04-12 11:39:56 -04:00
Roger Maitland
78c0742e7f
Merge pull request #959 from jwagenet/selectors-operators
Add new docs section "Selectors and Operators"
2025-04-12 09:59:03 -04:00
Jonathan Wagenet
c4dadd690a Add TextAlign 2025-04-11 12:15:12 -04:00
Jonathan Wagenet
d2d979cde0 make_text: add enum and ValueError tests 2025-04-11 12:11:47 -04:00
Jonathan Wagenet
bc13d05c91 Revert "make_text: Fuse glyphs with multiple overlapping faces"
This reverts commit 194fc374a9.
2025-04-11 00:37:45 -04:00
Jonathan Wagenet
194fc374a9 make_text: Fuse glyphs with multiple overlapping faces 2025-04-10 22:59:28 -04:00
Jonathan Wagenet
50b1d5b5d5 Rename to Topology Selection and Exploration, add section on new_edges, elaborate on GroupBy 2025-04-10 22:12:05 -04:00
Jonathan Wagenet
f245ac5a48 Text and make_text: add TextAlign enum to control OCCT text alignment with Graphic3d enums to resolve #458 and #459.
- Create TextAlign enum
- Add text_align tuple arg to Text and make_text which resolves to (horiz_align, vert_align) and maps to Graphic3d_HTA_* and Graphic3d_HTA_* enums for Font_FontMgr.Perform()
- Use (CENTER, CENTER) as default
- Set align default to None to align by text alignment by default. align still aligns the bounding box
- Minimal test coverage for addition of text_align
2025-04-09 12:52:55 -04:00
Jonathan Wagenet
9b78e0767f FontStyle and and Text: add BOLDITALIC font aspect to resolve #778 2025-04-08 22:57:09 -04:00
Jonathan Wagenet
ee11c3517d Add new docs section "Selectors and Operators"
- Expand ideas and concepts from key concepts section
- Provide minimal usage examples in front matter
- Add structure for examples of low to medium complexity for different criteria types
2025-04-06 20:10:00 -04:00
gumyr
bde03f40e7 Removing ocp image to enable tests 2025-04-05 11:45:12 -04:00
gumyr
e658a786d2 Removing ocp image to enable tests 2025-04-05 11:36:36 -04:00
gumyr
91034a6745 Adding toy truck code 2025-04-05 11:15:45 -04:00
gumyr
bf6206377d Added Toy Truck example 2025-04-05 11:05:48 -04:00
Roger Maitland
70772be02b
Merge pull request #933 from jwagenet/doc-issues
Quick fix documentation issues
2025-03-27 10:17:02 -04:00
Jonathan Wagenet
5c2be0fa70 Fix Buffer Stand drawing image link 2025-03-26 14:43:03 -04:00
Jonathan Wagenet
08527188c9 Fix bullets in docstrings for is_skew and axes_of_symmetry to fixs sphinx rendering and build errors 2025-03-26 09:52:39 -04:00
Jonathan Wagenet
56e9858fef Add operations_generic.project to resolve #833 2025-03-26 09:24:13 -04:00
Jonathan Wagenet
7bd037aeed Add Intrinsic and Extrinsic enums to cheat sheet (and Keep ALL) 2025-03-25 23:38:42 -04:00
Jonathan Wagenet
0d5aa13afa Add sympy to project, run mypy/pylint/black on changes 2025-03-23 12:41:48 -04:00
Jonathan Wagenet
66e8315973 Add tangent objects to 1D Objects 2025-03-22 20:07:39 -04:00
Jonathan Wagenet
a4d1da2c1d Add error messages for positional cases to tangent objects 2025-03-22 19:12:24 -04:00
Jonathan Wagenet
1a062724c7 Create doc svgs. Replace DoubleTangentArc svg to use spline instead of arc. 2025-03-22 12:06:06 -04:00
Jonathan Wagenet
7e33864e8e Add tangent object tests.
These are pretty extensive, but not exhaustive. Testing once in algebraic mode with a tangency/coincident checks, testing on at a few different start points, comparing lengths to first test and L/R INSIDE/OUTSIDE output, finally do error checks locally.
2025-03-22 10:59:17 -04:00
Jonathan Wagenet
cda424175a Add Tangent Objects to __init__, minor updates Objects 2025-03-21 16:43:10 -04:00
gumyr
7ed50f9429 Fixing edge() typing check 2025-03-21 15:55:42 -04:00
gumyr
c4080e1231 Fixed DoubleTangentArc to create Edge 2025-03-21 15:46:25 -04:00
gumyr
0624bff82e Replacing location_at(planar) with (x_dir) 2025-03-21 15:29:27 -04:00
gumyr
8c171837ee Fixed Issue #944 2025-03-21 11:04:13 -04:00
Jonathan Wagenet
4a21536f01 Commit to sympy for ArcArcTangentArc, minimizer for PointArcTangentArc based on performance 2025-03-18 17:57:08 -04:00
Jonathan Wagenet
400b1d7fe4 Add tangent objects. (see https://github.com/jwagenet/bd_mixins for history) 2025-03-18 17:49:37 -04:00
gumyr
32a1ea1d39 Removed legacy code 2025-03-15 14:09:58 -04:00
jdegenstein
b232be7f8f
Merge pull request #934 from jdegenstein/uv_actions
Use `uv` for setup of github actions workflows
2025-03-13 16:50:56 -05:00
jdegenstein
518d773be5
action.yml -> test explicit cache disable 2025-03-12 10:29:58 -05:00
jdegenstein
e5fe5db6b4
Update action.yml 2025-03-11 14:09:24 -05:00
jdegenstein
23d723783d
Update action.yml 2025-03-11 14:08:47 -05:00
Jonathan Wagenet
c14f922647 Add links to available example imports to resolve #809
Unavailable imports:
- import_export.rst: example.3mf (produced earlier)
- build_line.rst: club.svg
2025-03-10 15:45:40 -04:00
Jonathan Wagenet
cbbf79ae92 Fix alphabetical order and anchor links of circuit/canadian cards. 2025-03-10 15:18:34 -04:00
Jonathan Wagenet
96d9875a7b Plane.rotated(): chaining rotated doesn't seem to affect final rotation. Rotation order should be set with ordering instead. 2025-03-10 13:40:35 -04:00
Jonathan Wagenet
2168fd0540 Plane.rotated(): remove incorrect note about z rotation to resolve #900 2025-03-10 13:33:27 -04:00
gumyr
1140ebe9c3 Enable show_topology to display an Shape with a CompSolid 2025-03-10 13:14:20 -04:00
Jonathan Wagenet
09b80243f9 Add missing enum to cheat sheet: Select.NEW
Keep.ALL is missing, but seems unused
2025-03-10 12:20:43 -04:00
Jonathan Wagenet
c618967e15 Remove outdated filter_by_normal reference 2025-03-10 00:39:09 -04:00
Jonathan Wagenet
f87cee3134 Added plane_symbol() and better var names and typing to resolve #899 2025-03-10 00:21:09 -04:00
Jonathan Wagenet
1b63aa3469 Helix: clarify how cone_angle changes the radius to resolve #761 2025-03-09 23:57:33 -04:00
gumyr
b1f0eedfcb Add very minimal support for CompSolid 2025-03-08 09:24:47 -05:00
Roger Maitland
201e95cd53
Merge pull request #930 from jwagenet/docstring-updates
Revise docstrings for build objects
2025-03-08 08:23:30 -05:00
Jonathan Wagenet
7b55eb100a
Merge branch 'dev' into docstring-updates 2025-03-07 18:19:37 -08:00
Jonathan Wagenet
7595040416 Change add/subtract to create 2025-03-07 21:15:19 -05:00
Roger Maitland
d064c0d97f
Merge pull request #931 from jwagenet/polarline
PolarLine() make localized direction a unit vector to only scale by length
2025-03-07 09:10:38 -05:00
Jonathan Wagenet
c51410b1c8 Polarline: update docstring 2025-03-06 10:01:22 -05:00
Jonathan Wagenet
7670466398 PolarLine update: add direction to docstring, make direction unit vector, update tests for angle/direction parity
Previously, when using direction, the result was a line made by direction and scaled by length. This doesn't seem like intuitive/expected behavior based on how length + angle works. Behavior is trivially accomplished by Line((0, 0), float * Vector)
2025-03-05 20:45:34 -05:00
Jonathan Wagenet
fcbd027137 Update object_*.py docstrings for more consistency and clarify how parameters work
General improvements:
- follow a similar opening structure
- add specificity to description and args
- remove plurality (sketch, part)
- remove hanging end stops from lists
- try to specify viable enums if mentioned and CAPITALIZE
2025-03-05 18:35:23 -05:00
jdegenstein
07ff964b2b
Merge pull request #912 from fischman/ttt-unbreak-and-test
TooTallToby tutorials: unbreak and test.
2025-03-05 10:09:22 -06:00
jdegenstein
4027664a8c
Update test.yml 2025-03-05 09:56:39 -06:00
Ami Fischman
789ff73744 Exclude benchmarks from test github workflow. 2025-03-04 16:14:09 -08:00
Ami Fischman
5a79f264f3 test_benchmarks: drop the copies of the TTT examples in test code and instead use the versions from the docs/assets/ttt directory. 2025-03-04 16:14:09 -08:00
Ami Fischman
0085306461 TooTallToby tutorials: unbreak and test.
- Unbreak the three broken tutorials (fixes #848)
  - This involved a rewrite of PPP-01-10 because I already had my own
    solution to that one and I couldn't easily tell what was going
    wrong with the previous solution.
- Add assertions to all the tutorials so that non-raising means success
- Add the TTT examples to `test_examples.py` added recently for #909
- Also added sympy to development dependencies since one of the TTT
  examples uses it.
2025-03-04 16:14:09 -08:00
gumyr
10a466f645 Improving geometry eq/hash to enable sets 2025-03-04 10:01:49 -05:00
gumyr
25f46261a4 Merge branch 'dev' of https://github.com/gumyr/build123d into dev 2025-03-04 09:51:41 -05:00
gumyr
8ba128c273 Improved to remove face duplicates 2025-03-04 09:51:22 -05:00
Roger Maitland
e9c6b93cb7
Merge pull request #914 from fischman/test-speedup
Avoid deepcopy'ing Shape.topo_parent.
2025-03-03 18:56:10 -05:00
Roger Maitland
f79fba45bc
Merge pull request #923 from mingmingrr/dev
Update type signature for component getters
2025-03-03 18:48:32 -05:00
mingmingrr
dce0c5dc1b Update type signature for component getters 2025-03-01 14:56:14 -05:00
Roger Maitland
17f16b6b97
Merge pull request #917 from jdegenstein/lib3mf_official
feat: switch to lib3mf official pypi release from py_lib3mf
2025-02-27 18:12:58 -05:00
jdegenstein
acb22b5dec
mypy.ini -> change py_lib3mf to lib3mf 2025-02-27 16:08:10 -06:00
jdegenstein
01cf1082b6
Update mesher.py -> use lib3mf instead of py_lib3mf 2025-02-27 15:59:43 -06:00
jdegenstein
485bfa1f87
pyproject.toml -> switch to the official lib3mf release on pypi 2025-02-27 15:54:13 -06:00
Ami Fischman
4d8dfe16a8 Avoid deepcopy'ing Shape.topo_parent.
Speeds up benchy example from 27s to 5.5s.
2025-02-24 15:58:25 -08:00
gumyr
1d89804417 Added GeomEncoder for JSON deprecating LocationEncoder 2025-02-24 15:36:58 -05:00
Roger Maitland
1c9cd019a2
Merge pull request #911 from fischman/parallel-test-execution
Run tests in parallel by default, and update CONTRIBUTING.md
2025-02-22 15:20:49 -05:00
Roger Maitland
8aeee30968
Merge pull request #910 from fischman/test-examples
Add a new TestCase that asserts that examples exit successfully.
2025-02-22 15:14:51 -05:00
Ami Fischman
bda0a6a719 Run tests in parallel by default, and update CONTRIBUTING.md to recommend this flow.
test_mesher.py was reusing the same filename across tests which meant
that when running in parallel tests would stomp on each
other. Robustified by having each test use a distinct file name.
2025-02-22 11:37:58 -08:00
Ami Fischman
80097a9227 Add a new TestCase that asserts that examples exit successfully.
Examples changes that were necessary:
- loft.py: failed on macos (only) because of (seemingly) over-precise
  floating-point accuracy assertion. Loosened the tolerance, and
  expressed it as a multiple of the expected value.
  > AssertionError: delta=0.002982314711971412 is greater than tolerance=0.001; got=1306.3375467197516, want=1306.3405290344635
- packed_boxes.py: only emit output files when GEN_DOCS is
  True (mimicking lego.py).
2025-02-22 10:11:06 -08:00
gumyr
aeb6b32b65 Fixing examples, PR #910 2025-02-22 10:55:46 -05:00
Roger Maitland
bc2c06ba52
Merge pull request #908 from snoyer/import_svg-align
add `align` parameter to `import_svg`
2025-02-22 09:45:17 -05:00
snoyer
8e4aa3370d add align parameter to import_svg 2025-02-21 20:28:06 +04:00
gumyr
40cf1437ed Updated edges() to use WireExplorer when appropriate Issue #864 2025-02-20 11:14:26 -05:00
gumyr
2d84e6ebdf Limiting ocpsvg version 2025-02-19 18:20:46 -05:00
gumyr
0208621fd7 Adding Face.radii, Face.is_circular_convex, Face.is_circular_concave, rename Face.rotational_axis to Face.axis_of_rotation 2025-02-19 11:20:06 -05:00
Roger Maitland
ffc3eba177
Merge pull request #905 from snoyer/axis-props
make `Axis.position` and `Axis.direction` properties
2025-02-17 20:03:17 -05:00
gumyr
39b4fc20dc Ported PR #875 to refactored topology 2025-02-17 19:53:05 -05:00
snoyer
e0e5d0d368 make Axis.position and Axis.direction properties 2025-02-15 19:32:43 +04:00
gumyr
838933be37 Fixing citation date 2025-02-14 13:45:38 -05:00
gumyr
bcda478867 Adding a citation 2025-02-14 13:43:55 -05:00
gumyr
36e7958574 Covering Face properties corner case 2025-02-12 20:55:26 -05:00
gumyr
fd44037ef6 Adding Face radius and rotational_axis properties 2025-02-12 19:28:25 -05:00
gumyr
f6f916725e Fixed handling of wrapped object 2025-02-11 11:33:11 -05:00
gumyr
f22f54af5f Covering Face.axes_of_symmetry corner cases 2025-02-08 14:46:13 -05:00
jdegenstein
b64ab34407
Merge pull request #897 from jdegenstein/from_bb
fix: mypy type checking in Solid.from_bounding_box
2025-02-06 22:00:29 -06:00
jdegenstein
9c47669118
Merge pull request #896 from luzpaz/typos-source
Fix source typos
2025-02-06 21:57:14 -06:00
jdegenstein
8b53e1ab3c fix: mypy type checking in Solid.from_bounding_box 2025-02-06 21:40:25 -06:00
jdegenstein
b64807fccc add oriented bounding box support to Solid.from_bounding_box and tests 2025-02-06 21:16:14 -06:00
luzpaz
ce7d7d94c6 Fix source typos
Found via `codespell -q 3 -w -L parm,parms,re-use,substract`
2025-02-07 02:20:22 +00:00
gumyr
e7aee388c6 Reordering properties in module 2025-02-06 11:09:22 -05:00
gumyr
2247ea9303 Renaming Face.total_area to area_without_holes & Face.remove_holes to without_holes 2025-02-06 11:01:38 -05:00
gumyr
6e0af24b21 Fixing OOB test on Macs 2025-02-06 10:48:28 -05:00
gumyr
ad11a97ec3 Merge branch 'dev' of https://github.com/gumyr/build123d into dev 2025-02-06 10:29:41 -05:00
gumyr
4e42ccb196 Adding OrientedBoundBox.corners and Face.axes_of_symmetry 2025-02-06 10:29:31 -05:00
jdegenstein
09311cb20f
Merge pull request #892 from luzpaz/typos
Fix various typos
2025-02-06 09:27:27 -06:00
gumyr
72bbc433f0 Relaxing OOB orientation test as inconsistent across platforms 2025-02-04 18:39:44 -05:00
gumyr
05ed5fd8e1 Added OrientedBoundBox to geometry and Shape.oriented_bounding_box 2025-02-04 13:51:56 -05:00
gumyr
c728124b3b Adding Face.remove_holes and Face.total_area property 2025-02-04 09:58:40 -05:00
Luz Paz
b14c187ca2 Fix various typos
Found with `codespell -q 3 -L parm,parms,re-use`
2025-02-02 09:08:01 -05:00
gumyr
0e3dbbe15b Making Axis friendly to sub-classing 2025-02-01 09:35:03 -05:00
gumyr
b8dcad3bcb Added Axis.is_skew and tested for is_skew in Axis.intersect 2025-01-31 16:06:09 -05:00
Roger Maitland
79a962561d
Merge pull request #882 from hoijui/patch-1
README: Makes reading it a tiny bit smoother
2025-01-29 10:09:36 -05:00
Roger Maitland
6f8dbae941
Merge pull request #887 from bernhard-42/encaps_vtk
Encaps vtk
2025-01-29 10:05:07 -05:00
Bernhard
ee2a3724e9 remove the install script for novtk 2025-01-29 09:41:15 +01:00
Bernhard
98e989debc encapsulate VTK in a separate file 2025-01-29 09:39:37 +01:00
gumyr
8fe3ec18af Added Shape static_moments, matrix_of_inertia, principal_properties and radius_of_gyration properties method 2025-01-28 21:52:04 -05:00
Roger Maitland
9268f31a8c
Merge pull request #879 from snoyer/filter_by-property
allow to filter and group by property
2025-01-28 19:02:09 -05:00
snoyer
bdd11a9250 add property support to sort_by 2025-01-28 07:00:40 +04:00
Robin Vobruba
8ddfee219d README: Fixes two minor language issues 2025-01-27 08:30:34 +01:00
Robin Vobruba
6d5aaa4bea README: Shorten a bit
... and make compatible with the original Markdown standard,
where more empty lines are required
2025-01-27 08:29:29 +01:00
Robin Vobruba
677e47fedc README: Adds links 2025-01-27 08:26:46 +01:00
snoyer
89a09f38de appease mypy 2025-01-25 12:52:54 +04:00
snoyer
c47c81a893 allow to filter and group by property 2025-01-25 12:45:47 +04:00
gumyr
45dc04c459 Merge branch 'dev' of https://github.com/gumyr/build123d into dev 2025-01-24 19:50:26 -05:00
gumyr
9f5b4eaa67 Added section on moving shapes 2025-01-24 19:50:16 -05:00
Roger Maitland
13535be50c
Merge pull request #829 from victorpoughon/fix_async_display
jupyter_tools: fix out of order display of multiple shapes in static html
2025-01-24 15:24:37 -05:00
gumyr
0da16cf7e1 Improving OpenSCAD example 2025-01-24 15:19:15 -05:00
Victor Poughon
edf1dbdaa1 jupyter_tools: use uuid for unique shape id 2025-01-24 19:07:04 +01:00
Victor Poughon
f8d86e1722 test: update test_jupyter.py 2025-01-24 19:06:52 +01:00
Victor Poughon
5204b763ea jupyter_tools: fix async render issue using a unique id div 2025-01-24 19:03:21 +01:00
Victor Poughon
d2d3580fc8 jupyter_tools: move template to separate file 2025-01-24 19:03:21 +01:00
gumyr
7972259c44 Merge branch 'dev' of https://github.com/gumyr/build123d into dev 2025-01-24 11:09:06 -05:00
gumyr
4aee76f6c0 Added Edge.is_interior property Issue #816 2025-01-24 11:08:57 -05:00
Roger Maitland
8c92653ebc
Merge pull request #878 from jdegenstein/mypy_ocp_stubs
Move `cadquery-ocp-stubs` from [development] to new [stubs] and exclude from [all] (optional dependencies)
2025-01-23 11:15:31 -05:00
jdegenstein
1740f388a5
mypy.ini -> remove stubs exclusion attempt 2025-01-23 10:09:56 -06:00
jdegenstein
22611e1554
pyproject.toml -> move cadquery-ocp-stubs from [development] to [stubs] and exclude from [all] (optional dependencies) 2025-01-23 10:09:14 -06:00
jdegenstein
6c7e6988be
Merge branch 'gumyr:dev' into mypy_ocp_stubs 2025-01-23 10:04:45 -06:00
gumyr
0625c77e4e Updating sort_by docstring 2025-01-23 10:40:26 -05:00
gumyr
4f392c534a Exclude cadquery-ocp-stubs 2025-01-23 10:00:40 -05:00
gumyr
f077d72819 Added sort_by lambda Issue#485 2025-01-23 09:53:15 -05:00
jdegenstein
bd1ad47ac5
Update mypy.ini 2025-01-23 07:39:10 -06:00
jdegenstein
97eff88585
mypy.ini -> exclude OCP-stubs 2025-01-22 22:32:38 -06:00
jdegenstein
4274f78f6a
Merge pull request #877 from jdegenstein/ocp-stubs
pyproject.toml -> add optional `cadquery-ocp-stubs` to [development] optional extras
2025-01-22 20:09:39 -06:00
gumyr
94fdd97a55 Updating doc: separating key concepts, adding OpenSCAD section 2025-01-22 20:04:42 -05:00
gumyr
50663a21c4 Removed redundant test_direct_api.py 2025-01-22 15:28:40 -05:00
gumyr
e126c502b1 Adding separate direct api tests 2025-01-22 15:23:56 -05:00
gumyr
589cbcbd68 Removed unnecessary custom test class and methods. Script to split test_direct_api.py 2025-01-22 15:17:52 -05:00
gumyr
bb6a542244 Revert "Split test_direct_api.py in many smaller tests"
This reverts commit 23e035a1ce.
2025-01-21 21:42:05 -05:00
gumyr
23e035a1ce Split test_direct_api.py in many smaller tests 2025-01-21 21:37:52 -05:00
jdegenstein
5e6f3b3337
Merge pull request #876 from jdegenstein/tagged_step
exporters3d.py -> add "build123d" to exported step files, change step "Name" to build123d label
2025-01-21 14:01:33 -06:00
jdegenstein
9ce9306a67
exporters3d.py -> set step file name to build123d label attribute 2025-01-21 13:34:32 -06:00
gumyr
cc9f6c613d Adding the MC length constant 2025-01-20 13:01:54 -05:00
jdegenstein
254eec1df1
pyproject.toml -> add optional cadquery-ocp-stubs to [development] optional extras
Please review version pins too
2025-01-19 20:28:01 -06:00
jdegenstein
7aaea78094
exporters3d.py -> reorganize import, remove semicolon add comment about header properties 2025-01-19 15:11:31 -06:00
jdegenstein
65ead1cce6
exporters3d.py -> add build123d to exported steps 2025-01-18 15:56:29 -06:00
gumyr
eebd82d06a Added Keep.ALL to split 2025-01-17 10:09:23 -05:00
gumyr
3b34c50f4e Merge branch 'dev' of https://github.com/gumyr/build123d into dev 2025-01-16 14:18:18 -05:00
gumyr
19d925f774 Improved split with a non-planar tool 2025-01-16 14:18:10 -05:00
jdegenstein
7262ae8e87
Merge pull request #872 from jdegenstein/rtd_fixes
readthedocs fixes to topology inheritance diagram, add mixin classes …
2025-01-15 17:20:09 -06:00
jdegenstein
d78ca933fc readthedocs fixes to topology inheritance diagram, add mixin classes to topology/__init__.py, delete docs/requirements.txt, streamline workflows 2025-01-15 12:46:19 -06:00
jdegenstein
338e0bc0bf
Merge pull request #869 from jdegenstein/opt_deps
pyproject.toml -> add optional dependencies [ocp_vscode] [development] [docs] [all]
2025-01-15 10:38:22 -06:00
gumyr
cd69e6ef02 Improve Edge.intersect & coverage 2025-01-15 10:06:39 -05:00
Roger Maitland
f9afe1f963
Merge pull request #838 from snoyer/simplify-import_svg-api
simplify `import_svg` API
2025-01-14 18:17:49 -05:00
jdegenstein
1b5688a04c
Merge branch 'gumyr:dev' into opt_deps 2025-01-14 13:11:01 -06:00
jdegenstein
2559262fff add missing [docs] dependencies, pin sphinx to a new version, point readthedocs to a .[docs] installation 2025-01-14 13:02:09 -06:00
gumyr
0d533d3f10 Merge branch 'dev' of https://github.com/gumyr/build123d into dev 2025-01-14 13:38:37 -05:00
gumyr
7b16193559 Fixing Issue #796 + pylint improvements 2025-01-14 13:38:27 -05:00
jdegenstein
d567380bd9 Merge branch 'opt_deps' of https://github.com/jdegenstein/build123d into opt_deps 2025-01-14 12:15:30 -06:00
jdegenstein
d1d796fbe2
Merge pull request #870 from jdegenstein/move_mesh_bench
Move new mesher benchmark to `test_benchmarks.py`
2025-01-14 12:05:57 -06:00
jdegenstein
09e99b19d3 remove unused imports time, importlib 2025-01-14 11:38:01 -06:00
jdegenstein
dd8416a141 move mesher benchmark to test_benchmarks.py 2025-01-14 11:32:28 -06:00
gumyr
7811afc544 Re-enabling tests after topology split 2025-01-14 11:30:37 -05:00
snoyer
393d64ea3f add typing for common param values 2025-01-14 20:08:15 +04:00
gumyr
4ee07ada6f Fixed typo 2025-01-14 10:18:47 -05:00
gumyr
a4c8d84718 Updating badges 2025-01-14 10:14:35 -05:00
gumyr
041e2a5d73 Updating badges 2025-01-14 10:12:48 -05:00
gumyr
1c2b3f1490 Updating badges 2025-01-14 10:11:32 -05:00
gumyr
b44c678bb0 Updating badges 2025-01-14 10:10:59 -05:00
gumyr
f876f616f8 Updating badges 2025-01-14 10:07:44 -05:00
gumyr
769f180dac Updating badges 2025-01-14 10:05:11 -05:00
Roger Maitland
3f93e93141
Merge pull request #868 from drbh/improve-mesh-speed
feat: create mesh in fewer iterations
2025-01-14 09:44:05 -05:00
jdegenstein
0712293551
pyproject.toml -> optional dependencies 2025-01-13 22:31:47 -06:00
gumyr
86b04b3994 Added mypy badge to README 2025-01-13 20:48:49 -05:00
gumyr
d12f80cc65 Fixed convert color making typing explicit 2025-01-13 20:39:50 -05:00
drbh
9e6bc2d0ae feat: create mesh in fewer iterations 2025-01-13 20:22:36 -05:00
gumyr
2d63dc7e75 Updated _wire_edges 2025-01-13 20:21:29 -05:00
gumyr
60a4d24cd4 Fixed more typing problems 2025-01-13 20:18:18 -05:00
gumyr
e923f733e0 Typing problems solved(?) 2025-01-13 19:44:30 -05:00
gumyr
99639ced73 Merge branch 'dev' of https://github.com/gumyr/build123d into dev 2025-01-13 14:48:22 -05:00
gumyr
953019a4a6 Fixed typing problems 2025-01-13 14:48:01 -05:00
jdegenstein
cc9409f068
Merge pull request #865 from gumyr/ocp781
Upgrade build123d to OCP>=7.8
2025-01-13 12:26:38 -06:00
jdegenstein
4394187b6e
mypy.yml -> mypy with py310 and py313 (dropping py312) 2025-01-13 11:56:39 -06:00
jdegenstein
33957e30db
test.yml -> test on py310 and py313 (dropping py312) 2025-01-13 11:55:45 -06:00
jdegenstein
51cd219860
pyproject.toml -> support python 3.13 2025-01-13 11:54:49 -06:00
gumyr
c0c3189b81 Fixed typing problems 2025-01-13 11:50:47 -05:00
jdegenstein
b665cb5889
Merge branch 'dev' into ocp781 2025-01-13 10:46:06 -06:00
jdegenstein
453ae63058
pyproject.toml -> update cadquery-ocp, ocpsvg pins and formatting consistency 2025-01-13 10:42:49 -06:00
Roger Maitland
629572dbc4
Merge pull request #862 from slobberingant/dev
Test and fix for exporting small arcs to SVG.
2025-01-13 09:58:38 -05:00
Anthony
5f7dfc2bb9 Test and fix for exporting small arcs to SVG. 2025-01-13 12:06:33 +11:00
gumyr
18f591d0a2 Fixed typing problems in exporters.py 2025-01-12 19:24:23 -05:00
gumyr
c207ee00b3 Fixed typing problems in drafting.py 2025-01-12 14:46:09 -05:00
jdegenstein
7feb43c694
pyproject.toml -> update cadquery-ocp & ocpsvg versions to avoid incompatibility with upcoming OCP >= 7.8.0 2025-01-12 13:21:18 -06:00
gumyr
88f6b692a3 Fixed operations_sketch.py typing problems 2025-01-12 14:08:14 -05:00
gumyr
475bf42a6d Fixed objects_part.py typing problems 2025-01-12 13:43:53 -05:00
gumyr
18957ef158 Fixing operations_generic.py typing problems 2025-01-12 13:18:30 -05:00
gumyr
8c314d4a8e Fixed objects_sketch.py typing problems 2025-01-11 19:04:17 -05:00
jdegenstein
42261cad65
@ocp781 test_direct_api.py-> test hash(empty) returns zero (modified) 2025-01-11 14:31:50 -06:00
jdegenstein
65f37ab441
Merge pull request #858 from jdegenstein/ocp781_minimal_changes
Minimal changes to support OCP >= 7.8 in gumy/build123d@ocp781
2025-01-11 14:04:45 -06:00
jdegenstein
b93538c311
shape_core.py -> move to OCP>7.8 hash method 2025-01-11 13:42:57 -06:00
jdegenstein
ae80b27c9b
pyproject.toml -> change cadquery-ocp dep to >= 7.8.1 2025-01-11 13:37:09 -06:00
gumyr
61ddeed029 Fixed objects_curve.py typing problems 2025-01-11 13:57:22 -05:00
gumyr
152aedf978 Fixed typing in operations_part.py 2025-01-11 12:04:49 -05:00
gumyr
8a94a9f827 Changed VectorLike and RotationLike to TypeAlias 2025-01-11 10:40:45 -05:00
gumyr
9f0a67ac11 Fixed typing errors 2025-01-10 19:39:51 -05:00
gumyr
c909652bc8 Eliminated joints related typing issues 2025-01-10 13:44:51 -05:00
Roger Maitland
f3586995a4
Merge pull request #853 from jdegenstein/mypy_sketchobjs
objects_sketch.py -> mypy typing improvements
2025-01-09 13:06:31 -05:00
gumyr
2d54b80588 Merge branch 'dev' of https://github.com/gumyr/build123d into dev 2025-01-09 12:51:52 -05:00
gumyr
62527cc0cd Fixed geometry.py typing issues 2025-01-09 12:51:44 -05:00
snoyer
0993361083
Merge branch 'dev' into simplify-import_svg-api 2025-01-09 19:35:07 +04:00
jdegenstein
46690576a4
objects_sketch.py -> revert | None in BaseSketchObject 2025-01-09 08:55:26 -06:00
jdegenstein
1a73db8f8b
Merge branch 'gumyr:dev' into mypy_sketchobjs 2025-01-08 17:17:17 -06:00
jdegenstein
b819480435 additional typing fixes for objects_sketch.py 2025-01-08 17:15:32 -06:00
jdegenstein
7e65b8e930 additional typing fixes for objects_sketch.py 2025-01-08 17:14:12 -06:00
jdegenstein
90a4a2be33
Merge pull request #849 from jdegenstein/benchmarks
Add a benchmark workflow and benchmarks to build123d
2025-01-08 15:32:39 -06:00
jdegenstein
d05b98aff7 add trianglesolver to mypy.ini and don't redefine input variables, create new ones to keep mypy happy 2025-01-08 14:23:57 -06:00
jdegenstein
16c685f689 sketch_objects.py -> typing improvements 2025-01-08 14:11:24 -06:00
gumyr
98ef21b9eb Fixing typing issues 2025-01-08 11:49:48 -05:00
jdegenstein
ea1a000dfe
Merge pull request #852 from jdegenstein/py310upgrade
Upgrade to Python 310+ syntax
2025-01-08 09:07:34 -06:00
jdegenstein
25181f4ba7
test_benchmarks.py -> try again skip if pytest_benchmark is missing 2025-01-07 22:22:08 -06:00
jdegenstein
9928ba5bfd
test_benchmarks.py -> skip if pytest-benchmark package not found 2025-01-07 22:16:50 -06:00
jdegenstein
65ac2504b5 upgrade to python 310 syntax 2025-01-07 21:44:25 -06:00
jdegenstein
344760e541
Update mypy.yml 2025-01-07 21:40:24 -06:00
jdegenstein
5b6c9ea922
Merge branch 'gumyr:dev' into dev 2025-01-07 20:36:39 -06:00
gumyr
563083f37e Fix mypy.ini 2025-01-07 19:32:03 -05:00
gumyr
ddef1c8140 Merge branch 'dev' of https://github.com/gumyr/build123d into dev 2025-01-07 19:25:37 -05:00
gumyr
f8456b28b9 Update mypy global options to ignore imports 2025-01-07 19:25:27 -05:00
jdegenstein
027517ffd6
benchmark.yml -> enable for all workflows 2025-01-07 16:54:05 -06:00
jdegenstein
357abf36db
action.yml -> rem pytest-benchmark from main setup 2025-01-07 16:49:17 -06:00
jdegenstein
bd62971cba
test_benchmarks.py -> add 12 benchmarking tests from the build123d docs 2025-01-07 16:42:30 -06:00
jdegenstein
1af7175a75
benchmark.yml -> add new workflow for pytest-benchmark 2025-01-07 16:36:31 -06:00
jdegenstein
f0b6896bb5
Merge branch 'gumyr:dev' into dev 2025-01-07 16:03:27 -06:00
jdegenstein
374b209575
Merge pull request #841 from jdegenstein/mypy_gha2
Workflow Cleanup
2025-01-07 15:45:56 -06:00
jdegenstein
a2c53eab1b
Update mypy.yml 2025-01-07 15:31:03 -06:00
jdegenstein
7e189f4b2a
action.yml -> add pytest-benchmark 2025-01-07 13:55:30 -06:00
gumyr
b2e6b3c0d4 Disable linting on imported modules 2025-01-07 14:26:56 -05:00
gumyr
89763b9673 Adding missing __init__.py file 2025-01-07 14:07:20 -05:00
gumyr
c53880981d Merge branches 'split1', 'split2', 'split3', 'split4', 'split5' and 'split6' into split_base 2025-01-07 13:58:31 -05:00
gumyr
fc32715a5f Step 7b split - composite.py 2025-01-07 13:53:27 -05:00
gumyr
beb31f1c50 Step 6b split - three_d.py 2025-01-07 13:53:17 -05:00
gumyr
daa02d81ab Step 7 - composite.py 2025-01-07 13:53:17 -05:00
gumyr
c9beb4f757 Step 5b split - two_d.py 2025-01-07 13:53:08 -05:00
gumyr
8862fa7940 Step 6 - three_d.py 2025-01-07 13:53:08 -05:00
gumyr
a50e4f3d25 Step 4b split - one_d.py 2025-01-07 13:52:58 -05:00
gumyr
45cc8e78e8 Step 5 - two_d.py 2025-01-07 13:52:58 -05:00
gumyr
42411b6a1f Step 3b split - zero_d.py 2025-01-07 13:52:48 -05:00
gumyr
0984cb6369 Step 4 - one_d.py 2025-01-07 13:52:48 -05:00
gumyr
c4504e7b0e Step 2b split - utils.py 2025-01-07 13:52:38 -05:00
gumyr
6a43a52e0a Step 3 - zero_d.py 2025-01-07 13:52:38 -05:00
gumyr
e43aa07bfe Step 1b split - shape_core.py 2025-01-07 13:52:29 -05:00
gumyr
393310d50e Step 2 - utils.py 2025-01-07 13:52:29 -05:00
gumyr
3620eef7e1 Step 1 - shape_core.py 2025-01-07 13:52:19 -05:00
Roger Maitland
6621e3bb24
Merge pull request #812 from gumyr/refactor_topology
Refactored topology.py ready to split into multiple modules
2025-01-05 11:49:18 -05:00
gumyr
93513b1449 Order functions, methods and properties in a class by Python's conventional order 2025-01-04 15:46:21 -05:00
gumyr
b5396639dc utils.py file was getting skipped 2025-01-04 10:49:06 -05:00
jdegenstein
e14f739781
mypy.yml -> cleanup and update to actions/checkout@v4 2025-01-02 12:09:46 -06:00
jdegenstein
ca5769cd25
action.yml -> streamline pip installs 2025-01-02 12:07:50 -06:00
gumyr
19ec9dd488 Fixed Method Resolution Order (MRO) conflict in Mixin*D 2025-01-02 11:45:37 -05:00
gumyr
835433d1d8 Improving pylint 2025-01-01 18:34:42 -05:00
gumyr
de1edda231 Addressed last of review comments 2025-01-01 15:27:11 -05:00
gumyr
5571e9e2b8 Removing deprecated methods from docs 2025-01-01 13:38:33 -05:00
gumyr
1611ca8185 Improving test coverage of three_d.py to 97% 2025-01-01 13:16:39 -05:00
gumyr
ae15a95c9b Increased shape_core.py test coverage to 99% 2024-12-31 15:40:01 -05:00
snoyer
e5c976454e deprecate param without breaking API yet 2024-12-31 17:18:23 +04:00
gumyr
678b715e75 Fixed invalid references post file split 2024-12-30 19:22:50 -05:00
gumyr
b77ed1a5e9 Fixed composite.py typing problems 2024-12-30 16:02:49 -05:00
gumyr
ea3e8b3edc Fixed three_d.py typing problems 2024-12-30 14:54:50 -05:00
gumyr
93bcaa1e11 Fixed two_d.py typing errors 2024-12-30 13:43:45 -05:00
snoyer
5ecea4bb91 remove is_inkscape_label parameter 2024-12-30 20:47:22 +04:00
roger-maitland
c8ed90532a Merge https://github.com/gumyr/build123d into refactor_topology 2024-12-29 17:55:22 -05:00
gumyr
48e4b5e057 Resolved one_d.py mypy errors 2024-12-29 15:08:29 -05:00
gumyr
4c3d1544a9 Attempting to isolate mac specific issue 2024-12-23 11:46:20 -05:00
gumyr
5be9a27043 mypy fixes for zero_d.py & latest code review changes 2024-12-21 11:06:49 -05:00
gumyr
59bb0373a8 Review viewer import 2024-12-20 14:39:48 -05:00
gumyr
217b70aa1e Implemented review feedback - fixed mypy on shape_core.py & utils.py 2024-12-20 14:31:42 -05:00
jdegenstein
c0728e0803
Merge pull request #821 from jdegenstein/workflow_cleanup
Workflow cleanup
2024-12-17 14:49:36 -06:00
jdegenstein
fd5515d274
action.yml -> point to inputs.python-version instead of matrix.python-version 2024-12-17 13:19:39 -06:00
jdegenstein
005f3af80e
coverage.yml -> try double quotes instead of single quotes to get python-version to be passed down correctly. 2024-12-17 12:06:52 -06:00
jdegenstein
590deb3937
Delete requirements.txt
no longer needed
2024-12-17 11:49:20 -06:00
jdegenstein
dd1aabba78
coverage.yml -> depend on .github/actions/setup like other workflows 2024-12-17 11:48:33 -06:00
jdegenstein
e36ab04cbc
action.yml -> add pytest-cov dependency to setup 2024-12-17 11:43:54 -06:00
gumyr
5b88e87bad Replace Optional with | None 2024-12-17 11:58:58 -05:00
gumyr
127d048582 Revert "Added Optional to input parameters"
This reverts commit 87c046b240.
2024-12-17 11:33:31 -05:00
gumyr
87c046b240 Added Optional to input parameters 2024-12-16 19:40:15 -05:00
gumyr
6cb574c772 Improved Vector.__hash__ algorithm 2024-12-15 12:48:43 -05:00
gumyr
d7c73e1e81 Fixed Vector.__hash__ (used by set) by rounding 2024-12-15 11:00:51 -05:00
gumyr
a34f340397 Fixing drafting problem only tested with pytest 2024-12-09 11:52:20 -05:00
gumyr
d1de2a6da1 Refactored topology.py ready to split into multiple modules 2024-12-09 10:09:38 -05:00
gumyr
36a89eafad Added __init__.py generation 2024-12-07 11:31:42 -05:00
gumyr
b90d0979e2 latest update 2024-12-06 10:56:14 -05:00
gumyr
8bf4c88b7c Merge branch 'dev' of https://github.com/gumyr/build123d into dev 2024-12-05 08:58:25 -05:00
gumyr
12f5ec0910 Creates valid subfiles 2024-12-05 08:57:25 -05:00
jdegenstein
37fddc291c
Merge pull request #798 from jdegenstein/docfix_applesilicon
Update docs to remove obsolete advice for Apple Silicon installation
2024-11-22 15:55:10 -06:00
jdegenstein
1c4dfaba34
Merge pull request #797 from jdegenstein/pypi_mac_arm64
Update `test.yml` to use the newly released cadquery-ocp PyPI packages for macos-arm64
2024-11-22 15:49:22 -06:00
jdegenstein
dba9831ae3
installation.rst -> remove entire obsolete Apple Silicon workaround section 2024-11-22 15:37:13 -06:00
jdegenstein
eab54d054f
README.md -> don't mention Apple Silicon 2024-11-22 15:33:57 -06:00
jdegenstein
1755d29b66
Delete .github/actions/setup-macos-arm64 directory and action.yml 2024-11-22 15:11:44 -06:00
jdegenstein
e9bef21e30
test.yml -> combine x86_64 and macos-arm64 into a single job 2024-11-22 15:10:01 -06:00
jdegenstein
875f33507f
test.yml -> use cadquery-ocp from pypi on macos-arm64 2024-11-22 15:05:04 -06:00
jdegenstein
2ba9e5b248
Merge pull request #794 from jdegenstein/no_py39
Drop support for python 3.9
2024-11-21 08:56:35 -06:00
jdegenstein
ae5448e109
test.yml -> use py310 and py312 and not py311 2024-11-20 08:10:24 -06:00
jdegenstein
01691bcb4e
mypy.yml -> use py310 and py312 and not py311 2024-11-20 08:09:31 -06:00
gumyr
52e43d51e5 Refactored shape extractors to avoid class references Issue #788 2024-11-19 19:39:57 -05:00
jdegenstein
e772388dda
.readthedocs.yaml -> py39 to py310 2024-11-19 15:01:26 -06:00
jdegenstein
4adb26ebf0
pyproject.toml -> no py39 support 2024-11-19 14:48:19 -06:00
jdegenstein
1022b88ca9
mypy.yml -> use py310 and py311
mypy is not in active use, but still keeping this up to date
2024-11-19 14:46:05 -06:00
jdegenstein
a61912fbe3
publish.yml -> print python3 version during wheel build 2024-11-19 14:44:56 -06:00
jdegenstein
73f5f6cd28
test.yml -> test on py310 and py311 and not py39 2024-11-19 14:43:24 -06:00
gumyr
e82b20a575 Curve object become Wire/Edge, replace Compound.first_level_shapes with Shape.get_top_level_shapes Issue #788 2024-11-19 13:46:54 -05:00
gumyr
3b0fcb017a Replaced unwrap with unwrap_topods_compound in topology.py Issue #788 2024-11-18 14:18:37 -05:00
Roger Maitland
5fb86b8a10
Merge pull request #790 from erooke/invalid-slots
Slots error if width <= height
2024-11-18 13:36:12 -05:00
Ethan Rooke
c31e92a165
test: fix test_random_slots 2024-11-18 10:50:01 -06:00
Ethan Rooke
55345a4bc5
fix: SlotCenterPoint errors on width <= height 2024-11-18 10:50:01 -06:00
Ethan Rooke
fa5e8deb3e
fix: SlotCenterToCenter errors if center_separation <= 0 2024-11-18 10:50:01 -06:00
Ethan Rooke
a5aa8cbc99
fix: SlotOverall errors if width <= height 2024-11-18 10:50:00 -06:00
Ethan Rooke
1c4b8ff045
test: check for invalid slots 2024-11-18 10:49:58 -06:00
Roger Maitland
208bd39355
Merge pull request #782 from erooke/align
Alignment rework
2024-11-18 09:33:49 -05:00
Ethan Rooke
2ceef0307a
fix: return -Vector if a single alignment 2024-11-17 07:41:17 -06:00
Ethan Rooke
e8365566f7
test: to_align_offset behaves as expected 2024-11-17 07:40:47 -06:00
Ethan Rooke
8e5cd102cd
fix: import type alias from typing_extensions 2024-11-16 19:47:38 -06:00
Ethan Rooke
b43deebbcc
fix: make typesignature on to_align_offset more precise 2024-11-16 19:47:38 -06:00
Ethan Rooke
d86811d2dc
feat: add Align2DType and Align3DType 2024-11-16 19:47:38 -06:00
Ethan Rooke
54bc6a4681
feat: optional center argument for to_align_offset 2024-11-16 19:47:24 -06:00
Ethan Rooke
cf11f91f2d
feat: add align.NONE 2024-11-16 19:46:18 -06:00
Ethan Rooke
f2095d64cf
cleanup: remove duplicated aligning logic 2024-11-16 19:46:18 -06:00
Ethan Rooke
931cf4c15f
fix: correct type on to_align_offset 2024-11-16 19:46:18 -06:00
281 changed files with 42776 additions and 17783 deletions

View file

@ -1,22 +0,0 @@
name: 'Setup'
inputs:
python-version: # id of input
description: 'Python version'
required: true
runs:
using: "composite"
steps:
- name: python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: install requirements
shell: bash
run: |
pip install wheel
pip install mypy
pip install pytest
pip install pylint
pip install https://github.com/jdegenstein/ocp-build-system/releases/download/7.7.2_macos_arm64_cp310/cadquery_ocp-7.7.2-cp310-cp310-macosx_11_0_arm64.whl
pip install .

View file

@ -7,15 +7,12 @@ inputs:
runs:
using: "composite"
steps:
- name: python
uses: actions/setup-python@v5
- name: Setup Python
uses: astral-sh/setup-uv@v5
with:
python-version: ${{ matrix.python-version }}
- name: install requirements
enable-cache: false
python-version: ${{ inputs.python-version }}
- name: Install Requirements
shell: bash
run: |
pip install wheel
pip install mypy
pip install pytest
pip install pylint
pip install .
uv pip install .[development]

31
.github/workflows/benchmark.yml vendored Normal file
View file

@ -0,0 +1,31 @@
name: benchmarks
on: [push, pull_request, workflow_dispatch]
jobs:
benchmarks:
strategy:
fail-fast: false
matrix:
python-version: [
# "3.10",
# "3.11",
"3.12",
]
os: [macos-15-intel, macos-14, ubuntu-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup/
with:
python-version: ${{ matrix.python-version }}
- name: benchmark
run: |
python -m pytest --benchmark-only --benchmark-autosave
pytest-benchmark compare --csv="results.csv"
cat results.csv
- uses: actions/upload-artifact@v4
with:
name: benchmark-results-${{ matrix.os }}
path: results.csv

View file

@ -6,14 +6,11 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python 3.10
uses: actions/setup-python@v5
- name: Setup
uses: ./.github/actions/setup/
with:
python-version: '3.10'
- name: Install dependencies
run: pip install -r requirements.txt
python-version: "3.10"
- name: Run tests and collect coverage
run: pytest --cov=build123d
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
uses: codecov/codecov-action@v5

View file

@ -7,18 +7,20 @@ jobs:
fail-fast: false
matrix:
python-version: [
"3.9",
"3.10",
#"3.11"
# "3.11",
# "3.12",
"3.13",
]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/setup
- uses: actions/checkout@v4
- name: Setup
uses: ./.github/actions/setup
with:
python-version: ${{ matrix.python-version }}
- name: typecheck
- name: Typecheck
run: |
mypy --config-file mypy.ini src/build123d
mypy --config-file mypy.ini src/build123d

View file

@ -20,6 +20,7 @@ jobs:
run: |
pwd
ls -lR
python3 -V
python3 -m pip install --upgrade pip
python3 -m pip -V
python3 -m pip install build

View file

@ -3,16 +3,17 @@ name: tests
on: [push, pull_request, workflow_dispatch]
jobs:
tests_x86_64:
tests:
strategy:
fail-fast: false
matrix:
python-version: [
"3.9",
"3.10",
#"3.11"
# "3.11",
# "3.12",
"3.13",
]
os: [macos-13, ubuntu-latest, windows-latest]
os: [macos-15-intel, macos-14, ubuntu-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
@ -22,25 +23,4 @@ jobs:
python-version: ${{ matrix.python-version }}
- name: test
run: |
python -m pytest
tests_arm64:
strategy:
fail-fast: false
matrix:
python-version: [
#"3.9",
"3.10",
#"3.11"
]
os: [macos-14]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-macos-arm64/
with:
python-version: ${{ matrix.python-version }}
- name: test
run: |
python -m pytest
python -m pytest -n auto --benchmark-disable

3
.gitignore vendored
View file

@ -41,3 +41,6 @@ venv.bak/
# Profiling debris.
prof/
# MacOS cruft
.DS_Store

View file

@ -16,3 +16,5 @@ disable=
ignore-paths=
./src/build123d/_version.py # Generated
ignored-modules=OCP,vtkmodules,scipy.spatial,ezdxf,anytree,IPython,trianglesolver,scipy,numpy

View file

@ -7,15 +7,21 @@ formats:
build:
os: "ubuntu-22.04"
tools:
python: "3.9"
python: "3.10"
apt_packages:
- graphviz
jobs:
post_checkout:
# necessary to ensure that the development builds get a correct version tag
- git fetch --unshallow || true
# Build from the docs/ directory with Sphinx
sphinx:
configuration: docs/conf.py
# Explicitly set the version of Python and its requirements
python:
install:
- requirements: docs/requirements.txt
- method: pip
path: .
extra_requirements:
- docs

16
CITATION.cff Normal file
View file

@ -0,0 +1,16 @@
cff-version: 1.2.0
message: "If you use build123d in your research, please cite it using the following information."
title: "build123d: A Python-based parametric CAD library"
version: "0.9.1"
doi: "10.5281/zenodo.14872323"
authors:
- name: "Roger Maitland"
affiliation: "Independent Developer"
date-released: "2025-02-14"
repository-code: "https://github.com/gumyr/build123d"
license: "Apache-2.0"
keywords:
- CAD
- Python
- OpenCascade
- Parametric Design

View file

@ -3,10 +3,10 @@ tests, ensure they build and pass, and ensure that `pylint` and `mypy`
are happy with your code.
- Install `pip` following their [documentation](https://pip.pypa.io/en/stable/installation/).
- Install development dependencies: `pip install pylint pytest mypy sphinx black`
- Install docs dependencies: `pip install -r docs/requirements.txt` (might need to comment out the build123d line in that file)
- Install development dependencies: `pip install -e ".[development]"`
- Install docs dependencies: `pip install -e ".[docs]"`
- Install `build123d` in editable mode from current dir: `pip install -e .`
- Run tests with: `python -m pytest`
- Run tests with: `python -m pytest -n auto`
- Build docs with: `cd docs && make html`
- Check added files' style with: `pylint <path/to/file.py>`
- Check added files' type annotations with: `mypy <path/to/file.py>`

19
Citation.md Normal file
View file

@ -0,0 +1,19 @@
# Citation
If you use **build123d** in your research, please cite:
Roger Maitland. **"build123d: A Python-based parametric CAD library"**. Version 0.9.1, 2025.
DOI: [10.5281/zenodo.14872323](https://doi.org/10.5281/zenodo.14872323)
Source Code: [GitHub](https://github.com/gumyr/build123d)
## BibTeX Entry
```bibtex
@software{build123d,
author = {Roger Maitland},
title = {build123d: A Python-based parametric CAD library},
year = {2025},
version = {0.9.1},
doi = {10.5281/zenodo.14872323},
url = {https://github.com/gumyr/build123d}
}

15
NOTICE Normal file
View file

@ -0,0 +1,15 @@
build123d
Copyright (c) 20222025 The build123d Contributors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at:
http://www.apache.org/licenses/LICENSE-2.0
-------------------------------------------------------------------------------
This project was originally derived from portions of the CadQuery codebase
(https://github.com/CadQuery/cadquery) but has since been extensively
refactored and restructured into an independent system.
CadQuery is licensed under the Apache License, Version 2.0.

View file

@ -1,32 +1,56 @@
<p align="center">
<img alt="build123d logo" src="docs/assets/build123d_logo/logo-banner.svg">
<img alt="build123d logo" src="https://github.com/gumyr/build123d/raw/dev/docs/assets/build123d_logo/logo-banner.svg">
</p>
[![Documentation Status](https://readthedocs.org/projects/build123d/badge/?version=latest)](https://build123d.readthedocs.io/en/latest/?badge=latest)
[![tests](https://github.com/gumyr/build123d/actions/workflows/test.yml/badge.svg)](https://github.com/gumyr/build123d/actions/workflows/test.yml)
[![pylint](https://github.com/gumyr/build123d/actions/workflows/lint.yml/badge.svg)](https://github.com/gumyr/build123d/actions/workflows/lint.yml)
[![mypy](https://github.com/gumyr/build123d/actions/workflows/mypy.yml/badge.svg)](https://github.com/gumyr/build123d/actions/workflows/mypy.yml)
[![codecov](https://codecov.io/gh/gumyr/build123d/branch/dev/graph/badge.svg)](https://codecov.io/gh/gumyr/build123d)
Build123d is a python-based, parametric, boundary representation (BREP) modeling framework for 2D and 3D CAD. It's built on the Open Cascade geometric kernel and allows for the creation of complex models using a simple and intuitive python syntax. Build123d can be used to create models for 3D printing, CNC machining, laser cutting, and other manufacturing processes. Models can be exported to a wide variety of popular CAD tools such as FreeCAD and SolidWorks.
![Python Versions](https://img.shields.io/badge/python-3.10%20|%203.11%20|%203.12%20|%203.13-blue)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
Build123d could be considered as an evolution of [CadQuery](https://cadquery.readthedocs.io/en/latest/index.html) where the somewhat restrictive Fluent API (method chaining) is replaced with stateful context managers - e.g. `with` blocks - thus enabling the full python toolbox: for loops, references to objects, object sorting and filtering, etc.
[![PyPI version](https://img.shields.io/pypi/v/build123d.svg)](https://pypi.org/project/build123d/)
[![Downloads](https://pepy.tech/badge/build123d)](https://pepy.tech/project/build123d)
[![Downloads/month](https://pepy.tech/badge/build123d/month)](https://pepy.tech/project/build123d)
[![PyPI - Wheel](https://img.shields.io/pypi/wheel/build123d.svg)](https://pypi.org/project/build123d/)
[![DOI](https://zenodo.org/badge/510925389.svg)](https://doi.org/10.5281/zenodo.14872322)
The documentation for **build123d** can found at [readthedocs](https://build123d.readthedocs.io/en/latest/index.html).
There is a [***Discord***](https://discord.com/invite/Bj9AQPsCfx) server (shared with CadQuery) where you can ask for help in the build123d channel.
Build123d is a Python-based, parametric [boundary representation (BREP)][BREP] modeling framework for 2D and 3D CAD. Built on the [Open Cascade] geometric kernel, it provides a clean, fully Pythonic interface for creating precise models suitable for 3D printing, CNC machining, laser cutting, and other manufacturing processes. Models can be exported to popular CAD tools such as [FreeCAD] and SolidWorks.
Designed for modern, maintainable CAD-as-code, build123d combines clear architecture with expressive, algebraic modeling. It offers:
- Minimal or no internal state depending on mode,
- Explicit 1D, 2D, and 3D geometry classes with well-defined operations,
- Extensibility through subclassing and functional composition—no monkey patching,
- Standards-compliant code (PEP 8, mypy, pylint) with rich pylance type hints,
- Deep Python integration—selectors as lists, locations as iterables, and natural conversions (Solid(shell), tuple(Vector)),
- Operator-driven modeling (obj += sub_obj, Plane.XZ * Pos(X=5) * Rectangle(1, 1)) for algebraic, readable, and composable design logic.
The result is a framework that feels native to Python while providing the full power of OpenCascade geometry underneath.
The documentation for **build123d** can be found at [readthedocs](https://build123d.readthedocs.io/en/latest/index.html).
There is a [***Discord***](https://discord.com/invite/Bj9AQPsCfx) server (shared with [CadQuery]) where you can ask for help in the build123d channel.
The recommended method for most users to install **build123d** is:
The recommended method for most users is to install **build123d** is:
```
pip install build123d
```
To get the latest non-released version of **build123d*** one can install from GitHub using one of the following two commands:
To get the latest non-released version of **build123d** one can install from GitHub using one of the following two commands:
Linux/MacOS:
In Linux/MacOS, use the following command:
```
python3 -m pip install git+https://github.com/gumyr/build123d
```
In Windows, use the following command:
Windows:
```
python -m pip install git+https://github.com/gumyr/build123d
```
@ -36,11 +60,21 @@ If you receive errors about conflicting dependencies, you can retry the installa
python3 -m pip install --upgrade pip
```
Development install
Development install:
```
git clone https://github.com/gumyr/build123d.git
cd build123d
python3 -m pip install -e .
```
Further installation instructions are available (e.g. Poetry, Apple Silicon) see the [installation section on readthedocs](https://build123d.readthedocs.io/en/latest/installation.html).
Further installation instructions are available (e.g. Poetry) see the [installation section on readthedocs](https://build123d.readthedocs.io/en/latest/installation.html).
Attribution:
Build123d was originally derived from portions of the [CadQuery] codebase but has since been extensively refactored and restructured into an independent system.
[BREP]: https://en.wikipedia.org/wiki/Boundary_representation
[CadQuery]: https://cadquery.readthedocs.io/en/latest/index.html
[FreeCAD]: https://www.freecad.org/
[Open Cascade]: https://dev.opencascade.org/

202
docs/OpenSCAD.rst Normal file
View file

@ -0,0 +1,202 @@
Transitioning from OpenSCAD
===========================
Welcome to build123d! If you're familiar with OpenSCAD, you'll notice key differences in
how models are constructed. This guide is designed to help you adapt your design approach
and understand the fundamental differences in modeling philosophies. While OpenSCAD relies
heavily on Constructive Solid Geometry (CSG) to combine primitive 3D shapes like cubes and
spheres, build123d encourages a more flexible and efficient workflow based on building
lower-dimensional objects.
Why Transition to build123d?
----------------------------
Transitioning to build123d allows you to harness a modern and efficient approach to 3D modeling.
By starting with lower-dimensional objects and leveraging powerful transformation tools, you can
create precise, complex designs with ease. This workflow emphasizes modularity and maintainability,
enabling quick modifications and reducing computational complexity.
Moving Beyond Constructive Solid Geometry (CSG)
-----------------------------------------------
OpenSCAD's modeling paradigm heavily relies on Constructive Solid Geometry (CSG) to build
models by combining and subtracting 3D solids. While build123d supports similar operations,
its design philosophy encourages a fundamentally different, often more efficient approach:
starting with lower-dimensional entities like faces and edges and then transforming them
into solids.
Why Transition Away from CSG?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
CSG is a powerful method for creating 3D models, but it has limitations when dealing with
complex designs. build123ds approach offers several advantages:
- **Simplified Complexity Management**:
Working with 2D profiles and faces instead of directly manipulating 3D solids simplifies
your workflow. In large models, the number of operations on solids can grow exponentially,
making it difficult to manage and debug. Building with 2D profiles helps keep designs
modular and organized.
- **Improved Robustness**:
Operations on 2D profiles are inherently less computationally intensive and
less error-prone than equivalent operations on 3D solids. This robustness ensures smoother
workflows and reduces the likelihood of failing operations in complex models.
- **Enhanced Efficiency**:
Constructing models from 2D profiles using operations like **extruding**, **lofting**,
**sweeping**, or **revolving** is computationally faster. These methods also provide
greater design flexibility, enabling you to create intricate forms with ease.
- **Better Precision and Control**:
Starting with 2D profiles allows for more precise geometric control. Constraints, dimensions,
and relationships between entities can be established more effectively in 2D, ensuring a solid
foundation for your 3D design.
Using a More Traditional CAD Design Workflow
--------------------------------------------
Most industry-standard CAD packages recommend starting with a sketch (a 2D object) and
transforming it into a 3D model—a design philosophy that is central to build123d.
In build123d, the design process typically begins with defining the outline of an object.
This might involve creating a complex 1D object using **BuildLine**, which provides tools
for constructing intricate wireframe geometries. The next step involves converting these
1D objects into 2D sketches using **BuildSketch**, which offers a wide range of 2D primitives
and advanced capabilities, such as:
- **make_face**: Converts a 1D **BuildLine** object into a planar 2D face.
- **make_hull**: Generates a convex hull from a 1D **BuildLine** object.
Once a 2D profile is created, it can be transformed into 3D objects in a **BuildPart** context
using operations such as:
- **Extrusion**: Extends a 2D profile along a straight path to create a 3D shape.
- **Revolution**: Rotates a 2D profile around an axis to form a symmetrical 3D object.
- **Lofting**: Connects multiple 2D profiles along a path to create smooth transitions
between shapes.
- **Sweeping**: Moves a 2D profile along a defined path to create a 3D form.
Refining the Model
^^^^^^^^^^^^^^^^^^
After creating the initial 3D shape, you can refine the model by adding details or making
modifications using build123d's advanced features, such as:
- **Fillets and Chamfers**: Smooth or bevel edges to enhance the design.
- **Boolean Operations**: Combine, subtract, or intersect 3D shapes to achieve the desired
geometry.
Example Comparison
^^^^^^^^^^^^^^^^^^
To illustrate the advantages of this approach, compare a simple model in OpenSCAD and
build123d of a piece of angle iron:
**OpenSCAD Approach**
.. code-block:: openscad
$fn = 100; // Increase the resolution for smooth fillets
// Dimensions
length = 100; // 10 cm long
width = 30; // 3 cm wide
thickness = 4; // 4 mm thick
fillet = 5; // 5 mm fillet radius
delta = 0.001; // a small number
// Create the angle iron
difference() {
// Outer shape
cube([width, length, width], center = false);
// Inner shape
union() {
translate([thickness+fillet,-delta,thickness+fillet])
rotate([-90,0,0])
cylinder(length+2*delta, fillet,fillet);
translate([thickness,-delta,thickness+fillet])
cube([width-thickness,length+2*delta,width-fillet],center=false);
translate([thickness+fillet,-delta,thickness])
cube([width-fillet,length+2*delta,width-thickness],center=false);
}
}
**build123d Approach**
.. code-block:: build123d
# Builder mode
with BuildPart() as angle_iron:
with BuildSketch() as profile:
Rectangle(3 * CM, 4 * MM, align=Align.MIN)
Rectangle(4 * MM, 3 * CM, align=Align.MIN)
extrude(amount=10 * CM)
fillet(angle_iron.edges().filter_by(lambda e: e.is_interior), 5 * MM)
.. code-block:: build123d
# Algebra mode
profile = Rectangle(3 * CM, 4 * MM, align=Align.MIN)
profile += Rectangle(4 * MM, 3 * CM, align=Align.MIN)
angle_iron = extrude(profile, 10 * CM)
angle_iron = fillet(angle_iron.edges().filter_by(lambda e: e.is_interior), 5 * MM)
.. image:: ./assets/AngleIron.png
OpenSCAD and build123d offer distinct paradigms for creating 3D models, as demonstrated
by the angle iron example. OpenSCAD relies on Constructive Solid Geometry (CSG) operations,
combining and subtracting 3D shapes like cubes and cylinders. Fillets are approximated by
manually adding high-resolution cylinders, making adjustments cumbersome and less precise.
This static approach can handle simple models but becomes challenging for complex or iterative designs.
In contrast, build123d emphasizes a profile-driven workflow. It starts with a 2D sketch,
defining the geometrys outline, which is then extruded or otherwise transformed into a
3D model. Features like fillets are applied dynamically by querying topological elements,
such as edges, using intuitive filtering methods. This approach ensures precision and
flexibility, making changes straightforward without the need for manual repositioning or realignment.
The build123d methodology is computationally efficient, leveraging mathematical precision
for features like fillets. By separating the design into manageable steps—sketching, extruding,
and refining—it aligns with traditional CAD practices and enhances readability, modularity,
and maintainability. Unlike OpenSCAD, build123ds dynamic querying of topological features
allows for easy updates and adjustments, making it better suited for modern, complex, and
iterative design workflows.
In summary, build123ds sketch-based paradigm and topological querying capabilities provide
superior precision, flexibility, and efficiency compared to OpenSCADs static, CSG-centric
approach, making it a better choice for robust and adaptable CAD modeling.
Tips for Transitioning
----------------------
- **Think in Lower Dimensions**: Begin with 1D curves or 2D sketches as the foundation
and progressively build upwards into 3D shapes.
- **Leverage Topological References**: Use build123d's powerful selector system to
reference features of existing objects for creating new ones. For example, apply
inside or outside fillets and chamfers to vertices and edges of an existing part
with precision.
- **Operational Equivalency and Beyond**: Build123d provides equivalents to almost all
features available in OpenSCAD, with the exception of the 3D **minkowski** operation.
However, a 2D equivalent, **make_hull**, is available in build123d. Beyond operational
equivalency, build123d offers a wealth of additional functionality, including advanced
features like topological queries, dynamic filtering, and robust tools for creating complex
geometries. By exploring build123d's extensive operations, you can unlock new possibilities
and take your designs far beyond the capabilities of OpenSCAD.
- **Explore the Documentation**: Dive into build123ds comprehensive API documentation
to unlock its full potential and discover advanced features.
By shifting your design mindset from solid-based CSG to a profile-driven approach, you
can fully harness build123d's capabilities to create precise, efficient, and complex models.
Welcome aboard, and happy designing!
Conclusion
----------
While OpenSCAD and build123d share the goal of empowering users to create parametric 3D
models, their approaches differ significantly. Embracing build123ds workflow of building
with lower-dimensional objects and applying extrusion, lofting, sweeping, or revolution
will unlock its full potential and lead to better design outcomes.

BIN
docs/_static/spitfire_wing.glb vendored Normal file

Binary file not shown.

View file

@ -20,7 +20,7 @@ python context manager.
...
)
.. code-block:: python
.. code-block:: build123d
# build123d API
with BuildPart() as pillow_block:
@ -43,7 +43,7 @@ Each object and operation is now a class instantiation that interacts with the
active context implicitly for the user. These instantiations can be assigned to
an instance variable as with standard python programming for direct use.
.. code-block:: python
.. code-block:: build123d
with BuildSketch() as plan:
r = Rectangle(width, height)
@ -62,7 +62,7 @@ with tangents equal to the tangents of l5 and l6 at their end and beginning resp
Being able to extract information from existing features allows the user to "snap" new
features to these points without knowing their numeric values.
.. code-block:: python
.. code-block:: build123d
with BuildLine() as outline:
...
@ -81,6 +81,7 @@ by the last operation and fillets them. Such a selection would be quite difficul
otherwise.
.. literalinclude:: ../examples/intersecting_pipes.py
:language: build123d
:lines: 30, 39-49
@ -100,13 +101,13 @@ prompt users for valid options without having to refer to documentation.
Selectors replaced by Lists
===========================
String based selectors have been replaced with standard python filters and
sorting which opens up the full functionality of python lists. To aid the
sorting which opens up the full functionality of python lists. To aid the
user, common operations have been optimized as shown here along with
a fully custom selection:
.. code-block:: python
.. code-block:: build123d
top = rail.faces().filter_by_normal(Axis.Z)[-1]
top = rail.faces().filter_by(Axis.Z)[-1]
...
outside_vertices = filter(
lambda v: (v.Y == 0.0 or v.Y == height) and -width / 2 < v.X < width / 2,

View file

@ -61,7 +61,7 @@ with :math:`B^3 \subset C^3, B^2 \subset C^2` and :math:`B^1 \subset C^1`
* This definition also includes that neither ``-`` nor ``&`` are commutative.
Locations, planes and location arithmentic
Locations, planes and location arithmetic
---------------------------------------------
**Set definitions:**

View file

@ -7,7 +7,7 @@ Creating lots of Shapes in a loop means for every step ``fuse`` and ``clean`` wi
In an example like the below, both functions get slower and slower the more objects are
already fused. Overall it takes on an M1 Mac 4.76 sec.
.. code-block:: python
.. code-block:: build123d
diam = 80
holes = Sketch()
@ -22,7 +22,7 @@ already fused. Overall it takes on an M1 Mac 4.76 sec.
One way to avoid it is to use lazy evaluation for the algebra operations. Just collect all objects and
then call ``fuse`` (``+``) once with all objects and ``clean`` once. Overall it takes 0.19 sec.
.. code-block:: python
.. code-block:: build123d
r = Rectangle(2, 2)
holes = [
@ -36,7 +36,7 @@ then call ``fuse`` (``+``) once with all objects and ``clean`` once. Overall it
Another way to leverage the vectorized algebra operations is to add a list comprehension of objects to
an empty ``Part``, ``Sketch`` or ``Curve``:
.. code-block:: python
.. code-block:: build123d
polygons = Sketch() + [
loc * RegularPolygon(radius=5, side_count=5)

View file

@ -22,6 +22,7 @@ Here we'll assign labels to all of the components that will be part of the box
assembly:
.. literalinclude:: tutorial_joints.py
:language: build123d
:start-after: [Add labels]
:end-before: [Create assembly]
@ -36,6 +37,7 @@ Creation of the assembly is done by simply creating a :class:`~topology.Compound
appropriate ``parent`` and ``children`` attributes as shown here:
.. literalinclude:: tutorial_joints.py
:language: build123d
:start-after: [Create assembly]
:end-before: [Display assembly]
@ -43,6 +45,7 @@ To display the topology of an assembly :class:`~topology.Compound`, the :meth:`~
method can be used as follows:
.. literalinclude:: tutorial_joints.py
:language: build123d
:start-after: [Display assembly]
:end-before: [Add to the assembly by assigning the parent attribute of an object]
@ -59,6 +62,7 @@ which results in:
To add to an assembly :class:`~topology.Compound` one can change either ``children`` or ``parent`` attributes.
.. literalinclude:: tutorial_joints.py
:language: build123d
:start-after: [Add to the assembly by assigning the parent attribute of an object]
:end-before: [Check that the components in the assembly don't intersect]
@ -180,7 +184,7 @@ Compare this to assembly3_volume which only results in the volume of the top lev
assembly2 = Compound(label='Assembly2', children=[assembly1, Box(1, 1, 1)])
assembly3 = Compound(label='Assembly3', children=[assembly2, Box(1, 1, 1)])
total_volume = sum(part.volume for part in assembly3.solids()) # 3
assembly3_volume = assembly3.volume # 1
assembly3_volume = assembly3.volume # 1
******
pack
@ -269,6 +273,6 @@ If you place the arranged objects into a ``Compound``, you can easily determine
# [bounding box]
print(Compound(xy_pack).bounding_box())
# bbox: 0.0 <= x <= 159.0, 0.0 <= y <= 129.0, -54.0 <= z <= 100.0
print(Compound(z_pack).bounding_box())
# bbox: 0.0 <= x <= 159.0, 0.0 <= y <= 129.0, 0.0 <= z <= 100.0

BIN
docs/assets/AngleIron.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

View file

@ -1,13 +1,13 @@
<?xml version='1.0' encoding='utf-8'?>
<svg width="40.09mm" height="101.09mm" viewBox="-0.01125 -25.01125 10.0225 25.2725" version="1.1" xmlns="http://www.w3.org/2000/svg">
<svg width="100.089998mm" height="102.589998mm" viewBox="-0.0045 -10.0045 10.009 10.259" version="1.1" xmlns="http://www.w3.org/2000/svg">
<g transform="scale(1,-1)" stroke-linecap="round">
<g fill="none" stroke="rgb(0,0,0)" stroke-width="0.0225">
<path d="M 6.0,0.0 A 47.000000000000085,47.000000000000085 180.0 0,0 9.615385,18.076923" />
<g fill="none" stroke="rgb(0,0,0)" stroke-width="0.00900000018">
<path d="M 6.0,0.0 A 11.022002852739636,11.022002852739636 0.0 0,1 1.242,9.069003" />
<circle cx="6.0" cy="0.0" r="0.25" />
</g>
<g fill="none" stroke="rgb(0,0,0)" stroke-width="0.0225" id="dashed" stroke-dasharray="0.27 0.405">
<path d="M 0.0,20.0 A 5.0,5.0 180.0 1,0 2.5,15.669873" />
<line x1="6.0" y1="0.0" x2="6.0" y2="5.0" />
<g fill="none" stroke="rgb(0,0,0)" stroke-width="0.00900000018" id="dashed" stroke-dasharray="0.108 0.162">
<path d="M 0.0,10.0 C 2.605146,7.884615 8.294029,4.391384 10.0,10.0" />
<line x1="6.0" y1="0.0" x2="6.0" y2="1.0" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 680 B

After

Width:  |  Height:  |  Size: 708 B

Before After
Before After

View file

@ -0,0 +1,8 @@
<?xml version='1.0' encoding='utf-8'?>
<svg width="100.089989mm" height="13.093747mm" viewBox="-0.000798 -0.085182 1.001332 0.130994" version="1.1" xmlns="http://www.w3.org/2000/svg">
<g transform="scale(1,-1)" stroke-linecap="round">
<g fill="none" stroke="rgb(0,0,0)" stroke-width="0.0009003885533792664">
<path d="M 1.0,-0.0 C 0.829823,0.035412 0.658159,0.060683 0.48501,0.075813 C 0.403802,0.083052 0.322454,0.085791 0.240967,0.084029 C 0.198485,0.08366 0.156475,0.079149 0.114938,0.070497 C 0.074523,0.05954 0.027058,0.048994 0.001793,0.012613 C -0.0025,0.000458 0.001085,-0.00896 0.012548,-0.01564 C 0.02178,-0.020765 0.031585,-0.024392 0.041962,-0.026521 C 0.062557,-0.030869 0.083358,-0.033834 0.104363,-0.035416 C 0.149789,-0.038322 0.195215,-0.041227 0.24064,-0.044133 C 0.321442,-0.046309 0.402208,-0.045216 0.482939,-0.040853 C 0.655652,-0.03182 0.828005,-0.018202 1.0,-0.0" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 924 B

View file

@ -0,0 +1,12 @@
<?xml version='1.0' encoding='utf-8'?>
<svg width="100.09mm" height="100.09mm" viewBox="-0.0045 -10.0045 10.009 10.009" version="1.1" xmlns="http://www.w3.org/2000/svg">
<g transform="scale(1,-1)" stroke-linecap="round">
<g fill="none" stroke="rgb(0,0,0)" stroke-width="0.008999999999999998">
<path d="M 0.098274,9.997584 A 12.0,12.0 87.18351331597553 0,0 9.497124,4.66264" />
</g>
<g fill="none" stroke="rgb(0,0,0)" stroke-width="0.008999999999999998" id="dashed" stroke-dasharray="0.108 0.162">
<circle cx="7.0" cy="3.0" r="3.0" />
<path d="M -0.0,6.0 A 2.0,2.0 0.0 0,1 0.0,10.0" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 639 B

View file

@ -0,0 +1,12 @@
<?xml version='1.0' encoding='utf-8'?>
<svg width="100.09mm" height="100.09mm" viewBox="-0.0045 -10.0045 10.009 10.009" version="1.1" xmlns="http://www.w3.org/2000/svg">
<g transform="scale(1,-1)" stroke-linecap="round">
<g fill="none" stroke="rgb(0,0,0)" stroke-width="0.009">
<line x1="8.448109" y1="5.627352" x2="0.965406" y2="9.751568" />
</g>
<g fill="none" stroke="rgb(0,0,0)" stroke-width="0.009" id="dashed" stroke-dasharray="0.108 0.162">
<circle cx="7.0" cy="3.0" r="3.0" />
<path d="M -0.0,6.0 A 2.0,2.0 0.0 0,1 0.0,10.0" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 590 B

View file

@ -0,0 +1,12 @@
<?xml version='1.0' encoding='utf-8'?>
<svg width="53.437087mm" height="100.089999mm" viewBox="-3.542734 -5.0072 8.549934 16.0144" version="1.1" xmlns="http://www.w3.org/2000/svg">
<g transform="scale(1,-1)" stroke-linecap="round">
<g fill="none" stroke="rgb(0,0,0)" stroke-width="0.01440000009">
<path d="M 5.0,0.0 C 5.00028,-0.417137 4.985935,-0.83158 4.937625,-1.209787 C 4.890768,-1.590627 4.807318,-1.930241 4.687277,-2.228627 C 4.447554,-2.825457 4.043062,-3.22477 3.531938,-3.510073 C 3.022136,-3.79718 2.414809,-3.986061 1.805109,-4.210727 C 1.192462,-4.429798 0.586549,-4.700437 0.0,-5.0" />
</g>
<g fill="none" stroke="rgb(0,0,0)" stroke-width="0.01440000009" id="dashed" stroke-dasharray="0.1728 0.2592">
<path d="M -3.535534,3.535534 A 5.0,5.0 0.0 0,0 5.0,0.0" />
<path d="M 0.0,-5.0 Q -6.0,-8.0 0.0,-11.0" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 876 B

View file

@ -0,0 +1,13 @@
<?xml version='1.0' encoding='utf-8'?>
<svg width="102.59mm" height="100.09mm" viewBox="-0.0045 -10.0045 10.259 10.009" version="1.1" xmlns="http://www.w3.org/2000/svg">
<g transform="scale(1,-1)" stroke-linecap="round">
<g fill="none" stroke="rgb(0,0,0)" stroke-width="0.009000000000000001">
<path d="M 10.0,3.0 A 10.575383789062535,10.575383789062535 -108.43494882292202 0,0 4.283756,7.578649" />
<circle cx="10.0" cy="3.0" r="0.25" />
</g>
<g fill="none" stroke="rgb(0,0,0)" stroke-width="0.009000000000000001" id="dashed" stroke-dasharray="0.108 0.162">
<path d="M -0.0,0.0 A 5.0,5.0 0.0 0,1 0.0,10.0" />
<line x1="10.0" y1="3.0" x2="9.051317" y2="3.316228" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 725 B

View file

@ -0,0 +1,12 @@
<?xml version='1.0' encoding='utf-8'?>
<svg width="102.59mm" height="100.09mm" viewBox="-0.0045 -10.0045 10.259 10.009" version="1.1" xmlns="http://www.w3.org/2000/svg">
<g transform="scale(1,-1)" stroke-linecap="round">
<g fill="none" stroke="rgb(0,0,0)" stroke-width="0.009000000000000001">
<line x1="10.0" y1="3.0" x2="3.25848" y2="8.792401" />
<circle cx="10.0" cy="3.0" r="0.25" />
</g>
<g fill="none" stroke="rgb(0,0,0)" stroke-width="0.009000000000000001" id="dashed" stroke-dasharray="0.108 0.162">
<path d="M -0.0,0.0 A 5.0,5.0 0.0 0,1 0.0,10.0" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 612 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 524 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View file

@ -0,0 +1,771 @@
<?xml version='1.0' encoding='utf-8'?>
<svg width="287.09mm" height="200.730007mm" viewBox="-143.545 -101.454993 287.09 200.730007" version="1.1" xmlns="http://www.w3.org/2000/svg">
<g transform="scale(1,-1)" stroke-linecap="round">
<g fill="none" stroke="rgb(0,0,0)" stroke-width="0.09" id="Visible">
<line x1="88.539518" y1="76.052448" x2="113.571098" y2="61.600459" />
<path d="M 88.539518,76.052448 A 3.4499999999999997,1.991858428704209 0.0 0,1 83.660482,76.052448" />
<path d="M 113.571098,58.783545 A 3.4499999999999997,1.991858428704209 0.0 0,1 114.58158,60.192002" />
<path d="M 114.58158,60.192002 A 3.4499999999999997,1.991858428704209 0.0 0,1 113.571098,61.600459" />
<line x1="83.660482" y1="76.052448" x2="58.628902" y2="61.600459" />
<line x1="88.539518" y1="44.331556" x2="113.571098" y2="58.783545" />
<path d="M 58.628902,61.600459 A 3.4499999999999997,1.991858428704209 0.0 0,1 57.61842,60.192002" />
<path d="M 57.61842,60.192002 A 3.4499999999999997,1.991858428704209 0.0 0,1 58.628902,58.783545" />
<path d="M 83.660482,44.331556 A 3.4499999999999997,1.991858428704209 0.0 0,1 88.539518,44.331556" />
<line x1="58.628902" y1="58.783545" x2="83.660482" y2="44.331556" />
<path d="M 87.542592,73.900687 A 1.9124999999999999,1.1041823898251593 0.0 0,1 88.0125,74.62562" />
<path d="M 88.0125,74.62562 A 1.9125000000000012,1.10418238982516 0.0 0,1 84.1875,74.62562" />
<path d="M 84.1875,74.62562 A 1.9124999999999999,1.1041823898251593 0.0 0,1 84.657408,73.900687" />
<path d="M 59.747898,59.411227 A 1.9124999999999999,1.1041823898251593 0.0 0,1 63.01274,60.192002" />
<path d="M 63.01274,60.192002 A 1.9125000000000012,1.10418238982516 0.0 0,1 59.18774,60.192002" />
<path d="M 59.18774,60.192002 A 1.9124999999999999,1.1041823898251593 0.0 0,1 59.747898,59.411227" />
<path d="M 109.747419,59.411227 A 1.9124999999999999,1.1041823898251593 0.0 0,1 113.01226,60.192002" />
<path d="M 113.01226,60.192002 A 1.9125000000000012,1.10418238982516 0.0 0,1 109.18726,60.192002" />
<path d="M 109.18726,60.192002 A 1.9124999999999999,1.1041823898251593 0.0 0,1 109.747419,59.411227" />
<path d="M 75.997212,54.359155 A 14.287500000000001,8.24889197104678 0.0 0,1 100.3875,60.192002" />
<path d="M 71.8125,60.192002 A 14.287500000000001,8.24889197104678 0.0 0,1 75.997212,54.359155" />
<path d="M 84.747658,44.977609 A 1.9124999999999999,1.1041823898251593 0.0 0,1 88.0125,45.758384" />
<path d="M 88.0125,45.758384 A 1.9125000000000012,1.10418238982516 0.0 0,1 84.1875,45.758384" />
<path d="M 84.1875,45.758384 A 1.9124999999999999,1.1041823898251593 0.0 0,1 84.747658,44.977609" />
<path d="M 79.667096,39.901041 A 1.875,1.0825317547305484 0.0 0,1 82.318746,39.901041" />
<line x1="62.622287" y1="49.741866" x2="79.667096" y2="39.901041" />
<line x1="82.318746" y1="39.901041" x2="83.44835" y2="40.553218" />
<path d="M 62.622287,49.741866 A 1.875,1.0825317547305484 180.0 0,0 62.073112,50.507332" />
<path d="M 83.44835,40.553218 A 3.75,2.165063509461097 180.0 0,0 84.600538,41.006736" />
<path d="M 87.599462,41.006736 A 3.75,2.165063509461097 180.0 0,0 88.75165,40.553218" />
<line x1="89.881254" y1="39.901041" x2="88.75165" y2="40.553218" />
<path d="M 92.532904,39.901041 A 1.875,1.0825317547305484 180.0 0,0 89.881254,39.901041" />
<line x1="92.532904" y1="39.901041" x2="109.577713" y2="49.741866" />
<path d="M 109.577713,49.741866 A 1.875,1.0825317547305484 0.0 0,1 110.126888,50.507332" />
<path d="M 113.571098,55.844158 A 3.4499999999999997,1.991858428704209 0.0 0,1 114.58158,57.252614" />
<line x1="113.571098" y1="55.844158" x2="109.577713" y2="53.538575" />
<line x1="113.571098" y1="58.783545" x2="113.571098" y2="55.844158" />
<line x1="88.539518" y1="44.331556" x2="88.539518" y2="41.392168" />
<line x1="92.532904" y1="43.69775" x2="88.539518" y2="41.392168" />
<line x1="92.532904" y1="43.69775" x2="92.532904" y2="39.901041" />
<line x1="109.577713" y1="53.538575" x2="109.577713" y2="49.741866" />
<line x1="58.628902" y1="58.783545" x2="58.628902" y2="55.844158" />
<path d="M 57.61842,57.252614 A 3.4499999999999997,1.991858428704209 0.0 0,1 58.628902,55.844158" />
<line x1="83.660482" y1="44.331556" x2="83.660482" y2="41.392168" />
<path d="M 83.660482,41.392168 A 3.4499999999999997,1.991858428704209 0.0 0,1 88.539518,41.392168" />
<line x1="58.628902" y1="55.844158" x2="62.622287" y2="53.538575" />
<line x1="62.622287" y1="53.538575" x2="62.622287" y2="49.741866" />
<line x1="79.667096" y1="43.69775" x2="79.667096" y2="39.901041" />
<line x1="79.667096" y1="43.69775" x2="83.660482" y2="41.392168" />
<path d="M 75.997212,55.33895 A 14.287500000000001,8.24889197104678 0.0 0,1 100.3875,61.171798" />
<path d="M 100.3875,61.171798 A 14.287500000000001,8.24889197104678 0.0 0,1 88.48125,69.305315" />
<path d="M 83.71875,69.305315 A 14.287500000000001,8.24889197104678 0.0 0,1 71.8125,61.171798" />
<path d="M 71.8125,61.171798 A 14.287500000000001,8.24889197104678 0.0 0,1 75.997212,55.33895" />
<path d="M 79.720129,19.110997 A 1.7999999999999998,1.0392304845413265 0.0 0,1 82.265713,19.110997" />
<line x1="82.265713" y1="19.110997" x2="83.395317" y2="19.763174" />
<path d="M 83.395317,19.763174 A 3.8249999999999997,2.2083647796503185 180.0 0,0 88.804683,19.763174" />
<line x1="89.934287" y1="19.110997" x2="88.804683" y2="19.763174" />
<path d="M 92.479871,19.110997 A 1.7999999999999998,1.0392304845413263 -180.0 0,0 89.934287,19.110997" />
<line x1="92.479871" y1="19.110997" x2="109.52468" y2="28.951822" />
<path d="M 109.52468,28.951822 A 1.7999999999999998,1.0392304845413263 -3.895368034302951e-15 0,1 110.051888,29.686669" />
<path d="M 62.67532,28.951822 A 1.7999999999999998,1.0392304845413265 180.0 0,0 62.148112,29.686669" />
<line x1="62.67532" y1="28.951822" x2="79.720129" y2="19.110997" />
<path d="M 79.667096,19.080379 A 1.875,1.0825317547305484 0.0 0,1 82.318746,19.080379" />
<line x1="62.622287" y1="28.921204" x2="79.667096" y2="19.080379" />
<line x1="82.318746" y1="19.080379" x2="83.44835" y2="19.732555" />
<path d="M 62.622287,28.921204 A 1.875,1.0825317547305484 180.0 0,0 62.073112,29.686669" />
<path d="M 62.073112,29.686669 A 1.875,1.0825317547305484 180.0 0,0 62.148112,29.989778" />
<path d="M 83.44835,19.732555 A 3.75,2.165063509461097 180.0 0,0 88.75165,19.732555" />
<line x1="89.881254" y1="19.080379" x2="88.75165" y2="19.732555" />
<path d="M 92.532904,19.080379 A 1.875,1.0825317547305484 180.0 0,0 89.881254,19.080379" />
<line x1="92.532904" y1="19.080379" x2="109.577713" y2="28.921204" />
<path d="M 62.148112,35.886925 A 1.875,1.0825317547305484 0.0 0,1 62.073112,35.583816" />
<path d="M 62.073112,35.583816 A 1.875,1.0825317547305484 0.0 0,1 62.148112,35.280707" />
<path d="M 109.577713,28.921204 A 1.875,1.0825317547305484 0.0 0,1 110.126888,29.686669" />
<path d="M 110.126888,29.686669 A 1.875,1.0825317547305484 0.0 0,1 110.051888,29.989778" />
<path d="M 110.051888,35.886925 A 1.875,1.0825317547305484 180.0 0,0 110.126888,35.583816" />
<path d="M 110.126888,35.583816 A 1.875,1.0825317547305484 180.0 0,0 110.051888,35.280707" />
<path d="M 79.667096,12.344282 A 1.875,1.0825317547305484 0.0 0,1 82.318746,12.344282" />
<line x1="62.622287" y1="22.185107" x2="79.667096" y2="12.344282" />
<line x1="82.318746" y1="12.344282" x2="83.44835" y2="12.996458" />
<path d="M 62.622287,22.185107 A 1.875,1.0825317547305484 180.0 0,0 62.073112,22.950572" />
<path d="M 83.44835,12.996458 A 3.75,2.165063509461097 180.0 0,0 88.75165,12.996458" />
<line x1="89.881254" y1="12.344282" x2="88.75165" y2="12.996458" />
<path d="M 92.532904,12.344282 A 1.875,1.0825317547305484 180.0 0,0 89.881254,12.344282" />
<line x1="92.532904" y1="12.344282" x2="109.577713" y2="22.185107" />
<path d="M 109.577713,22.185107 A 1.875,1.0825317547305484 0.0 0,1 110.126888,22.950572" />
<path d="M 84.416202,62.649146 A 2.3812499999999996,1.3748153285077964 0.0 0,1 86.611629,62.278581" />
<path d="M 86.611629,62.278581 A 2.3812499999999996,1.3748153285077964 0.0 0,1 88.425637,63.325899" />
<line x1="88.425637" y1="63.325899" x2="88.425637" y2="72.511485" />
<path d="M 88.425637,72.511485 A 2.3812499999999996,1.3748153285077964 0.0 0,1 88.48125,72.806874" />
<path d="M 88.48125,72.806874 A 2.3812500000000014,1.3748153285077973 0.0 1,1 83.71875,72.806874" />
<path d="M 83.71875,72.806874 A 2.3812499999999996,1.3748153285077964 0.0 0,1 86.611629,71.464167" />
<line x1="86.611629" y1="62.278581" x2="86.611629" y2="71.464167" />
<line x1="86.611629" y1="62.278581" x2="88.425637" y2="63.325899" />
<line x1="88.425637" y1="72.511485" x2="86.611629" y2="71.464167" />
<line x1="82.318746" y1="42.166819" x2="82.318746" y2="39.901041" />
<line x1="83.44835" y1="41.514643" x2="83.44835" y2="40.553218" />
<line x1="88.75165" y1="41.514643" x2="88.75165" y2="40.553218" />
<line x1="89.881254" y1="42.166819" x2="89.881254" y2="39.901041" />
<line x1="109.577713" y1="53.538575" x2="109.577713" y2="51.272797" />
<line x1="82.265713" y1="39.871601" x2="82.265713" y2="19.110997" />
<line x1="79.720129" y1="39.871601" x2="79.720129" y2="19.110997" />
<line x1="83.395317" y1="40.522599" x2="83.395317" y2="19.763174" />
<line x1="88.804683" y1="40.522599" x2="88.804683" y2="19.763174" />
<line x1="89.934287" y1="39.871601" x2="89.934287" y2="19.110997" />
<line x1="92.479871" y1="39.871601" x2="92.479871" y2="19.110997" />
<line x1="109.52468" y1="49.711248" x2="109.52468" y2="28.951822" />
<line x1="62.67532" y1="49.711248" x2="62.67532" y2="28.951822" />
<line x1="79.667096" y1="19.080379" x2="79.667096" y2="12.344282" />
<line x1="82.318746" y1="19.080379" x2="82.318746" y2="12.344282" />
<line x1="62.622287" y1="28.921204" x2="62.622287" y2="22.185107" />
<line x1="83.44835" y1="19.732555" x2="83.44835" y2="12.996458" />
<line x1="88.75165" y1="19.732555" x2="88.75165" y2="12.996458" />
<line x1="89.881254" y1="19.080379" x2="89.881254" y2="12.344282" />
<line x1="92.532904" y1="19.080379" x2="92.532904" y2="12.344282" />
<line x1="109.577713" y1="28.921204" x2="109.577713" y2="22.185107" />
<line x1="114.58158" y1="57.252614" x2="114.58158" y2="60.192002" />
<line x1="57.61842" y1="57.252614" x2="57.61842" y2="60.192002" />
<line x1="71.8125" y1="61.171798" x2="71.8125" y2="60.192002" />
<line x1="100.3875" y1="61.171798" x2="100.3875" y2="60.192002" />
<line x1="62.073112" y1="50.507332" x2="62.073112" y2="53.855642" />
<line x1="110.126888" y1="50.507332" x2="110.126888" y2="53.855642" />
<line x1="110.051888" y1="29.686669" x2="110.051888" y2="50.204223" />
<line x1="62.148112" y1="29.686669" x2="62.148112" y2="50.204223" />
<line x1="62.073112" y1="22.950572" x2="62.073112" y2="29.686669" />
<line x1="62.073112" y1="29.686669" x2="62.073112" y2="35.583816" />
<line x1="110.126888" y1="22.950572" x2="110.126888" y2="29.686669" />
<line x1="110.126888" y1="29.686669" x2="110.126888" y2="35.583816" />
<line x1="83.71875" y1="72.806874" x2="83.71875" y2="60.192002" />
<line x1="88.48125" y1="72.806874" x2="88.48125" y2="60.192002" />
<line x1="-114.3" y1="26.560002" x2="-114.3" y2="73.760002" />
<path d="M -114.3,26.560002 A 4.6,4.6 0.0 0,1 -109.7,21.960002" />
<path d="M -109.7,78.360002 A 4.6,4.6 0.0 0,1 -114.3,73.760002" />
<line x1="-109.7" y1="21.960002" x2="-62.5" y2="21.960002" />
<line x1="-62.5" y1="78.360002" x2="-109.7" y2="78.360002" />
<path d="M -62.5,21.960002 A 4.6,4.6 0.0 0,1 -57.9,26.560002" />
<path d="M -57.9,73.760002 A 4.6,4.6 0.0 0,1 -62.5,78.360002" />
<line x1="-57.9" y1="26.560002" x2="-57.9" y2="73.760002" />
<circle cx="-109.67" cy="26.590002" r="2.55" />
<circle cx="-62.53" cy="26.590002" r="2.55" />
<circle cx="-109.67" cy="73.730002" r="2.55" />
<circle cx="-62.53" cy="73.730002" r="2.55" />
<circle cx="-86.1" cy="50.160002" r="19.05" />
<path d="M -84.389737,52.835002 A 3.175,3.175 0.0 0,1 -87.810263,52.835002" />
<path d="M -87.810263,52.835002 A 3.175,3.175 122.59284353031869 1,1 -84.389737,52.835002" />
<line x1="-87.810263" y1="52.835002" x2="-84.389737" y2="52.835002" />
<line x1="-114.3" y1="-25.080001" x2="-114.3" y2="-29.880001" />
<line x1="-114.3" y1="-29.880001" x2="-114.3" y2="-36.080001" />
<path d="M -114.3,-25.080001 Q -114.285538,-25.080001 -114.271076,-25.080001 Q -114.227872,-25.080001 -114.184668,-25.080001 Q -114.113266,-25.080001 -114.041863,-25.080001 Q -113.94316,-25.080001 -113.844457,-25.080001 Q -113.719694,-25.080001 -113.594931,-25.080001 Q -113.445678,-25.080001 -113.296425,-25.080001 Q -113.124558,-25.080001 -112.952691,-25.080001 Q -112.760372,-25.080001 -112.568053,-25.080001 Q -112.3577,-25.080001 -112.147348,-25.080001 Q -111.921606,-25.080001 -111.695865,-25.080001 Q -111.457574,-25.080001 -111.219284,-25.080001 Q -110.97144,-25.080001 -110.723596,-25.080001 Q -110.216853,-25.080001 -109.7,-25.080001" />
<line x1="-109.7" y1="-25.080001" x2="-62.5" y2="-25.080001" />
<path d="M -62.5,-25.080001 Q -61.983147,-25.080001 -61.476404,-25.080001 Q -61.22856,-25.080001 -60.980716,-25.080001 Q -60.742426,-25.080001 -60.504135,-25.080001 Q -60.278394,-25.080001 -60.052652,-25.080001 Q -59.8423,-25.080001 -59.631947,-25.080001 Q -59.439628,-25.080001 -59.247309,-25.080001 Q -59.075442,-25.080001 -58.903575,-25.080001 Q -58.754322,-25.080001 -58.605069,-25.080001 Q -58.480306,-25.080001 -58.355543,-25.080001 Q -58.25684,-25.080001 -58.158137,-25.080001 Q -58.086734,-25.080001 -58.015332,-25.080001 Q -57.972128,-25.080001 -57.928924,-25.080001 Q -57.914462,-25.080001 -57.9,-25.080001" />
<line x1="-109.7" y1="-25.080001" x2="-109.7" y2="-29.880001" />
<path d="M -114.3,-29.880001 Q -114.285538,-29.880001 -114.271076,-29.880001 Q -114.227872,-29.880001 -114.184668,-29.880001 Q -114.113266,-29.880001 -114.041863,-29.880001 Q -113.94316,-29.880001 -113.844457,-29.880001 Q -113.719694,-29.880001 -113.594931,-29.880001 Q -113.445678,-29.880001 -113.296425,-29.880001 Q -113.124558,-29.880001 -112.952691,-29.880001 Q -112.760372,-29.880001 -112.568053,-29.880001 Q -112.3577,-29.880001 -112.147348,-29.880001 Q -111.921606,-29.880001 -111.695865,-29.880001 Q -111.457574,-29.880001 -111.219284,-29.880001 Q -110.97144,-29.880001 -110.723596,-29.880001 Q -110.216853,-29.880001 -109.7,-29.880001" />
<line x1="-109.7" y1="-29.880001" x2="-102.17" y2="-29.880001" />
<path d="M -114.3,-36.080001 Q -114.29214,-36.080001 -114.284281,-36.080001 Q -114.2608,-36.080001 -114.23732,-36.080001 Q -114.198514,-36.080001 -114.159708,-36.080001 Q -114.106065,-36.080001 -114.052422,-36.080001 Q -113.984616,-36.080001 -113.91681,-36.080001 Q -113.835695,-36.080001 -113.754579,-36.080001 Q -113.661173,-36.080001 -113.567767,-36.080001 Q -113.463246,-36.080001 -113.358725,-36.080001 Q -113.244402,-36.080001 -113.13008,-36.080001 Q -113.007395,-36.080001 -112.884709,-36.080001 Q -112.755204,-36.080001 -112.625698,-36.080001 Q -112.491,-36.080001 -112.356302,-36.080001 Q -112.080898,-36.080001 -111.8,-36.080001" />
<path d="M -57.9,-36.080001 Q -57.90786,-36.080001 -57.915719,-36.080001 Q -57.9392,-36.080001 -57.96268,-36.080001 Q -58.001486,-36.080001 -58.040292,-36.080001 Q -58.093935,-36.080001 -58.147578,-36.080001 Q -58.215384,-36.080001 -58.28319,-36.080001 Q -58.364305,-36.080001 -58.445421,-36.080001 Q -58.538827,-36.080001 -58.632233,-36.080001 Q -58.736754,-36.080001 -58.841275,-36.080001 Q -58.955598,-36.080001 -59.06992,-36.080001 Q -59.192605,-36.080001 -59.315291,-36.080001 Q -59.444796,-36.080001 -59.574302,-36.080001 Q -59.709,-36.080001 -59.843698,-36.080001 Q -60.119102,-36.080001 -60.4,-36.080001" />
<line x1="-60.4" y1="-36.080001" x2="-62.53" y2="-36.080001" />
<path d="M -67.53,-36.080001 Q -67.514281,-36.080001 -67.498561,-36.080001 Q -67.4516,-36.080001 -67.40464,-36.080001 Q -67.327028,-36.080001 -67.249417,-36.080001 Q -67.14213,-36.080001 -67.034844,-36.080001 Q -66.899233,-36.080001 -66.763621,-36.080001 Q -66.601389,-36.080001 -66.439157,-36.080001 Q -66.252346,-36.080001 -66.065534,-36.080001 Q -65.856491,-36.080001 -65.647449,-36.080001 Q -65.418805,-36.080001 -65.19016,-36.080001 Q -64.94479,-36.080001 -64.699419,-36.080001 Q -64.440407,-36.080001 -64.181395,-36.080001 Q -63.912,-36.080001 -63.642605,-36.080001 Q -63.091797,-36.080001 -62.53,-36.080001" />
<path d="M -70.03,-36.080001 Q -69.890044,-36.080001 -69.750089,-36.080001 Q -69.471736,-36.080001 -69.204302,-36.080001 Q -69.074796,-36.080001 -68.945291,-36.080001 Q -68.822605,-36.080001 -68.69992,-36.080001 Q -68.585598,-36.080001 -68.471275,-36.080001 Q -68.366754,-36.080001 -68.262233,-36.080001 Q -68.168827,-36.080001 -68.075421,-36.080001 Q -67.994305,-36.080001 -67.91319,-36.080001 Q -67.845384,-36.080001 -67.777578,-36.080001 Q -67.723935,-36.080001 -67.670292,-36.080001 Q -67.631486,-36.080001 -67.59268,-36.080001 Q -67.5692,-36.080001 -67.545719,-36.080001 Q -67.53786,-36.080001 -67.53,-36.080001" />
<line x1="-102.17" y1="-36.080001" x2="-70.03" y2="-36.080001" />
<path d="M -102.17,-36.080001 Q -102.309956,-36.080001 -102.449911,-36.080001 Q -102.728264,-36.080001 -102.995698,-36.080001 Q -103.125204,-36.080001 -103.254709,-36.080001 Q -103.377395,-36.080001 -103.50008,-36.080001 Q -103.614402,-36.080001 -103.728725,-36.080001 Q -103.833246,-36.080001 -103.937767,-36.080001 Q -104.031173,-36.080001 -104.124579,-36.080001 Q -104.205695,-36.080001 -104.28681,-36.080001 Q -104.354616,-36.080001 -104.422422,-36.080001 Q -104.476065,-36.080001 -104.529708,-36.080001 Q -104.568514,-36.080001 -104.60732,-36.080001 Q -104.6308,-36.080001 -104.654281,-36.080001 Q -104.66214,-36.080001 -104.67,-36.080001" />
<path d="M -109.67,-36.080001 L -109.110178,-36.080001 L -108.557395,-36.080001 L -108.018605,-36.080001 L -107.500581,-36.080001 L -107.00984,-36.080001 L -106.552551,-36.080001 L -106.134466,-36.080001 L -105.760843,-36.080001 L -105.436379,-36.080001 L -105.165156,-36.080001 L -104.950583,-36.080001 L -104.79536,-36.080001 L -104.701439,-36.080001 L -104.67,-36.080001" />
<line x1="-111.8" y1="-36.080001" x2="-109.67" y2="-36.080001" />
<line x1="-102.17" y1="-29.880001" x2="-102.17" y2="-36.080001" />
<line x1="-70.03" y1="-29.880001" x2="-70.03" y2="-36.080001" />
<line x1="-70.03" y1="-29.880001" x2="-62.5" y2="-29.880001" />
<line x1="-62.5" y1="-25.080001" x2="-62.5" y2="-29.880001" />
<line x1="-57.9" y1="-25.080001" x2="-57.9" y2="-29.880001" />
<path d="M -62.5,-29.880001 Q -61.983147,-29.880001 -61.476404,-29.880001 Q -61.22856,-29.880001 -60.980716,-29.880001 Q -60.742426,-29.880001 -60.504135,-29.880001 Q -60.278394,-29.880001 -60.052652,-29.880001 Q -59.8423,-29.880001 -59.631947,-29.880001 Q -59.439628,-29.880001 -59.247309,-29.880001 Q -59.075442,-29.880001 -58.903575,-29.880001 Q -58.754322,-29.880001 -58.605069,-29.880001 Q -58.480306,-29.880001 -58.355543,-29.880001 Q -58.25684,-29.880001 -58.158137,-29.880001 Q -58.086734,-29.880001 -58.015332,-29.880001 Q -57.972128,-29.880001 -57.928924,-29.880001 Q -57.914462,-29.880001 -57.9,-29.880001" />
<line x1="-57.9" y1="-29.880001" x2="-57.9" y2="-36.080001" />
<line x1="-67.05" y1="-25.080001" x2="-67.05" y2="-23.480001" />
<path d="M -105.15,-23.480001 L -104.672377,-23.480001 L -103.263457,-23.480001 L -100.99389,-23.480001 L -97.977481,-23.480001 L -94.365485,-23.480001 L -90.339024,-23.480001 L -86.1,-23.480001 L -81.860976,-23.480001 L -77.834515,-23.480001 L -74.222519,-23.480001 L -71.20611,-23.480001 L -68.936543,-23.480001 L -67.527623,-23.480001 L -67.05,-23.480001" />
<line x1="-104.67" y1="-29.880001" x2="-104.67" y2="-36.080001" />
<line x1="-67.53" y1="-29.880001" x2="-67.53" y2="-36.080001" />
<line x1="-114.2" y1="-36.080001" x2="-114.2" y2="-70.080001" />
<line x1="-104.57" y1="-36.080001" x2="-104.57" y2="-70.080001" />
<line x1="-67.63" y1="-36.080001" x2="-67.63" y2="-70.080001" />
<line x1="-58.0" y1="-36.080001" x2="-58.0" y2="-70.080001" />
<path d="M -57.9,-70.080001 Q -57.90786,-70.080001 -57.915719,-70.080001 Q -57.9392,-70.080001 -57.96268,-70.080001 Q -58.001486,-70.080001 -58.040292,-70.080001 Q -58.093935,-70.080001 -58.147578,-70.080001 Q -58.215384,-70.080001 -58.28319,-70.080001 Q -58.364305,-70.080001 -58.445421,-70.080001 Q -58.538827,-70.080001 -58.632233,-70.080001 Q -58.736754,-70.080001 -58.841275,-70.080001 Q -58.955598,-70.080001 -59.06992,-70.080001 Q -59.192605,-70.080001 -59.315291,-70.080001 Q -59.444796,-70.080001 -59.574302,-70.080001 Q -59.709,-70.080001 -59.843698,-70.080001 Q -60.119102,-70.080001 -60.4,-70.080001" />
<line x1="-60.4" y1="-70.080001" x2="-62.53" y2="-70.080001" />
<path d="M -67.53,-70.080001 Q -67.514281,-70.080001 -67.498561,-70.080001 Q -67.4516,-70.080001 -67.40464,-70.080001 Q -67.327028,-70.080001 -67.249417,-70.080001 Q -67.14213,-70.080001 -67.034844,-70.080001 Q -66.899233,-70.080001 -66.763621,-70.080001 Q -66.601389,-70.080001 -66.439157,-70.080001 Q -66.252346,-70.080001 -66.065534,-70.080001 Q -65.856491,-70.080001 -65.647449,-70.080001 Q -65.418805,-70.080001 -65.19016,-70.080001 Q -64.94479,-70.080001 -64.699419,-70.080001 Q -64.440407,-70.080001 -64.181395,-70.080001 Q -63.912,-70.080001 -63.642605,-70.080001 Q -63.091797,-70.080001 -62.53,-70.080001" />
<path d="M -70.03,-70.080001 Q -69.890044,-70.080001 -69.750089,-70.080001 Q -69.471736,-70.080001 -69.204302,-70.080001 Q -69.074796,-70.080001 -68.945291,-70.080001 Q -68.822605,-70.080001 -68.69992,-70.080001 Q -68.585598,-70.080001 -68.471275,-70.080001 Q -68.366754,-70.080001 -68.262233,-70.080001 Q -68.168827,-70.080001 -68.075421,-70.080001 Q -67.994305,-70.080001 -67.91319,-70.080001 Q -67.845384,-70.080001 -67.777578,-70.080001 Q -67.723935,-70.080001 -67.670292,-70.080001 Q -67.631486,-70.080001 -67.59268,-70.080001 Q -67.5692,-70.080001 -67.545719,-70.080001 Q -67.53786,-70.080001 -67.53,-70.080001" />
<line x1="-102.17" y1="-70.080001" x2="-70.03" y2="-70.080001" />
<path d="M -102.17,-70.080001 Q -102.309956,-70.080001 -102.449911,-70.080001 Q -102.728264,-70.080001 -102.995698,-70.080001 Q -103.125204,-70.080001 -103.254709,-70.080001 Q -103.377395,-70.080001 -103.50008,-70.080001 Q -103.614402,-70.080001 -103.728725,-70.080001 Q -103.833246,-70.080001 -103.937767,-70.080001 Q -104.031173,-70.080001 -104.124579,-70.080001 Q -104.205695,-70.080001 -104.28681,-70.080001 Q -104.354616,-70.080001 -104.422422,-70.080001 Q -104.476065,-70.080001 -104.529708,-70.080001 Q -104.568514,-70.080001 -104.60732,-70.080001 Q -104.6308,-70.080001 -104.654281,-70.080001 Q -104.66214,-70.080001 -104.67,-70.080001" />
<path d="M -109.67,-70.080001 L -109.110178,-70.080001 L -108.557395,-70.080001 L -108.018605,-70.080001 L -107.500581,-70.080001 L -107.00984,-70.080001 L -106.552551,-70.080001 L -106.134466,-70.080001 L -105.760843,-70.080001 L -105.436379,-70.080001 L -105.165156,-70.080001 L -104.950583,-70.080001 L -104.79536,-70.080001 L -104.701439,-70.080001 L -104.67,-70.080001" />
<line x1="-111.8" y1="-70.080001" x2="-109.67" y2="-70.080001" />
<path d="M -114.3,-70.080001 Q -114.29214,-70.080001 -114.284281,-70.080001 Q -114.2608,-70.080001 -114.23732,-70.080001 Q -114.198514,-70.080001 -114.159708,-70.080001 Q -114.106065,-70.080001 -114.052422,-70.080001 Q -113.984616,-70.080001 -113.91681,-70.080001 Q -113.835695,-70.080001 -113.754579,-70.080001 Q -113.661173,-70.080001 -113.567767,-70.080001 Q -113.463246,-70.080001 -113.358725,-70.080001 Q -113.244402,-70.080001 -113.13008,-70.080001 Q -113.007395,-70.080001 -112.884709,-70.080001 Q -112.755204,-70.080001 -112.625698,-70.080001 Q -112.491,-70.080001 -112.356302,-70.080001 Q -112.080898,-70.080001 -111.8,-70.080001" />
<line x1="-57.9" y1="-70.080001" x2="-57.9" y2="-81.080001" />
<path d="M -57.9,-81.080001 Q -57.90786,-81.080001 -57.915719,-81.080001 Q -57.9392,-81.080001 -57.96268,-81.080001 Q -58.001486,-81.080001 -58.040292,-81.080001 Q -58.093935,-81.080001 -58.147578,-81.080001 Q -58.215384,-81.080001 -58.28319,-81.080001 Q -58.364305,-81.080001 -58.445421,-81.080001 Q -58.538827,-81.080001 -58.632233,-81.080001 Q -58.736754,-81.080001 -58.841275,-81.080001 Q -58.955598,-81.080001 -59.06992,-81.080001 Q -59.192605,-81.080001 -59.315291,-81.080001 Q -59.444796,-81.080001 -59.574302,-81.080001 Q -59.709,-81.080001 -59.843698,-81.080001 Q -60.119102,-81.080001 -60.4,-81.080001" />
<line x1="-60.4" y1="-81.080001" x2="-62.53" y2="-81.080001" />
<path d="M -67.53,-81.080001 Q -67.514281,-81.080001 -67.498561,-81.080001 Q -67.4516,-81.080001 -67.40464,-81.080001 Q -67.327028,-81.080001 -67.249417,-81.080001 Q -67.14213,-81.080001 -67.034844,-81.080001 Q -66.899233,-81.080001 -66.763621,-81.080001 Q -66.601389,-81.080001 -66.439157,-81.080001 Q -66.252346,-81.080001 -66.065534,-81.080001 Q -65.856491,-81.080001 -65.647449,-81.080001 Q -65.418805,-81.080001 -65.19016,-81.080001 Q -64.94479,-81.080001 -64.699419,-81.080001 Q -64.440407,-81.080001 -64.181395,-81.080001 Q -63.912,-81.080001 -63.642605,-81.080001 Q -63.091797,-81.080001 -62.53,-81.080001" />
<line x1="-67.53" y1="-70.080001" x2="-67.53" y2="-81.080001" />
<path d="M -70.03,-81.080001 Q -69.890044,-81.080001 -69.750089,-81.080001 Q -69.471736,-81.080001 -69.204302,-81.080001 Q -69.074796,-81.080001 -68.945291,-81.080001 Q -68.822605,-81.080001 -68.69992,-81.080001 Q -68.585598,-81.080001 -68.471275,-81.080001 Q -68.366754,-81.080001 -68.262233,-81.080001 Q -68.168827,-81.080001 -68.075421,-81.080001 Q -67.994305,-81.080001 -67.91319,-81.080001 Q -67.845384,-81.080001 -67.777578,-81.080001 Q -67.723935,-81.080001 -67.670292,-81.080001 Q -67.631486,-81.080001 -67.59268,-81.080001 Q -67.5692,-81.080001 -67.545719,-81.080001 Q -67.53786,-81.080001 -67.53,-81.080001" />
<line x1="-102.17" y1="-81.080001" x2="-70.03" y2="-81.080001" />
<line x1="-104.67" y1="-70.080001" x2="-104.67" y2="-81.080001" />
<path d="M -102.17,-81.080001 Q -102.309956,-81.080001 -102.449911,-81.080001 Q -102.728264,-81.080001 -102.995698,-81.080001 Q -103.125204,-81.080001 -103.254709,-81.080001 Q -103.377395,-81.080001 -103.50008,-81.080001 Q -103.614402,-81.080001 -103.728725,-81.080001 Q -103.833246,-81.080001 -103.937767,-81.080001 Q -104.031173,-81.080001 -104.124579,-81.080001 Q -104.205695,-81.080001 -104.28681,-81.080001 Q -104.354616,-81.080001 -104.422422,-81.080001 Q -104.476065,-81.080001 -104.529708,-81.080001 Q -104.568514,-81.080001 -104.60732,-81.080001 Q -104.6308,-81.080001 -104.654281,-81.080001 Q -104.66214,-81.080001 -104.67,-81.080001" />
<path d="M -109.67,-81.080001 L -109.110178,-81.080001 L -108.557395,-81.080001 L -108.018605,-81.080001 L -107.500581,-81.080001 L -107.00984,-81.080001 L -106.552551,-81.080001 L -106.134466,-81.080001 L -105.760843,-81.080001 L -105.436379,-81.080001 L -105.165156,-81.080001 L -104.950583,-81.080001 L -104.79536,-81.080001 L -104.701439,-81.080001 L -104.67,-81.080001" />
<line x1="-111.8" y1="-81.080001" x2="-109.67" y2="-81.080001" />
<line x1="-114.3" y1="-70.080001" x2="-114.3" y2="-81.080001" />
<path d="M -114.3,-81.080001 Q -114.29214,-81.080001 -114.284281,-81.080001 Q -114.2608,-81.080001 -114.23732,-81.080001 Q -114.198514,-81.080001 -114.159708,-81.080001 Q -114.106065,-81.080001 -114.052422,-81.080001 Q -113.984616,-81.080001 -113.91681,-81.080001 Q -113.835695,-81.080001 -113.754579,-81.080001 Q -113.661173,-81.080001 -113.567767,-81.080001 Q -113.463246,-81.080001 -113.358725,-81.080001 Q -113.244402,-81.080001 -113.13008,-81.080001 Q -113.007395,-81.080001 -112.884709,-81.080001 Q -112.755204,-81.080001 -112.625698,-81.080001 Q -112.491,-81.080001 -112.356302,-81.080001 Q -112.080898,-81.080001 -111.8,-81.080001" />
<line x1="-82.925" y1="-23.480001" x2="-82.925" y2="-19.480001" />
<path d="M -89.275,-4.480001 L -89.195396,-4.480001 L -88.960576,-4.480001 L -88.582315,-4.480001 L -88.07958,-4.480001 L -87.477581,-4.480001 L -86.806504,-4.480001 L -86.1,-4.480001 L -85.393496,-4.480001 L -84.722419,-4.480001 L -84.12042,-4.480001 L -83.617685,-4.480001 L -83.239424,-4.480001 L -83.004604,-4.480001 L -82.925,-4.480001" />
<line x1="-111.8" y1="-29.880001" x2="-111.8" y2="-36.080001" />
<line x1="-109.67" y1="-29.880001" x2="-109.67" y2="-36.080001" />
<line x1="-60.4" y1="-29.880001" x2="-60.4" y2="-36.080001" />
<line x1="-62.53" y1="-29.880001" x2="-62.53" y2="-36.080001" />
<line x1="-111.8" y1="-36.080001" x2="-111.8" y2="-70.080001" />
<line x1="-109.67" y1="-36.080001" x2="-109.67" y2="-70.080001" />
<line x1="-102.17" y1="-36.080001" x2="-102.17" y2="-70.080001" />
<line x1="-70.03" y1="-36.080001" x2="-70.03" y2="-70.080001" />
<line x1="-62.53" y1="-36.080001" x2="-62.53" y2="-70.080001" />
<line x1="-60.4" y1="-36.080001" x2="-60.4" y2="-70.080001" />
<line x1="-60.4" y1="-70.080001" x2="-60.4" y2="-81.080001" />
<line x1="-62.53" y1="-70.080001" x2="-62.53" y2="-81.080001" />
<line x1="-70.03" y1="-70.080001" x2="-70.03" y2="-81.080001" />
<line x1="-102.17" y1="-70.080001" x2="-102.17" y2="-81.080001" />
<line x1="-109.67" y1="-70.080001" x2="-109.67" y2="-81.080001" />
<line x1="-111.8" y1="-70.080001" x2="-111.8" y2="-81.080001" />
<line x1="-105.15" y1="-23.480001" x2="-105.15" y2="-25.080001" />
<line x1="-89.275" y1="-4.480001" x2="-89.275" y2="-23.480001" />
<line x1="-82.925" y1="-4.480001" x2="-82.925" y2="-19.480001" />
<path d="M -28.2,30.096001 Q -28.185538,30.096001 -28.171076,30.096001 Q -28.127872,30.096001 -28.084668,30.096001 Q -28.013266,30.096001 -27.941863,30.096001 Q -27.84316,30.096001 -27.744457,30.096001 Q -27.619694,30.096001 -27.494931,30.096001 Q -27.345678,30.096001 -27.196425,30.096001 Q -27.024558,30.096001 -26.852691,30.096001 Q -26.660372,30.096001 -26.468053,30.096001 Q -26.2577,30.096001 -26.047348,30.096001 Q -25.821606,30.096001 -25.595865,30.096001 Q -25.357574,30.096001 -25.119284,30.096001 Q -24.87144,30.096001 -24.623596,30.096001 Q -24.116853,30.096001 -23.6,30.096001" />
<path d="M 23.6,30.096001 L 24.115037,30.096001 L 24.623596,30.096001 L 25.119284,30.096001 L 25.595865,30.096001 L 26.047348,30.096001 L 26.468053,30.096001 L 26.852691,30.096001 L 27.196425,30.096001 L 27.494931,30.096001 L 27.744457,30.096001 L 27.941863,30.096001 L 28.084668,30.096001 L 28.171076,30.096001 L 28.2,30.096001" />
<line x1="-23.6" y1="30.096001" x2="23.6" y2="30.096001" />
<path d="M 16.07,19.096001 Q 16.209956,19.096001 16.349911,19.096001 Q 16.628264,19.096001 16.895698,19.096001 Q 17.025204,19.096001 17.154709,19.096001 Q 17.277395,19.096001 17.40008,19.096001 Q 17.514402,19.096001 17.628725,19.096001 Q 17.733246,19.096001 17.837767,19.096001 Q 17.931173,19.096001 18.024579,19.096001 Q 18.105695,19.096001 18.18681,19.096001 Q 18.254616,19.096001 18.322422,19.096001 Q 18.376065,19.096001 18.429708,19.096001 Q 18.468514,19.096001 18.50732,19.096001 Q 18.5308,19.096001 18.554281,19.096001 Q 18.56214,19.096001 18.57,19.096001" />
<line x1="-16.07" y1="19.096001" x2="16.07" y2="19.096001" />
<path d="M -16.07,19.096001 Q -16.209956,19.096001 -16.349911,19.096001 Q -16.628264,19.096001 -16.895698,19.096001 Q -17.025204,19.096001 -17.154709,19.096001 Q -17.277395,19.096001 -17.40008,19.096001 Q -17.514402,19.096001 -17.628725,19.096001 Q -17.733246,19.096001 -17.837767,19.096001 Q -17.931173,19.096001 -18.024579,19.096001 Q -18.105695,19.096001 -18.18681,19.096001 Q -18.254616,19.096001 -18.322422,19.096001 Q -18.376065,19.096001 -18.429708,19.096001 Q -18.468514,19.096001 -18.50732,19.096001 Q -18.5308,19.096001 -18.554281,19.096001 Q -18.56214,19.096001 -18.57,19.096001" />
<path d="M 18.57,19.096001 Q 18.585719,19.096001 18.601439,19.096001 Q 18.6484,19.096001 18.69536,19.096001 Q 18.772972,19.096001 18.850583,19.096001 Q 18.95787,19.096001 19.065156,19.096001 Q 19.200767,19.096001 19.336379,19.096001 Q 19.498611,19.096001 19.660843,19.096001 Q 19.847654,19.096001 20.034466,19.096001 Q 20.243509,19.096001 20.452551,19.096001 Q 20.681195,19.096001 20.90984,19.096001 Q 21.15521,19.096001 21.400581,19.096001 Q 21.659593,19.096001 21.918605,19.096001 Q 22.188,19.096001 22.457395,19.096001 Q 23.008203,19.096001 23.57,19.096001" />
<line x1="25.7" y1="19.096001" x2="23.57" y2="19.096001" />
<path d="M -23.57,19.096001 L -23.010178,19.096001 L -22.457395,19.096001 L -21.918605,19.096001 L -21.400581,19.096001 L -20.90984,19.096001 L -20.452551,19.096001 L -20.034466,19.096001 L -19.660843,19.096001 L -19.336379,19.096001 L -19.065156,19.096001 L -18.850583,19.096001 L -18.69536,19.096001 L -18.601439,19.096001 L -18.57,19.096001" />
<path d="M 28.2,19.096001 Q 28.19214,19.096001 28.184281,19.096001 Q 28.1608,19.096001 28.13732,19.096001 Q 28.098514,19.096001 28.059708,19.096001 Q 28.006065,19.096001 27.952422,19.096001 Q 27.884616,19.096001 27.81681,19.096001 Q 27.735695,19.096001 27.654579,19.096001 Q 27.561173,19.096001 27.467767,19.096001 Q 27.363246,19.096001 27.258725,19.096001 Q 27.144402,19.096001 27.03008,19.096001 Q 26.907395,19.096001 26.784709,19.096001 Q 26.655204,19.096001 26.525698,19.096001 Q 26.391,19.096001 26.256302,19.096001 Q 25.980898,19.096001 25.7,19.096001" />
<line x1="-25.7" y1="19.096001" x2="-23.57" y2="19.096001" />
<path d="M -28.2,19.096001 Q -28.19214,19.096001 -28.184281,19.096001 Q -28.1608,19.096001 -28.13732,19.096001 Q -28.098514,19.096001 -28.059708,19.096001 Q -28.006065,19.096001 -27.952422,19.096001 Q -27.884616,19.096001 -27.81681,19.096001 Q -27.735695,19.096001 -27.654579,19.096001 Q -27.561173,19.096001 -27.467767,19.096001 Q -27.363246,19.096001 -27.258725,19.096001 Q -27.144402,19.096001 -27.03008,19.096001 Q -26.907395,19.096001 -26.784709,19.096001 Q -26.655204,19.096001 -26.525698,19.096001 Q -26.391,19.096001 -26.256302,19.096001 Q -25.980898,19.096001 -25.7,19.096001" />
<line x1="-28.2" y1="25.296001" x2="-28.2" y2="19.096001" />
<line x1="-28.2" y1="30.096001" x2="-28.2" y2="25.296001" />
<line x1="28.2" y1="30.096001" x2="28.2" y2="25.296001" />
<line x1="28.2" y1="25.296001" x2="28.2" y2="19.096001" />
<line x1="-23.6" y1="30.096001" x2="-23.6" y2="25.296001" />
<path d="M -28.2,25.296001 Q -28.185538,25.296001 -28.171076,25.296001 Q -28.127872,25.296001 -28.084668,25.296001 Q -28.013266,25.296001 -27.941863,25.296001 Q -27.84316,25.296001 -27.744457,25.296001 Q -27.619694,25.296001 -27.494931,25.296001 Q -27.345678,25.296001 -27.196425,25.296001 Q -27.024558,25.296001 -26.852691,25.296001 Q -26.660372,25.296001 -26.468053,25.296001 Q -26.2577,25.296001 -26.047348,25.296001 Q -25.821606,25.296001 -25.595865,25.296001 Q -25.357574,25.296001 -25.119284,25.296001 Q -24.87144,25.296001 -24.623596,25.296001 Q -24.116853,25.296001 -23.6,25.296001" />
<line x1="23.6" y1="30.096001" x2="23.6" y2="25.296001" />
<path d="M 23.6,25.296001 L 24.115037,25.296001 L 24.623596,25.296001 L 25.119284,25.296001 L 25.595865,25.296001 L 26.047348,25.296001 L 26.468053,25.296001 L 26.852691,25.296001 L 27.196425,25.296001 L 27.494931,25.296001 L 27.744457,25.296001 L 27.941863,25.296001 L 28.084668,25.296001 L 28.171076,25.296001 L 28.2,25.296001" />
<line x1="-23.6" y1="25.296001" x2="-16.07" y2="25.296001" />
<line x1="-16.07" y1="25.296001" x2="-16.07" y2="19.096001" />
<line x1="16.07" y1="25.296001" x2="16.07" y2="19.096001" />
<line x1="16.07" y1="25.296001" x2="23.6" y2="25.296001" />
<path d="M 0.0,31.696001 L 2.132923,31.696001 L 4.239024,31.696001 L 6.291816,31.696001 L 8.265485,31.696001 L 10.135211,31.696001 L 11.877481,31.696001 L 13.470384,31.696001 L 14.89389,31.696001 L 16.130096,31.696001 L 17.163457,31.696001 L 17.980977,31.696001 L 18.572377,31.696001 L 18.930218,31.696001 L 19.05,31.696001" />
<path d="M -19.05,31.696001 L -18.930218,31.696001 L -18.572377,31.696001 L -17.980977,31.696001 L -17.163457,31.696001 L -16.130096,31.696001 L -14.89389,31.696001 L -13.470384,31.696001 L -11.877481,31.696001 L -10.135211,31.696001 L -8.265485,31.696001 L -6.291816,31.696001 L -4.239024,31.696001 L -2.132923,31.696001 L -0.0,31.696001" />
<line x1="18.57" y1="25.296001" x2="18.57" y2="19.096001" />
<line x1="-18.57" y1="25.296001" x2="-18.57" y2="19.096001" />
<line x1="18.47" y1="19.096001" x2="18.47" y2="-14.903999" />
<line x1="28.1" y1="19.096001" x2="28.1" y2="-14.903999" />
<line x1="-28.1" y1="19.096001" x2="-28.1" y2="-14.903999" />
<line x1="-18.47" y1="19.096001" x2="-18.47" y2="-14.903999" />
<path d="M 16.07,-14.903999 Q 16.209956,-14.903999 16.349911,-14.903999 Q 16.628264,-14.903999 16.895698,-14.903999 Q 17.025204,-14.903999 17.154709,-14.903999 Q 17.277395,-14.903999 17.40008,-14.903999 Q 17.514402,-14.903999 17.628725,-14.903999 Q 17.733246,-14.903999 17.837767,-14.903999 Q 17.931173,-14.903999 18.024579,-14.903999 Q 18.105695,-14.903999 18.18681,-14.903999 Q 18.254616,-14.903999 18.322422,-14.903999 Q 18.376065,-14.903999 18.429708,-14.903999 Q 18.468514,-14.903999 18.50732,-14.903999 Q 18.5308,-14.903999 18.554281,-14.903999 Q 18.56214,-14.903999 18.57,-14.903999" />
<line x1="-16.07" y1="-14.903999" x2="16.07" y2="-14.903999" />
<path d="M -16.07,-14.903999 Q -16.209956,-14.903999 -16.349911,-14.903999 Q -16.628264,-14.903999 -16.895698,-14.903999 Q -17.025204,-14.903999 -17.154709,-14.903999 Q -17.277395,-14.903999 -17.40008,-14.903999 Q -17.514402,-14.903999 -17.628725,-14.903999 Q -17.733246,-14.903999 -17.837767,-14.903999 Q -17.931173,-14.903999 -18.024579,-14.903999 Q -18.105695,-14.903999 -18.18681,-14.903999 Q -18.254616,-14.903999 -18.322422,-14.903999 Q -18.376065,-14.903999 -18.429708,-14.903999 Q -18.468514,-14.903999 -18.50732,-14.903999 Q -18.5308,-14.903999 -18.554281,-14.903999 Q -18.56214,-14.903999 -18.57,-14.903999" />
<path d="M 18.57,-14.903999 Q 18.585719,-14.903999 18.601439,-14.903999 Q 18.6484,-14.903999 18.69536,-14.903999 Q 18.772972,-14.903999 18.850583,-14.903999 Q 18.95787,-14.903999 19.065156,-14.903999 Q 19.200767,-14.903999 19.336379,-14.903999 Q 19.498611,-14.903999 19.660843,-14.903999 Q 19.847654,-14.903999 20.034466,-14.903999 Q 20.243509,-14.903999 20.452551,-14.903999 Q 20.681195,-14.903999 20.90984,-14.903999 Q 21.15521,-14.903999 21.400581,-14.903999 Q 21.659593,-14.903999 21.918605,-14.903999 Q 22.188,-14.903999 22.457395,-14.903999 Q 23.008203,-14.903999 23.57,-14.903999" />
<line x1="25.7" y1="-14.903999" x2="23.57" y2="-14.903999" />
<path d="M -23.57,-14.903999 L -23.010178,-14.903999 L -22.457395,-14.903999 L -21.918605,-14.903999 L -21.400581,-14.903999 L -20.90984,-14.903999 L -20.452551,-14.903999 L -20.034466,-14.903999 L -19.660843,-14.903999 L -19.336379,-14.903999 L -19.065156,-14.903999 L -18.850583,-14.903999 L -18.69536,-14.903999 L -18.601439,-14.903999 L -18.57,-14.903999" />
<path d="M 28.2,-14.903999 Q 28.19214,-14.903999 28.184281,-14.903999 Q 28.1608,-14.903999 28.13732,-14.903999 Q 28.098514,-14.903999 28.059708,-14.903999 Q 28.006065,-14.903999 27.952422,-14.903999 Q 27.884616,-14.903999 27.81681,-14.903999 Q 27.735695,-14.903999 27.654579,-14.903999 Q 27.561173,-14.903999 27.467767,-14.903999 Q 27.363246,-14.903999 27.258725,-14.903999 Q 27.144402,-14.903999 27.03008,-14.903999 Q 26.907395,-14.903999 26.784709,-14.903999 Q 26.655204,-14.903999 26.525698,-14.903999 Q 26.391,-14.903999 26.256302,-14.903999 Q 25.980898,-14.903999 25.7,-14.903999" />
<line x1="-25.7" y1="-14.903999" x2="-23.57" y2="-14.903999" />
<path d="M -28.2,-14.903999 Q -28.19214,-14.903999 -28.184281,-14.903999 Q -28.1608,-14.903999 -28.13732,-14.903999 Q -28.098514,-14.903999 -28.059708,-14.903999 Q -28.006065,-14.903999 -27.952422,-14.903999 Q -27.884616,-14.903999 -27.81681,-14.903999 Q -27.735695,-14.903999 -27.654579,-14.903999 Q -27.561173,-14.903999 -27.467767,-14.903999 Q -27.363246,-14.903999 -27.258725,-14.903999 Q -27.144402,-14.903999 -27.03008,-14.903999 Q -26.907395,-14.903999 -26.784709,-14.903999 Q -26.655204,-14.903999 -26.525698,-14.903999 Q -26.391,-14.903999 -26.256302,-14.903999 Q -25.980898,-14.903999 -25.7,-14.903999" />
<line x1="18.57" y1="-14.903999" x2="18.57" y2="-25.903999" />
<path d="M 16.07,-25.903999 Q 16.209956,-25.903999 16.349911,-25.903999 Q 16.628264,-25.903999 16.895698,-25.903999 Q 17.025204,-25.903999 17.154709,-25.903999 Q 17.277395,-25.903999 17.40008,-25.903999 Q 17.514402,-25.903999 17.628725,-25.903999 Q 17.733246,-25.903999 17.837767,-25.903999 Q 17.931173,-25.903999 18.024579,-25.903999 Q 18.105695,-25.903999 18.18681,-25.903999 Q 18.254616,-25.903999 18.322422,-25.903999 Q 18.376065,-25.903999 18.429708,-25.903999 Q 18.468514,-25.903999 18.50732,-25.903999 Q 18.5308,-25.903999 18.554281,-25.903999 Q 18.56214,-25.903999 18.57,-25.903999" />
<line x1="-16.07" y1="-25.903999" x2="16.07" y2="-25.903999" />
<line x1="-18.57" y1="-14.903999" x2="-18.57" y2="-25.903999" />
<path d="M -16.07,-25.903999 Q -16.209956,-25.903999 -16.349911,-25.903999 Q -16.628264,-25.903999 -16.895698,-25.903999 Q -17.025204,-25.903999 -17.154709,-25.903999 Q -17.277395,-25.903999 -17.40008,-25.903999 Q -17.514402,-25.903999 -17.628725,-25.903999 Q -17.733246,-25.903999 -17.837767,-25.903999 Q -17.931173,-25.903999 -18.024579,-25.903999 Q -18.105695,-25.903999 -18.18681,-25.903999 Q -18.254616,-25.903999 -18.322422,-25.903999 Q -18.376065,-25.903999 -18.429708,-25.903999 Q -18.468514,-25.903999 -18.50732,-25.903999 Q -18.5308,-25.903999 -18.554281,-25.903999 Q -18.56214,-25.903999 -18.57,-25.903999" />
<path d="M 18.57,-25.903999 Q 18.585719,-25.903999 18.601439,-25.903999 Q 18.6484,-25.903999 18.69536,-25.903999 Q 18.772972,-25.903999 18.850583,-25.903999 Q 18.95787,-25.903999 19.065156,-25.903999 Q 19.200767,-25.903999 19.336379,-25.903999 Q 19.498611,-25.903999 19.660843,-25.903999 Q 19.847654,-25.903999 20.034466,-25.903999 Q 20.243509,-25.903999 20.452551,-25.903999 Q 20.681195,-25.903999 20.90984,-25.903999 Q 21.15521,-25.903999 21.400581,-25.903999 Q 21.659593,-25.903999 21.918605,-25.903999 Q 22.188,-25.903999 22.457395,-25.903999 Q 23.008203,-25.903999 23.57,-25.903999" />
<line x1="25.7" y1="-25.903999" x2="23.57" y2="-25.903999" />
<path d="M -23.57,-25.903999 L -23.010178,-25.903999 L -22.457395,-25.903999 L -21.918605,-25.903999 L -21.400581,-25.903999 L -20.90984,-25.903999 L -20.452551,-25.903999 L -20.034466,-25.903999 L -19.660843,-25.903999 L -19.336379,-25.903999 L -19.065156,-25.903999 L -18.850583,-25.903999 L -18.69536,-25.903999 L -18.601439,-25.903999 L -18.57,-25.903999" />
<line x1="28.2" y1="-14.903999" x2="28.2" y2="-25.903999" />
<path d="M 28.2,-25.903999 Q 28.19214,-25.903999 28.184281,-25.903999 Q 28.1608,-25.903999 28.13732,-25.903999 Q 28.098514,-25.903999 28.059708,-25.903999 Q 28.006065,-25.903999 27.952422,-25.903999 Q 27.884616,-25.903999 27.81681,-25.903999 Q 27.735695,-25.903999 27.654579,-25.903999 Q 27.561173,-25.903999 27.467767,-25.903999 Q 27.363246,-25.903999 27.258725,-25.903999 Q 27.144402,-25.903999 27.03008,-25.903999 Q 26.907395,-25.903999 26.784709,-25.903999 Q 26.655204,-25.903999 26.525698,-25.903999 Q 26.391,-25.903999 26.256302,-25.903999 Q 25.980898,-25.903999 25.7,-25.903999" />
<line x1="-25.7" y1="-25.903999" x2="-23.57" y2="-25.903999" />
<line x1="-28.2" y1="-14.903999" x2="-28.2" y2="-25.903999" />
<path d="M -28.2,-25.903999 Q -28.19214,-25.903999 -28.184281,-25.903999 Q -28.1608,-25.903999 -28.13732,-25.903999 Q -28.098514,-25.903999 -28.059708,-25.903999 Q -28.006065,-25.903999 -27.952422,-25.903999 Q -27.884616,-25.903999 -27.81681,-25.903999 Q -27.735695,-25.903999 -27.654579,-25.903999 Q -27.561173,-25.903999 -27.467767,-25.903999 Q -27.363246,-25.903999 -27.258725,-25.903999 Q -27.144402,-25.903999 -27.03008,-25.903999 Q -26.907395,-25.903999 -26.784709,-25.903999 Q -26.655204,-25.903999 -26.525698,-25.903999 Q -26.391,-25.903999 -26.256302,-25.903999 Q -25.980898,-25.903999 -25.7,-25.903999" />
<path d="M 0.0,35.696001 C 0.530549,35.696001 1.058689,35.696001 1.524884,35.696001 C 1.58996,35.696001 1.655037,35.696001 1.720114,35.696001 C 1.782255,35.696001 1.844397,35.696001 1.906538,35.696001 C 1.965426,35.696001 2.024313,35.696001 2.083201,35.696001 C 2.138534,35.696001 2.193866,35.696001 2.249199,35.696001 C 2.300693,35.696001 2.352187,35.696001 2.403681,35.696001 C 2.451074,35.696001 2.498466,35.696001 2.545858,35.696001 C 2.588905,35.696001 2.631953,35.696001 2.675,35.696001" />
<path d="M 2.675,35.696001 C 2.999597,35.696001 3.175154,35.696001 3.175,35.696001" />
<line x1="2.675" y1="35.696001" x2="2.675" y2="50.696001" />
<path d="M -3.175,50.696001 L -3.12154,50.696001 L -2.962961,50.696001 L -2.704603,50.696001 L -2.355167,50.696001 L -1.926419,50.696001 L -1.432798,50.696001 L -0.890926,50.696001 L -0.319053,50.696001 L 0.263565,50.696001 L 0.837307,50.696001 L 1.382852,50.696001 L 1.881829,50.696001 L 2.317435,50.696001 L 2.675,50.696001" />
<line x1="2.675" y1="35.696001" x2="2.675" y2="50.696001" />
<line x1="23.57" y1="25.296001" x2="23.57" y2="19.096001" />
<line x1="25.7" y1="25.296001" x2="25.7" y2="19.096001" />
<line x1="-23.57" y1="25.296001" x2="-23.57" y2="19.096001" />
<line x1="-25.7" y1="25.296001" x2="-25.7" y2="19.096001" />
<line x1="16.07" y1="19.096001" x2="16.07" y2="-14.903999" />
<line x1="23.57" y1="19.096001" x2="23.57" y2="-14.903999" />
<line x1="25.7" y1="19.096001" x2="25.7" y2="-14.903999" />
<line x1="-25.7" y1="19.096001" x2="-25.7" y2="-14.903999" />
<line x1="-23.57" y1="19.096001" x2="-23.57" y2="-14.903999" />
<line x1="-16.07" y1="19.096001" x2="-16.07" y2="-14.903999" />
<line x1="16.07" y1="-14.903999" x2="16.07" y2="-25.903999" />
<line x1="-16.07" y1="-14.903999" x2="-16.07" y2="-25.903999" />
<line x1="23.57" y1="-14.903999" x2="23.57" y2="-25.903999" />
<line x1="25.7" y1="-14.903999" x2="25.7" y2="-25.903999" />
<line x1="-23.57" y1="-14.903999" x2="-23.57" y2="-25.903999" />
<line x1="-25.7" y1="-14.903999" x2="-25.7" y2="-25.903999" />
<line x1="-19.05" y1="31.696001" x2="-19.05" y2="30.096001" />
<line x1="19.05" y1="31.696001" x2="19.05" y2="30.096001" />
<line x1="-3.175" y1="50.696001" x2="-3.175" y2="31.696001" />
<line x1="3.175" y1="35.696001" x2="3.175" y2="31.696001" />
<path d="M 133.5,89.25 L -133.5,89.25 L -133.5,89.0 L -133.75,89.0 L -133.75,-89.0 L -133.5,-89.0 L -133.5,-89.25 L 133.5,-89.25 L 133.5,-89.0 L 133.75,-89.0 L 133.75,89.0 L 133.5,89.0 L 133.5,89.25 M -133.25,88.75 L 133.25,88.75 L 133.25,-88.75 L -133.25,-88.75 L -133.25,88.75" />
<path d="M -89.25,99.0 L -89.25,89.0 L -88.75,89.0 L -88.75,99.0 L -89.25,99.0" />
<path d="M -44.75,99.0 L -44.75,89.0 L -44.25,89.0 L -44.25,99.0 L -44.75,99.0" />
<path d="M -0.25,99.0 L -0.25,89.0 L 0.25,89.0 L 0.25,99.0 L -0.25,99.0" />
<path d="M 44.25,99.0 L 44.25,89.0 L 44.75,89.0 L 44.75,99.0 L 44.25,99.0" />
<path d="M 88.75,99.0 L 88.75,89.0 L 89.25,89.0 L 89.25,99.0 L 88.75,99.0" />
<path d="M 143.5,44.75 L 133.5,44.75 L 133.5,44.25 L 143.5,44.25 L 143.5,44.75" />
<path d="M 143.5,0.25 L 133.5,0.25 L 133.5,-0.25 L 143.5,-0.25 L 143.5,0.25" />
<path d="M 143.5,-44.25 L 133.5,-44.25 L 133.5,-44.75 L 143.5,-44.75 L 143.5,-44.25" />
<path d="M 89.25,-99.0 L 89.25,-89.0 L 88.75,-89.0 L 88.75,-99.0 L 89.25,-99.0" />
<path d="M 44.75,-99.0 L 44.75,-89.0 L 44.25,-89.0 L 44.25,-99.0 L 44.75,-99.0" />
<path d="M 0.25,-99.0 L 0.25,-89.0 L -0.25,-89.0 L -0.25,-99.0 L 0.25,-99.0" />
<path d="M -44.25,-99.0 L -44.25,-89.0 L -44.75,-89.0 L -44.75,-99.0 L -44.25,-99.0" />
<path d="M -88.75,-99.0 L -88.75,-89.0 L -89.25,-89.0 L -89.25,-99.0 L -88.75,-99.0" />
<path d="M -143.5,-44.75 L -133.5,-44.75 L -133.5,-44.25 L -143.5,-44.25 L -143.5,-44.75" />
<path d="M -143.5,-0.25 L -133.5,-0.25 L -133.5,0.25 L -143.5,0.25 L -143.5,-0.25" />
<path d="M -143.5,44.25 L -133.5,44.25 L -133.5,44.75 L -143.5,44.75 L -143.5,44.25" />
<path d="M -141.18999,-64.200001 L -141.18999,-69.250001 L -140.31001,-69.250001 L -140.31001,-62.159994 L -140.88999,-62.159994 Q -141.120003,-62.980014 -141.429997,-63.21001 Q -141.73999,-63.440007 -142.76001,-63.569987 L -142.76001,-64.200001 L -141.18999,-64.200001" />
<path d="M 140.81001,-64.200001 L 140.81001,-69.250001 L 141.68999,-69.250001 L 141.68999,-62.159994 L 141.11001,-62.159994 Q 140.879997,-62.980014 140.570003,-63.21001 Q 140.26001,-63.440007 139.23999,-63.569987 L 139.23999,-64.200001 L 140.81001,-64.200001" />
<path d="M -143.279997,-20.119987 L -142.399984,-20.119987 Q -142.299984,-18.430014 -140.970003,-18.430014 Q -140.370003,-18.430014 -139.970003,-18.81001 Q -139.570003,-19.190007 -139.570003,-19.759994 Q -139.570003,-20.609994 -140.529997,-21.159994 L -141.449984,-21.680014 Q -142.56001,-22.309994 -142.970003,-22.945004 Q -143.379997,-23.580014 -143.43999,-24.750001 L -138.720003,-24.750001 L -138.720003,-23.880014 L -142.449984,-23.880014 Q -142.379997,-23.430014 -142.1,-23.100001 Q -141.820003,-22.769987 -141.170003,-22.419987 L -140.170003,-21.880014 Q -138.670003,-21.059994 -138.670003,-19.740007 Q -138.670003,-18.819987 -139.3,-18.239991 Q -139.929997,-17.659994 -140.93999,-17.659994 Q -143.21001,-17.659994 -143.279997,-20.119987" />
<path d="M 138.720003,-20.119987 L 139.600016,-20.119987 Q 139.700016,-18.430014 141.029997,-18.430014 Q 141.629997,-18.430014 142.029997,-18.81001 Q 142.429997,-19.190007 142.429997,-19.759994 Q 142.429997,-20.609994 141.470003,-21.159994 L 140.550016,-21.680014 Q 139.43999,-22.309994 139.029997,-22.945004 Q 138.620003,-23.580014 138.56001,-24.750001 L 143.279997,-24.750001 L 143.279997,-23.880014 L 139.550016,-23.880014 Q 139.620003,-23.430014 139.9,-23.100001 Q 140.179997,-22.769987 140.829997,-22.419987 L 141.829997,-21.880014 Q 143.329997,-21.059994 143.329997,-19.740007 Q 143.329997,-18.819987 142.7,-18.239991 Q 142.070003,-17.659994 141.06001,-17.659994 Q 138.78999,-17.659994 138.720003,-20.119987" />
<path d="M -142.429997,24.549999 Q -142.41001,25.240006 -142.125,25.654996 Q -141.83999,26.069986 -141.079997,26.069986 Q -140.499984,26.069986 -140.16499,25.744986 Q -139.829997,25.419986 -139.829997,24.859993 Q -139.829997,24.209993 -140.225,23.98999 Q -140.620003,23.769986 -141.570003,23.749999 L -141.570003,22.999999 L -141.46001,22.999999 L -141.08999,23.009993 Q -139.620003,23.009993 -139.620003,21.719986 Q -139.620003,21.049999 -140.009993,20.674999 Q -140.399984,20.299999 -141.08999,20.299999 Q -141.81001,20.299999 -142.170003,20.670003 Q -142.529997,21.040006 -142.579997,21.809993 L -143.46001,21.809993 Q -143.299984,19.519986 -141.120003,19.519986 Q -140.029997,19.519986 -139.375,20.119986 Q -138.720003,20.719986 -138.720003,21.730013 Q -138.720003,22.409993 -139.0,22.804996 Q -139.279997,23.199999 -139.920003,23.419986 Q -138.929997,23.809993 -138.929997,24.890006 Q -138.929997,25.799999 -139.504997,26.320003 Q -140.079997,26.840006 -141.08999,26.840006 Q -143.26001,26.840006 -143.31001,24.549999 L -142.429997,24.549999" />
<path d="M 139.570003,24.549999 Q 139.58999,25.240006 139.875,25.654996 Q 140.16001,26.069986 140.920003,26.069986 Q 141.500016,26.069986 141.83501,25.744986 Q 142.170003,25.419986 142.170003,24.859993 Q 142.170003,24.209993 141.775,23.98999 Q 141.379997,23.769986 140.429997,23.749999 L 140.429997,22.999999 L 140.53999,22.999999 L 140.91001,23.009993 Q 142.379997,23.009993 142.379997,21.719986 Q 142.379997,21.049999 141.990007,20.674999 Q 141.600016,20.299999 140.91001,20.299999 Q 140.18999,20.299999 139.829997,20.670003 Q 139.470003,21.040006 139.420003,21.809993 L 138.53999,21.809993 Q 138.700016,19.519986 140.879997,19.519986 Q 141.970003,19.519986 142.625,20.119986 Q 143.279997,20.719986 143.279997,21.730013 Q 143.279997,22.409993 143.0,22.804996 Q 142.720003,23.199999 142.079997,23.419986 Q 143.070003,23.809993 143.070003,24.890006 Q 143.070003,25.799999 142.495003,26.320003 Q 141.920003,26.840006 140.91001,26.840006 Q 138.73999,26.840006 138.68999,24.549999 L 139.570003,24.549999" />
<path d="M -140.51001,65.949999 L -140.51001,64.249999 L -139.629997,64.249999 L -139.629997,65.949999 L -138.579997,65.949999 L -138.579997,66.740006 L -139.629997,66.740006 L -139.629997,71.340006 L -140.279997,71.340006 L -143.499984,66.880013 L -143.499984,65.949999 L -140.51001,65.949999 M -140.51001,66.740006 L -142.729997,66.740006 L -140.51001,69.840006 L -140.51001,66.740006" />
<path d="M 141.48999,65.949999 L 141.48999,64.249999 L 142.370003,64.249999 L 142.370003,65.949999 L 143.420003,65.949999 L 143.420003,66.740006 L 142.370003,66.740006 L 142.370003,71.340006 L 141.720003,71.340006 L 138.500016,66.880013 L 138.500016,65.949999 L 141.48999,65.949999 M 141.48999,66.740006 L 139.270003,66.740006 L 141.48999,69.840006 L 141.48999,66.740006" />
<path d="M -112.51499,-95.680014 L -109.03501,-95.680014 L -109.03501,-94.859994 L -112.51499,-94.859994 L -112.51499,-92.530014 L -108.554997,-92.530014 L -108.554997,-91.709994 L -113.445003,-91.709994 L -113.445003,-99.000001 L -112.51499,-99.000001 L -112.51499,-95.680014" />
<path d="M -112.51499,97.319986 L -109.03501,97.319986 L -109.03501,98.140006 L -112.51499,98.140006 L -112.51499,100.469986 L -108.554997,100.469986 L -108.554997,101.290006 L -113.445003,101.290006 L -113.445003,93.999999 L -112.51499,93.999999 L -112.51499,97.319986" />
<path d="M -68.184993,-95.680014 L -64.215007,-95.680014 L -64.215007,-94.859994 L -68.184993,-94.859994 L -68.184993,-92.530014 L -64.065007,-92.530014 L -64.065007,-91.709994 L -69.115007,-91.709994 L -69.115007,-99.000001 L -63.884993,-99.000001 L -63.884993,-98.180014 L -68.184993,-98.180014 L -68.184993,-95.680014" />
<path d="M -68.184993,97.319986 L -64.215007,97.319986 L -64.215007,98.140006 L -68.184993,98.140006 L -68.184993,100.469986 L -64.065007,100.469986 L -64.065007,101.290006 L -69.115007,101.290006 L -69.115007,93.999999 L -63.884993,93.999999 L -63.884993,94.819986 L -68.184993,94.819986 L -68.184993,97.319986" />
<path d="M -24.940007,-99.000001 L -22.130013,-99.000001 Q -20.75,-99.000001 -19.954997,-98.025001 Q -19.159993,-97.050001 -19.159993,-95.350001 Q -19.159993,-93.650001 -19.95,-92.679997 Q -20.740007,-91.709994 -22.130013,-91.709994 L -24.940007,-91.709994 L -24.940007,-99.000001 M -24.009993,-98.180014 L -24.009993,-92.530014 L -22.290007,-92.530014 Q -21.209993,-92.530014 -20.65,-93.250001 Q -20.090007,-93.969987 -20.090007,-95.359994 Q -20.090007,-96.740007 -20.65,-97.46001 Q -21.209993,-98.180014 -22.290007,-98.180014 L -24.009993,-98.180014" />
<path d="M -24.940007,93.999999 L -22.130013,93.999999 Q -20.75,93.999999 -19.954997,94.974999 Q -19.159993,95.949999 -19.159993,97.649999 Q -19.159993,99.349999 -19.95,100.320003 Q -20.740007,101.290006 -22.130013,101.290006 L -24.940007,101.290006 L -24.940007,93.999999 M -24.009993,94.819986 L -24.009993,100.469986 L -22.290007,100.469986 Q -21.209993,100.469986 -20.65,99.749999 Q -20.090007,99.030013 -20.090007,97.640006 Q -20.090007,96.259993 -20.65,95.53999 Q -21.209993,94.819986 -22.290007,94.819986 L -24.009993,94.819986" />
<path d="M 25.245003,-93.969987 Q 24.81499,-91.590007 22.43501,-91.590007 Q 21.674984,-91.590007 21.069987,-91.850001 Q 20.46499,-92.109994 20.109993,-92.504997 Q 19.754997,-92.900001 19.51499,-93.429997 Q 19.274984,-93.959994 19.18999,-94.450001 Q 19.104997,-94.940007 19.104997,-95.440007 Q 19.104997,-95.930014 19.18999,-96.41001 Q 19.274984,-96.890007 19.509993,-97.415007 Q 19.745003,-97.940007 20.1,-98.329997 Q 20.454997,-98.719987 21.05,-98.975001 Q 21.645003,-99.230014 22.395003,-99.230014 Q 25.06499,-99.230014 25.395003,-96.340007 L 24.43501,-96.340007 Q 24.26499,-97.400001 23.784993,-97.904997 Q 23.304997,-98.409994 22.404997,-98.409994 Q 21.31499,-98.409994 20.675,-97.604997 Q 20.03501,-96.800001 20.03501,-95.430014 Q 20.03501,-94.030014 20.65,-93.220004 Q 21.26499,-92.409994 22.324984,-92.409994 Q 23.195003,-92.409994 23.665007,-92.800001 Q 24.13501,-93.190007 24.295003,-93.969987 L 25.245003,-93.969987" />
<path d="M 25.245003,99.030013 Q 24.81499,101.409993 22.43501,101.409993 Q 21.674984,101.409993 21.069987,101.149999 Q 20.46499,100.890006 20.109993,100.495003 Q 19.754997,100.099999 19.51499,99.570003 Q 19.274984,99.040006 19.18999,98.549999 Q 19.104997,98.059993 19.104997,97.559993 Q 19.104997,97.069986 19.18999,96.58999 Q 19.274984,96.109993 19.509993,95.584993 Q 19.745003,95.059993 20.1,94.670003 Q 20.454997,94.280013 21.05,94.024999 Q 21.645003,93.769986 22.395003,93.769986 Q 25.06499,93.769986 25.395003,96.659993 L 24.43501,96.659993 Q 24.26499,95.599999 23.784993,95.095003 Q 23.304997,94.590006 22.404997,94.590006 Q 21.31499,94.590006 20.675,95.395003 Q 20.03501,96.199999 20.03501,97.569986 Q 20.03501,98.969986 20.65,99.779996 Q 21.26499,100.590006 22.324984,100.590006 Q 23.195003,100.590006 23.665007,100.199999 Q 24.13501,99.809993 24.295003,99.030013 L 25.245003,99.030013" />
<path d="M 67.520003,-99.000001 Q 68.48999,-99.000001 69.079997,-98.429997 Q 69.670003,-97.859994 69.670003,-96.919987 Q 69.670003,-96.259994 69.354997,-95.839991 Q 69.03999,-95.419987 68.33999,-95.150001 C 69.013319,-94.836676 69.349984,-94.306674 69.349984,-93.559994 C 69.347379,-93.145108 69.227588,-92.75989 68.924984,-92.364991 C 68.774984,-92.168322 68.549984,-92.009989 68.249984,-91.889991 C 67.949984,-91.769993 67.596653,-91.709994 67.18999,-91.709994 L 64.229997,-91.709994 L 64.229997,-99.000001 L 67.520003,-99.000001 M 66.96001,-92.530014 Q 68.420003,-92.530014 68.420003,-93.690007 Q 68.420003,-94.850001 66.96001,-94.850001 L 65.16001,-94.850001 L 65.16001,-92.530014 L 66.96001,-92.530014 M 67.429997,-98.180014 L 65.16001,-98.180014 L 65.16001,-95.669987 L 67.429997,-95.669987 Q 68.06001,-95.669987 68.4,-96.014991 Q 68.73999,-96.359994 68.73999,-96.930014 Q 68.73999,-97.230014 68.63999,-97.490007 Q 68.53999,-97.750001 68.229997,-97.965007 Q 67.920003,-98.180014 67.429997,-98.180014" />
<path d="M 67.520003,93.999999 Q 68.48999,93.999999 69.079997,94.570003 Q 69.670003,95.140006 69.670003,96.080013 Q 69.670003,96.740006 69.354997,97.160009 Q 69.03999,97.580013 68.33999,97.849999 C 69.013319,98.163324 69.349984,98.693326 69.349984,99.440006 C 69.347379,99.854892 69.227588,100.24011 68.924984,100.635009 C 68.774984,100.831678 68.549984,100.990011 68.249984,101.110009 C 67.949984,101.230007 67.596653,101.290006 67.18999,101.290006 L 64.229997,101.290006 L 64.229997,93.999999 L 67.520003,93.999999 M 66.96001,100.469986 Q 68.420003,100.469986 68.420003,99.309993 Q 68.420003,98.149999 66.96001,98.149999 L 65.16001,98.149999 L 65.16001,100.469986 L 66.96001,100.469986 M 67.429997,94.819986 L 65.16001,94.819986 L 65.16001,97.330013 L 67.429997,97.330013 Q 68.06001,97.330013 68.4,96.985009 Q 68.73999,96.640006 68.73999,96.069986 Q 68.73999,95.769986 68.63999,95.509993 Q 68.53999,95.249999 68.229997,95.034993 Q 67.920003,94.819986 67.429997,94.819986" />
<path d="M 112.63999,-96.809994 L 113.38999,-99.000001 L 114.429997,-99.000001 L 111.870003,-91.709994 L 110.670003,-91.709994 L 108.070003,-99.000001 L 109.06001,-99.000001 L 109.829997,-96.809994 L 112.63999,-96.809994 M 112.379997,-96.030014 L 110.06001,-96.030014 L 111.26001,-92.709994 L 112.379997,-96.030014" />
<path d="M 112.63999,96.190006 L 113.38999,93.999999 L 114.429997,93.999999 L 111.870003,101.290006 L 110.670003,101.290006 L 108.070003,93.999999 L 109.06001,93.999999 L 109.829997,96.190006 L 112.63999,96.190006 M 112.379997,96.969986 L 110.06001,96.969986 L 111.26001,100.290006 L 112.379997,96.969986" />
<path d="M -0.25,-89.0 L 0.25,-89.0 L 0.25,-74.416667 L 44.25,-74.416667 L 44.25,-89.0 L 44.75,-89.0 L 44.75,-74.416667 L 88.75,-74.416667 L 88.75,-89.0 L 89.25,-89.0 L 89.25,-74.416667 L 133.5,-74.416667 L 133.5,-73.916667 L 44.75,-73.916667 L 44.75,-59.583333 L 133.5,-59.583333 L 133.5,-59.083333 L 44.75,-59.083333 L 44.75,-44.75 L 133.5,-44.75 L 133.5,-44.25 L 0.0,-44.25 L 0.0,-44.5 L -0.25,-44.5 L -0.25,-89.0 M 0.25,-73.916667 L 0.25,-59.583333 L 44.25,-59.583333 L 44.25,-73.916667 L 0.25,-73.916667 M 0.25,-59.083333 L 0.25,-44.75 L 44.25,-44.75 L 44.25,-59.083333 L 0.25,-59.083333" />
<path d="M 2.0,-49.404997 L 2.936665,-49.404997 Q 3.396669,-49.404997 3.66167,-49.079997 Q 3.926671,-48.754997 3.926671,-48.18833 Q 3.926671,-47.621663 3.663336,-47.298329 Q 3.4,-46.974995 2.936665,-46.974995 L 2.0,-46.974995 L 2.0,-49.404997 M 2.310004,-49.131668 L 2.310004,-47.248334 L 2.883333,-47.248334 C 3.361951,-47.246599 3.618055,-47.575616 3.616667,-48.191661 C 3.618055,-48.802917 3.361951,-49.133751 2.883333,-49.131668 L 2.310004,-49.131668" />
<path d="M 4.563346,-48.298334 L 5.886675,-48.298334 L 5.886675,-48.024995 L 4.563346,-48.024995 L 4.563346,-47.248334 L 5.936675,-47.248334 L 5.936675,-46.974995 L 4.253342,-46.974995 L 4.253342,-49.404997 L 5.99668,-49.404997 L 5.99668,-49.131668 L 4.563346,-49.131668 L 4.563346,-48.298334" />
<path d="M 7.326682,-48.374995 C 7.624461,-48.452772 7.773351,-48.583885 7.773351,-48.768332 C 7.772135,-48.871586 7.745123,-48.957295 7.661681,-49.051666 C 7.580668,-49.14326 7.401029,-49.210064 7.153342,-49.208328 C 7.022237,-49.208328 6.909462,-49.191106 6.815017,-49.156662 C 6.720573,-49.122219 6.649461,-49.076109 6.601682,-49.018332 C 6.505255,-48.901739 6.467546,-48.78715 6.466678,-48.648334 L 6.466678,-48.631668 L 6.173351,-48.631668 C 6.175014,-48.896772 6.271678,-49.109337 6.393343,-49.229997 C 6.455565,-49.291108 6.53001,-49.341108 6.616678,-49.379997 C 6.79175,-49.459337 6.949389,-49.480106 7.133344,-49.481668 C 7.419802,-49.484098 7.661336,-49.404794 7.79668,-49.304997 C 7.865567,-49.253883 7.922233,-49.194437 7.966678,-49.12666 C 8.057303,-48.990237 8.081608,-48.868091 8.083344,-48.73833 C 8.083344,-48.589444 8.038345,-48.461666 7.948345,-48.354997 C 7.858346,-48.248327 7.731124,-48.17277 7.566678,-48.128326 L 6.956684,-47.965001 Q 6.736675,-47.904997 6.64668,-47.824995 Q 6.556684,-47.744992 6.556684,-47.604997 Q 6.556684,-47.421663 6.705013,-47.308328 Q 6.853342,-47.194992 7.100011,-47.194992 Q 7.390017,-47.194992 7.54668,-47.323329 Q 7.703342,-47.451666 7.706684,-47.68833 L 8.000011,-47.68833 Q 7.99668,-47.331668 7.763346,-47.133333 Q 7.530013,-46.934999 7.110015,-46.934999 Q 6.710015,-46.934999 6.478348,-47.126666 Q 6.24668,-47.318332 6.24668,-47.648334 Q 6.24668,-48.091661 6.723351,-48.215001 L 7.326682,-48.374995" />
<path d="M 8.850011,-46.974995 L 8.536675,-46.974995 L 8.536675,-49.404997 L 8.850011,-49.404997 L 8.850011,-46.974995" />
<path d="M 11.133355,-48.461659 C 11.133355,-48.67944 11.061688,-48.85833 10.918354,-48.998329 C 10.77502,-49.138328 10.592242,-49.208328 10.37002,-49.208328 C 10.236686,-49.208328 10.117797,-49.18555 10.013352,-49.139996 C 9.801683,-49.049061 9.689469,-48.90815 9.606684,-48.721663 C 9.525288,-48.533963 9.501412,-48.368255 9.500022,-48.198334 C 9.500022,-47.900555 9.5778,-47.661109 9.733355,-47.479997 C 9.888911,-47.298884 10.095577,-47.208328 10.353353,-47.208328 C 10.537793,-47.208328 10.692792,-47.253328 10.818349,-47.343327 C 10.943906,-47.433326 11.023351,-47.556104 11.056684,-47.711659 L 11.373351,-47.711659 C 11.331127,-47.464994 11.220571,-47.273884 11.041683,-47.13833 C 10.862795,-47.002776 10.634462,-46.934999 10.356684,-46.934999 C 10.178906,-46.934999 10.019463,-46.964442 9.878353,-47.023329 C 9.737243,-47.082216 9.625022,-47.156104 9.541688,-47.244992 C 9.458355,-47.333881 9.388911,-47.437216 9.333355,-47.554997 C 9.219814,-47.791948 9.192448,-48.000272 9.190017,-48.215001 C 9.190017,-48.58833 9.29335,-48.892773 9.500016,-49.128331 C 9.706682,-49.363889 9.974461,-49.481668 10.303353,-49.481668 C 10.625575,-49.481668 10.902243,-49.352776 11.133355,-49.094992 L 11.210015,-49.418332 L 11.406684,-49.418332 L 11.406684,-48.121663 L 10.393349,-48.121663 L 10.393349,-48.394992 L 11.133355,-48.394992 L 11.133355,-48.461659" />
<path d="M 13.706684,-46.974995 L 13.413346,-46.974995 L 13.413346,-48.961659 L 12.143349,-46.974995 L 11.806684,-46.974995 L 11.806684,-49.404997 L 12.100022,-49.404997 L 12.100022,-47.434999 L 13.356684,-49.404997 L 13.706684,-49.404997 L 13.706684,-46.974995" />
<path d="M 14.483355,-48.298334 L 15.806684,-48.298334 L 15.806684,-48.024995 L 14.483355,-48.024995 L 14.483355,-47.248334 L 15.856684,-47.248334 L 15.856684,-46.974995 L 14.173351,-46.974995 L 14.173351,-49.404997 L 15.916688,-49.404997 L 15.916688,-49.131668 L 14.483355,-49.131668 L 14.483355,-48.298334" />
<path d="M 16.283355,-49.404997 L 17.22002,-49.404997 Q 17.680024,-49.404997 17.945025,-49.079997 Q 18.210026,-48.754997 18.210026,-48.18833 Q 18.210026,-47.621663 17.946691,-47.298329 Q 17.683355,-46.974995 17.22002,-46.974995 L 16.283355,-46.974995 L 16.283355,-49.404997 M 16.593359,-49.131668 L 16.593359,-47.248334 L 17.166688,-47.248334 C 17.645306,-47.246599 17.90141,-47.575616 17.900022,-48.191661 C 17.90141,-48.802917 17.645306,-49.133751 17.166688,-49.131668 L 16.593359,-49.131668" />
<path d="M 20.540028,-49.404997 Q 20.863357,-49.404997 21.060026,-49.214996 Q 21.256695,-49.024995 21.256695,-48.711659 Q 21.256695,-48.491661 21.151693,-48.35166 Q 21.046691,-48.211659 20.813357,-48.121663 C 21.0378,-48.017222 21.150022,-47.840554 21.150022,-47.591661 C 21.149154,-47.453366 21.109223,-47.32496 21.008355,-47.193327 C 20.910612,-47.064471 20.698875,-46.972738 20.430024,-46.974995 L 19.443359,-46.974995 L 19.443359,-49.404997 L 20.540028,-49.404997 M 20.353364,-47.248334 Q 20.840028,-47.248334 20.840028,-47.634999 Q 20.840028,-48.021663 20.353364,-48.021663 L 19.753364,-48.021663 L 19.753364,-47.248334 L 20.353364,-47.248334 M 20.510026,-49.131668 L 19.753364,-49.131668 L 19.753364,-48.294992 L 20.510026,-48.294992 Q 20.72003,-48.294992 20.833361,-48.409993 Q 20.946691,-48.524995 20.946691,-48.715001 Q 20.946691,-48.815001 20.913357,-48.901666 Q 20.880024,-48.98833 20.776693,-49.059999 Q 20.673362,-49.131668 20.510026,-49.131668" />
<path d="M 22.603364,-48.451666 L 23.516699,-46.974995 L 23.146691,-46.974995 L 22.453364,-48.158328 L 21.740028,-46.974995 L 21.356695,-46.974995 L 22.293359,-48.451666 L 22.293359,-49.404997 L 22.603364,-49.404997 L 22.603364,-48.451666" />
<path d="M 24.180035,-49.058328 L 23.833366,-49.058328 L 23.833366,-49.404997 L 24.180035,-49.404997 L 24.180035,-49.058328" />
<path d="M 24.180035,-47.658328 L 23.833366,-47.658328 L 23.833366,-48.004997 L 24.180035,-48.004997 L 24.180035,-47.658328" />
<path d="M 2.0,-53.744995 L 2.0,-57.389998 L 2.375,-57.389998 L 2.375,-57.055005 Q 2.670003,-57.505005 3.204997,-57.505005 Q 3.725,-57.505005 4.035002,-57.1125 Q 4.345003,-56.719995 4.345003,-56.069995 Q 4.345003,-55.435002 4.045003,-55.064998 Q 3.745003,-54.694995 3.225,-54.694995 Q 2.7,-54.694995 2.415007,-55.124992 L 2.415007,-53.744995 L 2.0,-53.744995 M 3.145003,-55.085002 Q 3.495003,-55.085002 3.702498,-55.364998 Q 3.909994,-55.644995 3.909994,-56.114998 Q 3.909994,-56.560002 3.697494,-56.8375 Q 3.484994,-57.114998 3.145003,-57.114998 Q 2.815007,-57.114998 2.615007,-56.8375 Q 2.415007,-56.560002 2.415007,-56.1 Q 2.415007,-55.639998 2.615007,-55.3625 Q 2.815007,-55.085002 3.145003,-55.085002" />
<path d="M 6.854997,-57.389998 L 6.854997,-54.769995 L 6.440007,-54.769995 L 6.440007,-56.255005 Q 6.440007,-56.655005 6.245003,-56.897502 Q 6.05,-57.139998 5.725,-57.139998 Q 5.475,-57.139998 5.330005,-57.0 Q 5.18501,-56.860002 5.18501,-56.624992 L 5.18501,-54.769995 L 4.770003,-54.769995 L 4.770003,-56.789998 Q 4.770003,-57.114998 4.997502,-57.310002 Q 5.225,-57.505005 5.604997,-57.505005 Q 5.895003,-57.505005 6.095003,-57.395003 Q 6.295003,-57.285002 6.479997,-57.024992 L 6.479997,-57.389998 L 6.854997,-57.389998" />
<path d="M 8.904981,-53.744995 L 8.484977,-53.744995 L 8.484977,-57.389998 L 8.904981,-57.389998 L 8.904981,-53.744995" />
<path d="M 11.699984,-53.744995 L 11.284977,-53.744995 L 11.284977,-55.099992 Q 11.019987,-54.694995 10.479981,-54.694995 Q 9.969987,-54.694995 9.662484,-55.072493 Q 9.354981,-55.449992 9.354981,-56.074992 Q 9.354981,-56.739998 9.659977,-57.122502 Q 9.964974,-57.505005 10.494987,-57.505005 Q 10.764974,-57.505005 10.962476,-57.397502 Q 11.159977,-57.289998 11.329981,-57.044995 L 11.329981,-57.389998 L 11.699984,-57.389998 L 11.699984,-53.744995 M 10.549984,-55.085002 Q 10.884977,-55.085002 11.084977,-55.3625 Q 11.284977,-55.639998 11.284977,-56.110002 Q 11.284977,-56.564998 11.084977,-56.839998 Q 10.884977,-57.114998 10.554981,-57.114998 Q 10.209977,-57.114998 9.999976,-56.8375 Q 9.789974,-56.560002 9.789974,-56.099992 Q 9.789974,-55.644995 9.999976,-55.364998 Q 10.209977,-55.085002 10.549984,-55.085002" />
<path d="M 13.294987,-54.864998 L 13.294987,-57.389998 L 13.734977,-57.389998 L 13.734977,-53.844995 L 13.444987,-53.844995 Q 13.329981,-54.255005 13.174984,-54.370003 Q 13.019987,-54.485002 12.509977,-54.549992 L 12.509977,-54.864998 L 13.294987,-54.864998" />
<path d="M 15.029981,-55.074992 L 15.469987,-55.074992 Q 15.519987,-54.230005 16.184977,-54.230005 Q 16.484977,-54.230005 16.684977,-54.420003 Q 16.884977,-54.610002 16.884977,-54.894995 Q 16.884977,-55.319995 16.404981,-55.594995 L 15.944987,-55.855005 Q 15.389974,-56.169995 15.184977,-56.4875 Q 14.979981,-56.805005 14.949984,-57.389998 L 17.309977,-57.389998 L 17.309977,-56.955005 L 15.444987,-56.955005 Q 15.479981,-56.730005 15.619979,-56.564998 Q 15.759977,-56.399992 16.084977,-56.224992 L 16.584977,-55.955005 Q 17.334977,-55.544995 17.334977,-54.885002 Q 17.334977,-54.424992 17.019979,-54.134993 Q 16.704981,-53.844995 16.199984,-53.844995 Q 15.064974,-53.844995 15.029981,-55.074992" />
<path d="M 18.234977,-54.989998 Q 18.244971,-54.644995 18.387476,-54.4375 Q 18.529981,-54.230005 18.909977,-54.230005 Q 19.199984,-54.230005 19.367481,-54.392505 Q 19.534977,-54.555005 19.534977,-54.835002 Q 19.534977,-55.160002 19.337476,-55.270003 Q 19.139974,-55.380005 18.664974,-55.389998 L 18.664974,-55.764998 L 18.719971,-55.764998 L 18.904981,-55.760002 Q 19.639974,-55.760002 19.639974,-56.405005 Q 19.639974,-56.739998 19.444979,-56.927498 Q 19.249984,-57.114998 18.904981,-57.114998 Q 18.544971,-57.114998 18.364974,-56.929997 Q 18.184977,-56.744995 18.159977,-56.360002 L 17.719971,-56.360002 Q 17.799984,-57.505005 18.889974,-57.505005 Q 19.434977,-57.505005 19.762476,-57.205005 Q 20.089974,-56.905005 20.089974,-56.399992 Q 20.089974,-56.060002 19.949976,-55.8625 Q 19.809977,-55.664998 19.489974,-55.555005 Q 19.984977,-55.360002 19.984977,-54.819995 Q 19.984977,-54.364998 19.697477,-54.104997 Q 19.409977,-53.844995 18.904981,-53.844995 Q 17.819971,-53.844995 17.794971,-54.989998 L 18.234977,-54.989998" />
<path d="M 22.834977,-53.744995 L 22.419971,-53.744995 L 22.419971,-55.099992 Q 22.154981,-54.694995 21.614974,-54.694995 Q 21.104981,-54.694995 20.797477,-55.072493 Q 20.489974,-55.449992 20.489974,-56.074992 Q 20.489974,-56.739998 20.794971,-57.122502 Q 21.099968,-57.505005 21.629981,-57.505005 Q 21.899968,-57.505005 22.097469,-57.397502 Q 22.294971,-57.289998 22.464974,-57.044995 L 22.464974,-57.389998 L 22.834977,-57.389998 L 22.834977,-53.744995 M 21.684977,-55.085002 Q 22.019971,-55.085002 22.219971,-55.3625 Q 22.419971,-55.639998 22.419971,-56.110002 Q 22.419971,-56.564998 22.219971,-56.839998 Q 22.019971,-57.114998 21.689974,-57.114998 Q 21.344971,-57.114998 21.134969,-56.8375 Q 20.924968,-56.560002 20.924968,-56.099992 Q 20.924968,-55.644995 21.134969,-55.364998 Q 21.344971,-55.085002 21.684977,-55.085002" />
<path d="M 7.86499,-54.769995 L 7.449984,-54.769995 L 7.449984,-57.389998 L 7.86499,-57.389998 L 7.86499,-54.769995" />
<path d="M 7.86499,-53.744995 L 7.444987,-53.744995 L 7.444987,-54.269995 L 7.86499,-54.269995 L 7.86499,-53.744995" />
<path d="M 2.0,-64.256668 L 2.936665,-64.256668 Q 3.396669,-64.256668 3.66167,-63.931668 Q 3.926671,-63.606668 3.926671,-63.040001 Q 3.926671,-62.473334 3.663336,-62.15 Q 3.4,-61.826666 2.936665,-61.826666 L 2.0,-61.826666 L 2.0,-64.256668 M 2.310004,-63.983339 L 2.310004,-62.100005 L 2.883333,-62.100005 C 3.361951,-62.09827 3.618055,-62.427287 3.616667,-63.043332 C 3.618055,-63.654588 3.361951,-63.985422 2.883333,-63.983339 L 2.310004,-63.983339" />
<path d="M 5.566667,-63.526666 L 5.816667,-64.256668 L 6.163336,-64.256668 L 5.310004,-61.826666 L 4.910004,-61.826666 L 4.043338,-64.256668 L 4.37334,-64.256668 L 4.630002,-63.526666 L 5.566667,-63.526666 M 5.480002,-63.266672 L 4.706673,-63.266672 L 5.106673,-62.159999 L 5.480002,-63.266672" />
<path d="M 7.356673,-62.100005 L 8.153331,-62.100005 L 8.153331,-61.826666 L 6.246669,-61.826666 L 6.246669,-62.100005 L 7.046669,-62.100005 L 7.046669,-64.256668 L 7.356673,-64.256668 L 7.356673,-62.100005" />
<path d="M 8.769998,-63.150005 L 10.093327,-63.150005 L 10.093327,-62.876666 L 8.769998,-62.876666 L 8.769998,-62.100005 L 10.143327,-62.100005 L 10.143327,-61.826666 L 8.459994,-61.826666 L 8.459994,-64.256668 L 10.203331,-64.256668 L 10.203331,-63.983339 L 8.769998,-63.983339 L 8.769998,-63.150005" />
<path d="M 10.916667,-62.509999 L 10.569998,-62.509999 L 10.569998,-62.856668 L 10.916667,-62.856668 L 10.916667,-62.509999" />
<path d="M 10.916667,-63.909999 L 10.569998,-63.909999 L 10.569998,-64.256668 L 10.916667,-64.256668 L 10.916667,-63.909999" />
<path d="M 2.079997,-69.858325 L 2.520003,-69.858325 Q 2.570003,-69.013338 3.234994,-69.013338 Q 3.534994,-69.013338 3.734994,-69.203337 Q 3.934994,-69.393335 3.934994,-69.678328 Q 3.934994,-70.103328 3.454997,-70.378328 L 2.995003,-70.638338 Q 2.43999,-70.953328 2.234994,-71.270833 Q 2.029997,-71.588338 2.0,-72.173332 L 4.359994,-72.173332 L 4.359994,-71.738338 L 2.495003,-71.738338 Q 2.529997,-71.513338 2.669995,-71.348332 Q 2.809994,-71.183325 3.134994,-71.008325 L 3.634994,-70.738338 Q 4.384994,-70.328328 4.384994,-69.668335 Q 4.384994,-69.208325 4.069995,-68.918327 Q 3.754997,-68.628328 3.25,-68.628328 Q 2.11499,-68.628328 2.079997,-69.858325" />
<path d="M 4.825,-70.458325 Q 4.825,-71.353328 5.119995,-71.820833 Q 5.41499,-72.288338 5.984994,-72.288338 Q 6.55,-72.288338 6.847494,-71.825838 Q 7.144987,-71.363338 7.144987,-70.488338 Q 7.144987,-68.628328 5.984994,-68.628328 Q 5.819987,-68.628328 5.672494,-68.668327 Q 5.525,-68.708325 5.364998,-68.828328 Q 5.204997,-68.948332 5.089998,-69.140828 Q 4.975,-69.333325 4.9,-69.673332 Q 4.825,-70.013338 4.825,-70.458325 M 6.694987,-70.448332 Q 6.694987,-71.203328 6.519987,-71.56333 Q 6.344987,-71.923332 5.975,-71.923332 Q 5.275,-71.923332 5.275,-70.463338 Q 5.275,-69.018335 5.984994,-69.018335 Q 6.694987,-69.018335 6.694987,-70.448332" />
<path d="M 7.63999,-69.858325 L 8.079997,-69.858325 Q 8.129997,-69.013338 8.794987,-69.013338 Q 9.094987,-69.013338 9.294987,-69.203337 Q 9.494987,-69.393335 9.494987,-69.678328 Q 9.494987,-70.103328 9.01499,-70.378328 L 8.554997,-70.638338 Q 7.999984,-70.953328 7.794987,-71.270833 Q 7.58999,-71.588338 7.559994,-72.173332 L 9.919987,-72.173332 L 9.919987,-71.738338 L 8.054997,-71.738338 Q 8.08999,-71.513338 8.229989,-71.348332 Q 8.369987,-71.183325 8.694987,-71.008325 L 9.194987,-70.738338 Q 9.944987,-70.328328 9.944987,-69.668335 Q 9.944987,-69.208325 9.629989,-68.918327 Q 9.31499,-68.628328 8.809994,-68.628328 Q 7.674984,-68.628328 7.63999,-69.858325" />
<path d="M 12.549984,-68.628328 L 10.719987,-68.628328 L 10.454981,-70.558325 L 10.859994,-70.558325 Q 11.01499,-70.373332 11.159985,-70.30083 Q 11.304981,-70.228328 11.509994,-70.228328 Q 11.86499,-70.228328 12.074992,-70.455827 Q 12.284994,-70.683325 12.284994,-71.078328 Q 12.284994,-71.458325 12.07749,-71.678328 Q 11.869987,-71.898332 11.509994,-71.898332 Q 10.93999,-71.898332 10.784994,-71.303328 L 10.344987,-71.303328 Q 10.359994,-71.388338 10.369987,-71.433333 Q 10.379981,-71.478328 10.422485,-71.595833 Q 10.46499,-71.713338 10.512492,-71.790837 Q 10.559994,-71.868335 10.65249,-71.970833 Q 10.744987,-72.073332 10.857487,-72.135832 Q 10.969987,-72.198332 11.142489,-72.243335 Q 11.31499,-72.288338 11.519987,-72.288338 Q 12.054981,-72.288338 12.394987,-71.933333 Q 12.734994,-71.578328 12.734994,-71.018335 Q 12.734994,-70.493335 12.417489,-70.165837 Q 12.099984,-69.838338 11.58999,-69.838338 Q 11.229981,-69.838338 10.934994,-70.053328 L 11.074984,-69.063338 L 12.549984,-69.063338 L 12.549984,-68.628328" />
<path d="M 14.384977,-70.613338 L 13.179981,-70.613338 L 13.179981,-70.973332 L 14.384977,-70.973332 L 14.384977,-70.613338" />
<path d="M 14.829997,-70.458325 Q 14.829997,-71.353328 15.124992,-71.820833 Q 15.419987,-72.288338 15.98999,-72.288338 Q 16.554997,-72.288338 16.85249,-71.825838 Q 17.149984,-71.363338 17.149984,-70.488338 Q 17.149984,-68.628328 15.98999,-68.628328 Q 15.824984,-68.628328 15.67749,-68.668327 Q 15.529997,-68.708325 15.369995,-68.828328 Q 15.209994,-68.948332 15.094995,-69.140828 Q 14.979997,-69.333325 14.904997,-69.673332 Q 14.829997,-70.013338 14.829997,-70.458325 M 16.699984,-70.448332 Q 16.699984,-71.203328 16.524984,-71.56333 Q 16.349984,-71.923332 15.979997,-71.923332 Q 15.279997,-71.923332 15.279997,-70.463338 Q 15.279997,-69.018335 15.98999,-69.018335 Q 16.699984,-69.018335 16.699984,-70.448332" />
<path d="M 19.774984,-68.628328 L 17.944987,-68.628328 L 17.679981,-70.558325 L 18.084994,-70.558325 Q 18.23999,-70.373332 18.384985,-70.30083 Q 18.529981,-70.228328 18.734994,-70.228328 Q 19.08999,-70.228328 19.299992,-70.455827 Q 19.509994,-70.683325 19.509994,-71.078328 Q 19.509994,-71.458325 19.30249,-71.678328 Q 19.094987,-71.898332 18.734994,-71.898332 Q 18.16499,-71.898332 18.009994,-71.303328 L 17.569987,-71.303328 Q 17.584994,-71.388338 17.594987,-71.433333 Q 17.604981,-71.478328 17.647485,-71.595833 Q 17.68999,-71.713338 17.737492,-71.790837 Q 17.784994,-71.868335 17.87749,-71.970833 Q 17.969987,-72.073332 18.082487,-72.135832 Q 18.194987,-72.198332 18.367489,-72.243335 Q 18.53999,-72.288338 18.744987,-72.288338 Q 19.279981,-72.288338 19.619987,-71.933333 Q 19.959994,-71.578328 19.959994,-71.018335 Q 19.959994,-70.493335 19.642489,-70.165837 Q 19.324984,-69.838338 18.81499,-69.838338 Q 18.454981,-69.838338 18.159994,-70.053328 L 18.299984,-69.063338 L 19.774984,-69.063338 L 19.774984,-68.628328" />
<path d="M 21.609977,-70.613338 L 20.404981,-70.613338 L 20.404981,-70.973332 L 21.609977,-70.973332 L 21.609977,-70.613338" />
<path d="M 22.08999,-69.858325 L 22.529997,-69.858325 Q 22.579997,-69.013338 23.244987,-69.013338 Q 23.544987,-69.013338 23.744987,-69.203337 Q 23.944987,-69.393335 23.944987,-69.678328 Q 23.944987,-70.103328 23.46499,-70.378328 L 23.004997,-70.638338 Q 22.449984,-70.953328 22.244987,-71.270833 Q 22.03999,-71.588338 22.009994,-72.173332 L 24.369987,-72.173332 L 24.369987,-71.738338 L 22.504997,-71.738338 Q 22.53999,-71.513338 22.679989,-71.348332 Q 22.819987,-71.183325 23.144987,-71.008325 L 23.644987,-70.738338 Q 24.394987,-70.328328 24.394987,-69.668335 Q 24.394987,-69.208325 24.079989,-68.918327 Q 23.76499,-68.628328 23.259994,-68.628328 Q 22.124984,-68.628328 22.08999,-69.858325" />
<path d="M 25.294987,-69.773332 Q 25.304981,-69.428328 25.447485,-69.220833 Q 25.58999,-69.013338 25.969987,-69.013338 Q 26.259994,-69.013338 26.42749,-69.175838 Q 26.594987,-69.338338 26.594987,-69.618335 Q 26.594987,-69.943335 26.397485,-70.053337 Q 26.199984,-70.163338 25.724984,-70.173332 L 25.724984,-70.548332 L 25.779981,-70.548332 L 25.96499,-70.543335 Q 26.699984,-70.543335 26.699984,-71.188338 Q 26.699984,-71.523332 26.504989,-71.710832 Q 26.309994,-71.898332 25.96499,-71.898332 Q 25.604981,-71.898332 25.424984,-71.71333 Q 25.244987,-71.528328 25.219987,-71.143335 L 24.779981,-71.143335 Q 24.859994,-72.288338 25.949984,-72.288338 Q 26.494987,-72.288338 26.822485,-71.988338 Q 27.149984,-71.688338 27.149984,-71.183325 Q 27.149984,-70.843335 27.009985,-70.645833 Q 26.869987,-70.448332 26.549984,-70.338338 Q 27.044987,-70.143335 27.044987,-69.603328 Q 27.044987,-69.148332 26.757487,-68.88833 Q 26.469987,-68.628328 25.96499,-68.628328 Q 24.879981,-68.628328 24.854981,-69.773332 L 25.294987,-69.773332" />
<path d="M 3.153331,-78.041661 C 3.45111,-78.119439 3.6,-78.250552 3.6,-78.434999 C 3.598784,-78.538252 3.571772,-78.623962 3.48833,-78.718332 C 3.407317,-78.809926 3.227678,-78.876731 2.979991,-78.874995 C 2.848886,-78.874995 2.736111,-78.857773 2.641667,-78.823329 C 2.547222,-78.788885 2.47611,-78.742775 2.428331,-78.684999 C 2.331905,-78.568405 2.294195,-78.453817 2.293327,-78.315001 L 2.293327,-78.298334 L 2.0,-78.298334 C 2.002221,-78.431668 2.023886,-78.549445 2.064996,-78.651666 C 2.147736,-78.859059 2.26947,-78.965934 2.443327,-79.046663 C 2.618399,-79.126003 2.776038,-79.146772 2.959994,-79.148334 C 3.246451,-79.150765 3.487986,-79.071461 3.623329,-78.971663 C 3.692217,-78.920549 3.748882,-78.861104 3.793327,-78.793327 C 3.883952,-78.656904 3.908257,-78.534757 3.909994,-78.404997 C 3.909994,-78.256111 3.864994,-78.128333 3.774995,-78.021663 C 3.684995,-77.914994 3.557773,-77.839437 3.393327,-77.794992 L 2.783333,-77.631668 Q 2.563325,-77.571663 2.473329,-77.491661 Q 2.383333,-77.411659 2.383333,-77.271663 Q 2.383333,-77.08833 2.531662,-76.974995 Q 2.679991,-76.861659 2.92666,-76.861659 Q 3.216667,-76.861659 3.373329,-76.989996 Q 3.529991,-77.118332 3.533333,-77.354997 L 3.82666,-77.354997 Q 3.823329,-76.998334 3.589996,-76.8 Q 3.356662,-76.601666 2.936665,-76.601666 Q 2.536665,-76.601666 2.304997,-76.793332 Q 2.073329,-76.984999 2.073329,-77.315001 Q 2.073329,-77.758328 2.55,-77.881668 L 3.153331,-78.041661" />
<path d="M 6.209994,-77.394992 C 6.114435,-76.866108 5.802214,-76.601666 5.273329,-76.601666 C 5.104434,-76.601666 4.952765,-76.630554 4.818321,-76.68833 C 4.683878,-76.746106 4.577212,-76.818884 4.498324,-76.906662 C 4.419436,-76.994441 4.353324,-77.097219 4.299989,-77.214996 C 4.190888,-77.452285 4.165756,-77.661041 4.163325,-77.884999 C 4.165583,-78.10469 4.191617,-78.308089 4.298324,-78.543332 C 4.350548,-78.659999 4.416104,-78.761664 4.494993,-78.848329 C 4.573881,-78.934993 4.679436,-79.006661 4.811659,-79.06333 C 4.943882,-79.12 5.093327,-79.148334 5.259994,-79.148334 C 5.853324,-79.148334 6.186657,-78.827223 6.259994,-78.184999 L 5.939996,-78.184999 C 5.902214,-78.420553 5.82999,-78.594441 5.723324,-78.706662 C 5.616658,-78.818884 5.463325,-78.874995 5.263325,-78.874995 C 5.021101,-78.874995 4.828879,-78.78555 4.686659,-78.606662 C 4.544439,-78.427774 4.473329,-78.186109 4.473329,-77.881668 C 4.473329,-77.570557 4.541661,-77.325 4.678326,-77.144998 C 4.81499,-76.964996 5.0011,-76.874995 5.236654,-76.874995 C 5.626455,-76.874993 5.819093,-77.048336 5.893327,-77.394992 L 6.209994,-77.394992" />
<path d="M 7.899989,-78.341661 L 8.149989,-79.071663 L 8.496658,-79.071663 L 7.643327,-76.641661 L 7.243327,-76.641661 L 6.37666,-79.071663 L 6.706662,-79.071663 L 6.963325,-78.341661 L 7.899989,-78.341661 M 7.813325,-78.081668 L 7.039996,-78.081668 L 7.439996,-76.974995 L 7.813325,-78.081668" />
<path d="M 9.039996,-76.641661 L 8.729991,-76.641661 L 8.729991,-79.071663 L 10.239996,-79.071663 L 10.239996,-78.798334 L 9.039996,-78.798334 L 9.039996,-76.641661" />
<path d="M 10.833333,-77.965001 L 12.156662,-77.965001 L 12.156662,-77.691661 L 10.833333,-77.691661 L 10.833333,-76.915001 L 12.206662,-76.915001 L 12.206662,-76.641661 L 10.523329,-76.641661 L 10.523329,-79.071663 L 12.266667,-79.071663 L 12.266667,-78.798334 L 10.833333,-78.798334 L 10.833333,-77.965001" />
<path d="M 12.980002,-77.324995 L 12.633333,-77.324995 L 12.633333,-77.671663 L 12.980002,-77.671663 L 12.980002,-77.324995" />
<path d="M 12.980002,-78.724995 L 12.633333,-78.724995 L 12.633333,-79.071663 L 12.980002,-79.071663 L 12.980002,-78.724995" />
<path d="M 2.78501,-84.539168 L 2.78501,-87.064168 L 3.225,-87.064168 L 3.225,-83.519165 L 2.93501,-83.519165 Q 2.820003,-83.929175 2.665007,-84.044173 Q 2.51001,-84.159172 2.0,-84.224162 L 2.0,-84.539168 L 2.78501,-84.539168" />
<path d="M 6.815007,-84.539168 L 6.815007,-87.064168 L 7.254997,-87.064168 L 7.254997,-83.519165 L 6.965007,-83.519165 Q 6.85,-83.929175 6.695003,-84.044173 Q 6.540007,-84.159172 6.029997,-84.224162 L 6.029997,-84.539168 L 6.815007,-84.539168" />
<path d="M 5.190007,-86.544165 L 4.670003,-86.544165 L 4.670003,-87.064168 L 5.190007,-87.064168 L 5.190007,-86.544165" />
<path d="M 5.190007,-84.444165 L 4.670003,-84.444165 L 4.670003,-84.964168 L 5.190007,-84.964168 L 5.190007,-84.444165" />
<path d="M 52.2,-47.24165 L 51.319987,-47.24165 L 51.319987,-53.201644 L 47.509993,-47.24165 L 46.5,-47.24165 L 46.5,-54.531657 L 47.380013,-54.531657 L 47.380013,-48.621663 L 51.15,-54.531657 L 52.2,-54.531657 L 52.2,-47.24165" />
<path d="M 54.069987,-52.19165 L 57.930013,-52.19165 Q 57.930013,-49.14165 55.6,-49.14165 Q 54.509993,-49.14165 53.854997,-49.91665 Q 53.2,-50.69165 53.2,-51.981657 Q 53.2,-53.271663 53.840007,-54.016667 Q 54.480013,-54.76167 55.580013,-54.76167 Q 56.480013,-54.76167 57.070003,-54.281657 Q 57.659993,-53.801644 57.819987,-52.94165 L 56.980013,-52.94165 Q 56.630013,-53.99165 55.609993,-53.99165 Q 54.9,-53.99165 54.495003,-53.50166 Q 54.090007,-53.01167 54.069987,-52.19165 M 57.040007,-51.51167 L 54.090007,-51.51167 Q 54.140007,-50.781657 54.55,-50.346663 Q 54.959993,-49.91167 55.58999,-49.91167 Q 56.219987,-49.91167 56.629997,-50.371663 Q 57.040007,-50.831657 57.040007,-51.51167" />
<path d="M 58.75,-49.29165 L 58.75,-54.531657 L 59.590007,-54.531657 L 59.590007,-51.24165 Q 59.590007,-50.671663 59.95,-50.271663 Q 60.309993,-49.871663 60.819987,-49.871663 Q 61.280013,-49.871663 61.53501,-50.146663 Q 61.790007,-50.421663 61.790007,-50.921663 L 61.790007,-54.531657 L 62.630013,-54.531657 L 62.630013,-51.24165 Q 62.630013,-50.671663 62.990007,-50.271663 Q 63.35,-49.871663 63.859993,-49.871663 Q 64.319987,-49.871663 64.575,-50.146663 Q 64.830013,-50.421663 64.830013,-50.921663 L 64.830013,-54.531657 L 65.669987,-54.531657 L 65.669987,-50.601644 Q 65.669987,-49.89165 65.275,-49.51665 Q 64.880013,-49.14165 64.15,-49.14165 Q 63.630013,-49.14165 63.270003,-49.321647 Q 62.909993,-49.501644 62.540007,-49.94165 Q 62.1,-49.14165 61.130013,-49.14165 Q 60.609993,-49.14165 60.234993,-49.35166 Q 59.859993,-49.56167 59.519987,-50.031657 L 59.519987,-49.29165 L 58.75,-49.29165" />
<path d="M 66.75,-50.84165 L 67.589974,-50.84165 Q 67.639974,-50.36167 67.939974,-50.13667 Q 68.239974,-49.91167 68.819987,-49.91167 Q 69.37998,-49.91167 69.684977,-50.11167 Q 69.989974,-50.31167 69.989974,-50.69165 L 69.989974,-50.91167 Q 69.989974,-51.171663 69.799984,-51.30166 Q 69.609993,-51.431657 69.119987,-51.49165 Q 68.759993,-51.54165 68.619987,-51.561654 Q 68.47998,-51.581657 68.17998,-51.631657 Q 67.87998,-51.681657 67.759977,-51.71665 Q 67.639974,-51.751644 67.414974,-51.826644 Q 67.189974,-51.901644 67.094987,-51.981657 Q 67.0,-52.06167 66.859993,-52.18667 Q 66.719987,-52.31167 66.66499,-52.456657 Q 66.609993,-52.601644 66.56499,-52.79165 Q 66.519987,-52.981657 66.519987,-53.21167 Q 66.519987,-53.921663 66.984993,-54.341667 Q 67.45,-54.76167 68.239974,-54.76167 Q 69.17998,-54.76167 70.019987,-53.99165 Q 70.069987,-54.39165 70.274984,-54.57666 Q 70.47998,-54.76167 70.87998,-54.76167 Q 71.1,-54.76167 71.45,-54.671663 L 71.45,-54.04165 Q 71.359993,-54.06167 71.269987,-54.06167 Q 70.819987,-54.06167 70.819987,-53.651644 L 70.819987,-50.571663 Q 70.819987,-49.871663 70.319987,-49.506657 Q 69.819987,-49.14165 68.85,-49.14165 Q 66.809993,-49.14165 66.75,-50.84165 M 69.989974,-52.881657 Q 69.989974,-53.301644 69.549984,-53.66665 Q 69.109993,-54.031657 68.419987,-54.031657 Q 67.92998,-54.031657 67.659977,-53.811654 Q 67.389974,-53.59165 67.389974,-53.19165 Q 67.389974,-52.79165 67.689974,-52.56665 Q 67.989974,-52.34165 68.359977,-52.281657 Q 68.72998,-52.221663 69.234977,-52.141667 Q 69.739974,-52.06167 69.989974,-51.94165 L 69.989974,-52.881657" />
<path d="M 74.65,-49.901644 L 75.530013,-49.901644 Q 75.630013,-48.21167 76.959993,-48.21167 Q 77.559993,-48.21167 77.959993,-48.591667 Q 78.359993,-48.971663 78.359993,-49.54165 Q 78.359993,-50.39165 77.4,-50.94165 L 76.480013,-51.46167 Q 75.369987,-52.09165 74.959993,-52.72666 Q 74.55,-53.36167 74.490007,-54.531657 L 79.209993,-54.531657 L 79.209993,-53.66167 L 75.480013,-53.66167 Q 75.55,-53.21167 75.829997,-52.881657 Q 76.109993,-52.551644 76.759993,-52.201644 L 77.759993,-51.66167 Q 79.259993,-50.84165 79.259993,-49.521663 Q 79.259993,-48.601644 78.629997,-48.021647 Q 78.0,-47.44165 76.990007,-47.44165 Q 74.719987,-47.44165 74.65,-49.901644" />
<path d="M 81.059993,-49.731657 Q 81.07998,-49.04165 81.36499,-48.62666 Q 81.65,-48.21167 82.409993,-48.21167 Q 82.990007,-48.21167 83.325,-48.53667 Q 83.659993,-48.86167 83.659993,-49.421663 Q 83.659993,-50.071663 83.26499,-50.291667 Q 82.869987,-50.51167 81.919987,-50.531657 L 81.919987,-51.281657 L 82.02998,-51.281657 L 82.4,-51.271663 Q 83.869987,-51.271663 83.869987,-52.56167 Q 83.869987,-53.231657 83.479997,-53.606657 Q 83.090007,-53.981657 82.4,-53.981657 Q 81.67998,-53.981657 81.319987,-53.611654 Q 80.959993,-53.24165 80.909993,-52.471663 L 80.02998,-52.471663 Q 80.190007,-54.76167 82.369987,-54.76167 Q 83.459993,-54.76167 84.11499,-54.16167 Q 84.769987,-53.56167 84.769987,-52.551644 Q 84.769987,-51.871663 84.48999,-51.47666 Q 84.209993,-51.081657 83.569987,-50.86167 Q 84.559993,-50.471663 84.559993,-49.39165 Q 84.559993,-48.481657 83.984993,-47.961654 Q 83.409993,-47.44165 82.4,-47.44165 Q 80.22998,-47.44165 80.17998,-49.731657 L 81.059993,-49.731657" />
<path d="M 91.709993,-51.44165 Q 93.05,-51.79165 93.05,-52.621663 Q 93.05,-52.851644 92.975,-53.056657 Q 92.9,-53.26167 92.71499,-53.471663 Q 92.52998,-53.681657 92.13999,-53.811654 Q 91.75,-53.94165 91.189974,-53.94165 Q 90.6,-53.94165 90.175,-53.786654 Q 89.75,-53.631657 89.534993,-53.371663 Q 89.319987,-53.11167 89.224984,-52.841667 Q 89.12998,-52.571663 89.12998,-52.26167 L 89.12998,-52.21167 L 88.25,-52.21167 Q 88.259993,-52.81167 88.444987,-53.271663 Q 88.62998,-53.731657 88.909977,-54.006657 Q 89.189974,-54.281657 89.57998,-54.456657 Q 89.969987,-54.631657 90.344987,-54.696663 Q 90.719987,-54.76167 91.12998,-54.76167 Q 91.77998,-54.76167 92.294987,-54.61167 Q 92.809993,-54.46167 93.119987,-54.231657 Q 93.42998,-54.001644 93.62998,-53.696647 Q 93.82998,-53.39165 93.90498,-53.106657 Q 93.97998,-52.821663 93.97998,-52.531657 Q 93.97998,-51.86167 93.574984,-51.381657 Q 93.169987,-50.901644 92.42998,-50.701644 L 90.6,-50.21167 Q 89.939974,-50.031657 89.669987,-49.79165 Q 89.4,-49.551644 89.4,-49.131657 Q 89.4,-48.581657 89.844987,-48.24165 Q 90.289974,-47.901644 91.02998,-47.901644 Q 91.9,-47.901644 92.369987,-48.286654 Q 92.839974,-48.671663 92.85,-49.381657 L 93.72998,-49.381657 Q 93.719987,-48.31167 93.019987,-47.716667 Q 92.319987,-47.121663 91.059993,-47.121663 Q 89.859993,-47.121663 89.16499,-47.696663 Q 88.469987,-48.271663 88.469987,-49.26167 Q 88.469987,-50.59165 89.9,-50.96167 L 91.709993,-51.44165" />
<path d="M 96.989974,-49.29165 L 96.12998,-49.29165 L 96.12998,-47.851644 L 95.299967,-47.851644 L 95.299967,-49.29165 L 94.589974,-49.29165 L 94.589974,-49.971663 L 95.299967,-49.971663 L 95.299967,-53.931657 Q 95.299967,-54.331657 95.559977,-54.546663 Q 95.819987,-54.76167 96.309961,-54.76167 Q 96.599967,-54.76167 96.989974,-54.69165 L 96.989974,-53.99165 Q 96.839974,-54.031657 96.589974,-54.031657 Q 96.319987,-54.031657 96.224984,-53.936654 Q 96.12998,-53.84165 96.12998,-53.56167 L 96.12998,-49.971663 L 96.989974,-49.971663 L 96.989974,-49.29165" />
<path d="M 98.259961,-52.19165 L 102.119987,-52.19165 Q 102.119987,-49.14165 99.789974,-49.14165 Q 98.699967,-49.14165 98.044971,-49.91665 Q 97.389974,-50.69165 97.389974,-51.981657 Q 97.389974,-53.271663 98.02998,-54.016667 Q 98.669987,-54.76167 99.769987,-54.76167 Q 100.669987,-54.76167 101.259977,-54.281657 Q 101.849967,-53.801644 102.009961,-52.94165 L 101.169987,-52.94165 Q 100.819987,-53.99165 99.799967,-53.99165 Q 99.089974,-53.99165 98.684977,-53.50166 Q 98.27998,-53.01167 98.259961,-52.19165 M 101.22998,-51.51167 L 98.27998,-51.51167 Q 98.32998,-50.781657 98.739974,-50.346663 Q 99.149967,-49.91167 99.779964,-49.91167 Q 100.409961,-49.91167 100.819971,-50.371663 Q 101.22998,-50.831657 101.22998,-51.51167" />
<path d="M 103.019987,-56.71167 L 103.859993,-56.71167 L 103.859993,-53.981657 Q 104.5,-54.76167 105.469987,-54.76167 Q 106.47998,-54.76167 107.094987,-54.006657 Q 107.709993,-53.251644 107.709993,-52.001644 Q 107.709993,-50.681657 107.104997,-49.911654 Q 106.5,-49.14165 105.459993,-49.14165 Q 104.37998,-49.14165 103.789974,-50.081657 L 103.789974,-49.29165 L 103.019987,-49.29165 L 103.019987,-56.71167 M 105.319987,-49.921663 Q 106.009993,-49.921663 106.424984,-50.481657 Q 106.839974,-51.04165 106.839974,-51.981657 Q 106.839974,-52.871663 106.419987,-53.42666 Q 106.0,-53.981657 105.319987,-53.981657 Q 104.659993,-53.981657 104.259993,-53.42666 Q 103.859993,-52.871663 103.859993,-51.95166 Q 103.859993,-51.031657 104.259993,-50.47666 Q 104.659993,-49.921663 105.319987,-49.921663" />
<path d="M 108.590007,-56.71167 L 109.430013,-56.71167 L 109.430013,-53.981657 Q 110.07002,-54.76167 111.040007,-54.76167 Q 112.05,-54.76167 112.665007,-54.006657 Q 113.280013,-53.251644 113.280013,-52.001644 Q 113.280013,-50.681657 112.675016,-49.911654 Q 112.07002,-49.14165 111.030013,-49.14165 Q 109.95,-49.14165 109.359993,-50.081657 L 109.359993,-49.29165 L 108.590007,-49.29165 L 108.590007,-56.71167 M 110.890007,-49.921663 Q 111.580013,-49.921663 111.995003,-50.481657 Q 112.409993,-51.04165 112.409993,-51.981657 Q 112.409993,-52.871663 111.990007,-53.42666 Q 111.57002,-53.981657 110.890007,-53.981657 Q 110.230013,-53.981657 109.830013,-53.42666 Q 109.430013,-52.871663 109.430013,-51.95166 Q 109.430013,-51.031657 109.830013,-50.47666 Q 110.230013,-49.921663 110.890007,-49.921663" />
<path d="M 114.75,-52.19165 L 118.610026,-52.19165 Q 118.610026,-49.14165 116.280013,-49.14165 Q 115.190007,-49.14165 114.53501,-49.91665 Q 113.880013,-50.69165 113.880013,-51.981657 Q 113.880013,-53.271663 114.52002,-54.016667 Q 115.160026,-54.76167 116.260026,-54.76167 Q 117.160026,-54.76167 117.750016,-54.281657 Q 118.340007,-53.801644 118.5,-52.94165 L 117.660026,-52.94165 Q 117.310026,-53.99165 116.290007,-53.99165 Q 115.580013,-53.99165 115.175016,-53.50166 Q 114.77002,-53.01167 114.75,-52.19165 M 117.72002,-51.51167 L 114.77002,-51.51167 Q 114.82002,-50.781657 115.230013,-50.346663 Q 115.640007,-49.91167 116.270003,-49.91167 Q 116.9,-49.91167 117.31001,-50.371663 Q 117.72002,-50.831657 117.72002,-51.51167" />
<path d="M 122.010026,-50.021663 L 122.010026,-49.171663 Q 121.800033,-49.14165 121.690039,-49.14165 Q 121.290039,-49.14165 120.955046,-49.396647 Q 120.620052,-49.651644 120.260026,-50.24165 L 120.260026,-49.29165 L 119.490039,-49.29165 L 119.490039,-54.531657 L 120.330046,-54.531657 L 120.330046,-51.81167 Q 120.330046,-50.781657 120.750049,-50.411654 Q 121.170052,-50.04165 122.010026,-50.021663" />
<path d="M 51.169987,-62.98999 L 51.169987,-68.11001 Q 51.169987,-68.849984 50.669987,-69.269987 Q 50.169987,-69.68999 49.290007,-69.68999 Q 48.440007,-69.68999 47.93501,-69.294987 Q 47.430013,-68.899984 47.430013,-68.11001 L 47.430013,-62.98999 L 46.5,-62.98999 L 46.5,-68.11001 Q 46.5,-69.220003 47.245003,-69.865007 Q 47.990007,-70.51001 49.290007,-70.51001 Q 50.569987,-70.51001 51.334994,-69.86001 Q 52.1,-69.21001 52.1,-68.11001 L 52.1,-62.98999 L 51.169987,-62.98999" />
<path d="M 53.5,-65.03999 L 53.5,-70.279997 L 54.340007,-70.279997 L 54.340007,-67.38999 Q 54.340007,-66.58999 54.729997,-66.104997 Q 55.119987,-65.620003 55.759994,-65.620003 Q 56.259994,-65.620003 56.55,-65.9 Q 56.840007,-66.179997 56.840007,-66.649984 L 56.840007,-70.279997 L 57.669987,-70.279997 L 57.669987,-66.320003 Q 57.669987,-65.670003 57.219987,-65.279997 Q 56.769987,-64.88999 56.009994,-64.88999 Q 55.430013,-64.88999 55.025,-65.129997 Q 54.619987,-65.370003 54.269987,-65.920003 L 54.269987,-65.03999 L 53.5,-65.03999" />
<path d="M 62.889974,-65.03999 L 62.029981,-65.03999 L 62.029981,-63.599984 L 61.199968,-63.599984 L 61.199968,-65.03999 L 60.489974,-65.03999 L 60.489974,-65.720003 L 61.199968,-65.720003 L 61.199968,-69.679997 Q 61.199968,-70.079997 61.459977,-70.295003 Q 61.719987,-70.51001 62.209961,-70.51001 Q 62.499968,-70.51001 62.889974,-70.43999 L 62.889974,-69.73999 Q 62.739974,-69.779997 62.489974,-69.779997 Q 62.219987,-69.779997 62.124984,-69.684993 Q 62.029981,-69.58999 62.029981,-69.31001 L 62.029981,-65.720003 L 62.889974,-65.720003 L 62.889974,-65.03999" />
<path d="M 64.259961,-68.720003 L 63.379981,-68.720003 Q 63.439974,-70.51001 65.469987,-70.51001 Q 66.459961,-70.51001 67.044971,-70.06001 Q 67.629981,-69.61001 67.629981,-68.849984 Q 67.629981,-68.270003 67.279981,-67.925 Q 66.929981,-67.579997 66.149968,-67.38999 L 65.349968,-67.199984 Q 64.839974,-67.079997 64.609977,-66.904997 Q 64.379981,-66.729997 64.379981,-66.449984 Q 64.379981,-66.08999 64.679981,-65.875 Q 64.979981,-65.66001 65.489974,-65.66001 Q 66.509961,-65.66001 66.539974,-66.499984 L 67.419987,-66.499984 Q 67.409961,-65.729997 66.919971,-65.309993 Q 66.429981,-64.88999 65.519971,-64.88999 Q 64.609961,-64.88999 64.059961,-65.325 Q 63.509961,-65.76001 63.509961,-66.48999 Q 63.509961,-67.11001 63.874968,-67.445003 Q 64.239974,-67.779997 65.169987,-67.999984 L 65.949968,-68.18999 Q 66.379981,-68.28999 66.569971,-68.459993 Q 66.759961,-68.629997 66.759961,-68.920003 Q 66.759961,-69.28999 66.424968,-69.51499 Q 66.089974,-69.73999 65.539974,-69.73999 Q 64.849968,-69.73999 64.584977,-69.46499 Q 64.319987,-69.18999 64.259961,-68.720003" />
<path d="M 73.569987,-65.03999 L 73.569987,-70.279997 L 74.409994,-70.279997 L 74.409994,-66.98999 Q 74.409994,-66.420003 74.769987,-66.020003 Q 75.129981,-65.620003 75.639974,-65.620003 Q 76.1,-65.620003 76.354997,-65.895003 Q 76.609994,-66.170003 76.609994,-66.670003 L 76.609994,-70.279997 L 77.45,-70.279997 L 77.45,-66.98999 Q 77.45,-66.420003 77.809994,-66.020003 Q 78.169987,-65.620003 78.679981,-65.620003 Q 79.139974,-65.620003 79.394987,-65.895003 Q 79.65,-66.170003 79.65,-66.670003 L 79.65,-70.279997 L 80.489974,-70.279997 L 80.489974,-66.349984 Q 80.489974,-65.63999 80.094987,-65.26499 Q 79.7,-64.88999 78.969987,-64.88999 Q 78.45,-64.88999 78.08999,-65.069987 Q 77.729981,-65.249984 77.359994,-65.68999 Q 76.919987,-64.88999 75.95,-64.88999 Q 75.429981,-64.88999 75.054981,-65.1 Q 74.679981,-65.31001 74.339974,-65.779997 L 74.339974,-65.03999 L 73.569987,-65.03999" />
<path d="M 81.589974,-65.03999 L 81.589974,-70.279997 L 82.429981,-70.279997 L 82.429981,-66.98999 Q 82.429981,-66.420003 82.789974,-66.020003 Q 83.149968,-65.620003 83.659961,-65.620003 Q 84.119987,-65.620003 84.374984,-65.895003 Q 84.629981,-66.170003 84.629981,-66.670003 L 84.629981,-70.279997 L 85.469987,-70.279997 L 85.469987,-66.98999 Q 85.469987,-66.420003 85.829981,-66.020003 Q 86.189974,-65.620003 86.699968,-65.620003 Q 87.159961,-65.620003 87.414974,-65.895003 Q 87.669987,-66.170003 87.669987,-66.670003 L 87.669987,-70.279997 L 88.509961,-70.279997 L 88.509961,-66.349984 Q 88.509961,-65.63999 88.114974,-65.26499 Q 87.719987,-64.88999 86.989974,-64.88999 Q 86.469987,-64.88999 86.109977,-65.069987 Q 85.749968,-65.249984 85.379981,-65.68999 Q 84.939974,-64.88999 83.969987,-64.88999 Q 83.449968,-64.88999 83.074968,-65.1 Q 82.699968,-65.31001 82.359961,-65.779997 L 82.359961,-65.03999 L 81.589974,-65.03999" />
<path d="M 69.809994,-65.03999 L 68.769987,-65.03999 L 68.769987,-66.079997 L 69.809994,-66.079997 L 69.809994,-65.03999" />
<path d="M 69.809994,-69.23999 L 68.769987,-69.23999 L 68.769987,-70.279997 L 69.809994,-70.279997 L 69.809994,-69.23999" />
<path d="M 59.689974,-62.98999 L 58.849968,-62.98999 L 58.849968,-64.03999 L 59.689974,-64.03999 L 59.689974,-62.98999" />
<path d="M 59.689974,-65.03999 L 58.859961,-65.03999 L 58.859961,-70.279997 L 59.689974,-70.279997 L 59.689974,-65.03999" />
<path d="M 46.5,-79.071663 L 47.436665,-79.071663 Q 47.896669,-79.071663 48.16167,-78.746663 Q 48.426671,-78.421663 48.426671,-77.854997 Q 48.426671,-77.28833 48.163336,-76.964996 Q 47.9,-76.641661 47.436665,-76.641661 L 46.5,-76.641661 L 46.5,-79.071663 M 46.810004,-78.798334 L 46.810004,-76.915001 L 47.383333,-76.915001 C 47.861951,-76.913266 48.118055,-77.242282 48.116667,-77.858328 C 48.118055,-78.469584 47.861951,-78.800418 47.383333,-78.798334 L 46.810004,-78.798334" />
<path d="M 50.780002,-78.994992 Q 50.693338,-78.934999 50.663336,-78.841667 Q 50.633333,-78.748334 50.633333,-78.611659 Q 50.633333,-78.584999 50.635004,-78.528331 Q 50.636675,-78.471663 50.636675,-78.441661 Q 50.636675,-78.344992 50.626671,-78.274995 Q 50.616667,-78.204997 50.585004,-78.124995 Q 50.519173,-77.964996 50.303342,-77.871663 Q 50.506673,-77.771663 50.596674,-77.634999 Q 50.686675,-77.498334 50.686675,-77.291661 Q 50.686675,-76.978326 50.495009,-76.809993 Q 50.303342,-76.641661 49.946669,-76.641661 L 48.826671,-76.641661 L 48.826671,-79.071663 L 49.136675,-79.071663 L 49.136675,-78.024995 L 49.936675,-78.024995 C 50.213613,-78.026383 50.335287,-78.159168 50.336675,-78.458328 L 50.336675,-78.674995 Q 50.336675,-78.918332 50.403342,-79.071663 L 50.780002,-79.071663 L 50.780002,-78.994992 M 49.886675,-76.915001 C 50.035561,-76.915001 50.152226,-76.945 50.23667,-77.004997 C 50.321114,-77.064994 50.363336,-77.174995 50.363336,-77.334999 C 50.361601,-77.625624 50.217288,-77.749929 49.886675,-77.751666 L 49.136675,-77.751666 L 49.136675,-76.915001 L 49.886675,-76.915001" />
<path d="M 52.480002,-78.341661 L 52.730002,-79.071663 L 53.076671,-79.071663 L 52.22334,-76.641661 L 51.82334,-76.641661 L 50.956673,-79.071663 L 51.286675,-79.071663 L 51.543338,-78.341661 L 52.480002,-78.341661 M 52.393338,-78.081668 L 51.620009,-78.081668 L 52.020009,-76.974995 L 52.393338,-78.081668" />
<path d="M 55.483333,-79.071663 L 56.1,-76.641661 L 55.753342,-76.641661 L 55.306673,-78.615001 L 54.753342,-76.641661 L 54.420009,-76.641661 L 53.880002,-78.615001 L 53.42334,-76.641661 L 53.076671,-76.641661 L 53.7,-79.071663 L 54.040007,-79.071663 L 54.583333,-77.074995 L 55.143338,-79.071663 L 55.483333,-79.071663" />
<path d="M 56.730002,-76.641661 L 56.416667,-76.641661 L 56.416667,-79.071663 L 56.730002,-79.071663 L 56.730002,-76.641661" />
<path d="M 59.110004,-76.641661 L 58.816667,-76.641661 L 58.816667,-78.628326 L 57.546669,-76.641661 L 57.210004,-76.641661 L 57.210004,-79.071663 L 57.503342,-79.071663 L 57.503342,-77.101666 L 58.760004,-79.071663 L 59.110004,-79.071663 L 59.110004,-76.641661" />
<path d="M 61.420009,-78.128326 C 61.420009,-78.346106 61.348342,-78.524996 61.205008,-78.664996 C 61.061674,-78.804995 60.878895,-78.874995 60.656673,-78.874995 C 60.52334,-78.874995 60.404451,-78.852217 60.300006,-78.806662 C 60.088336,-78.715727 59.976123,-78.574816 59.893338,-78.38833 C 59.811942,-78.200629 59.788066,-78.034921 59.786675,-77.865001 C 59.786675,-77.567222 59.864453,-77.327776 60.020009,-77.146663 C 60.175564,-76.965551 60.38223,-76.874995 60.640007,-76.874995 C 60.824447,-76.874995 60.979445,-76.919994 61.105002,-77.009993 C 61.230559,-77.099993 61.310004,-77.22277 61.343338,-77.378326 L 61.660004,-77.378326 C 61.617781,-77.131661 61.507225,-76.940551 61.328337,-76.804997 C 61.149449,-76.669443 60.921116,-76.601666 60.643338,-76.601666 C 60.46556,-76.601666 60.306116,-76.631109 60.165007,-76.689996 C 60.023897,-76.748882 59.911675,-76.82277 59.828342,-76.911659 C 59.745009,-77.000548 59.675564,-77.103883 59.620009,-77.221663 C 59.506467,-77.458615 59.479101,-77.666938 59.476671,-77.881668 C 59.476671,-78.254997 59.580004,-78.55944 59.78667,-78.794998 C 59.993336,-79.030556 60.261115,-79.148334 60.590007,-79.148334 C 60.912229,-79.148334 61.188896,-79.019443 61.420009,-78.761659 L 61.496669,-79.084999 L 61.693338,-79.084999 L 61.693338,-77.78833 L 60.680002,-77.78833 L 60.680002,-78.061659 L 61.420009,-78.061659 L 61.420009,-78.128326" />
<path d="M 64.893338,-76.641661 L 64.6,-76.641661 L 64.6,-78.628326 L 63.330002,-76.641661 L 62.993338,-76.641661 L 62.993338,-79.071663 L 63.286675,-79.071663 L 63.286675,-77.101666 L 64.543338,-79.071663 L 64.893338,-79.071663 L 64.893338,-76.641661" />
<path d="M 66.983333,-76.641661 L 66.983333,-78.348334 Q 66.983333,-78.594992 66.816667,-78.734993 Q 66.65,-78.874995 66.356673,-78.874995 Q 66.07334,-78.874995 65.905008,-78.743327 Q 65.736675,-78.611659 65.736675,-78.348334 L 65.736675,-76.641661 L 65.426671,-76.641661 L 65.426671,-78.348334 Q 65.426671,-78.718332 65.675006,-78.933333 Q 65.92334,-79.148334 66.356673,-79.148334 Q 66.783333,-79.148334 67.038336,-78.931668 Q 67.293338,-78.715001 67.293338,-78.348334 L 67.293338,-76.641661 L 66.983333,-76.641661" />
<path d="M 69.136675,-79.071663 L 69.820009,-77.034999 L 69.820009,-79.071663 L 70.113336,-79.071663 L 70.113336,-76.641661 L 69.683333,-76.641661 L 68.976671,-78.758328 L 68.256673,-76.641661 L 67.826671,-76.641661 L 67.826671,-79.071663 L 68.120009,-79.071663 L 68.120009,-77.034999 L 68.810004,-79.071663 L 69.136675,-79.071663" />
<path d="M 71.743338,-79.071663 Q 72.066667,-79.071663 72.263336,-78.881662 Q 72.460004,-78.691661 72.460004,-78.378326 Q 72.460004,-78.158328 72.355002,-78.018327 Q 72.25,-77.878326 72.016667,-77.78833 C 72.24111,-77.683889 72.353331,-77.507221 72.353331,-77.258328 C 72.352463,-77.120032 72.312533,-76.991627 72.211665,-76.859993 C 72.113922,-76.731138 71.902184,-76.639404 71.633333,-76.641661 L 70.646669,-76.641661 L 70.646669,-79.071663 L 71.743338,-79.071663 M 71.556673,-76.915001 Q 72.043338,-76.915001 72.043338,-77.301666 Q 72.043338,-77.68833 71.556673,-77.68833 L 70.956673,-77.68833 L 70.956673,-76.915001 L 71.556673,-76.915001 M 71.713336,-78.798334 L 70.956673,-78.798334 L 70.956673,-77.961659 L 71.713336,-77.961659 Q 71.92334,-77.961659 72.03667,-78.07666 Q 72.15,-78.191661 72.15,-78.381668 Q 72.15,-78.481668 72.116667,-78.568332 Q 72.083333,-78.654997 71.980002,-78.726666 Q 71.876671,-78.798334 71.713336,-78.798334" />
<path d="M 73.086675,-77.965001 L 74.410004,-77.965001 L 74.410004,-77.691661 L 73.086675,-77.691661 L 73.086675,-76.915001 L 74.460004,-76.915001 L 74.460004,-76.641661 L 72.776671,-76.641661 L 72.776671,-79.071663 L 74.520009,-79.071663 L 74.520009,-78.798334 L 73.086675,-78.798334 L 73.086675,-77.965001" />
<path d="M 76.840007,-78.994992 Q 76.753342,-78.934999 76.72334,-78.841667 Q 76.693338,-78.748334 76.693338,-78.611659 Q 76.693338,-78.584999 76.695009,-78.528331 Q 76.69668,-78.471663 76.69668,-78.441661 Q 76.69668,-78.344992 76.686675,-78.274995 Q 76.676671,-78.204997 76.645009,-78.124995 Q 76.579178,-77.964996 76.363346,-77.871663 Q 76.566678,-77.771663 76.656679,-77.634999 Q 76.74668,-77.498334 76.74668,-77.291661 Q 76.74668,-76.978326 76.555013,-76.809993 Q 76.363346,-76.641661 76.006673,-76.641661 L 74.886675,-76.641661 L 74.886675,-79.071663 L 75.19668,-79.071663 L 75.19668,-78.024995 L 75.99668,-78.024995 C 76.273618,-78.026383 76.395292,-78.159168 76.39668,-78.458328 L 76.39668,-78.674995 Q 76.39668,-78.918332 76.463346,-79.071663 L 76.840007,-79.071663 L 76.840007,-78.994992 M 75.94668,-76.915001 C 76.095566,-76.915001 76.212231,-76.945 76.296674,-77.004997 C 76.381118,-77.064994 76.42334,-77.174995 76.42334,-77.334999 C 76.421605,-77.625624 76.277292,-77.749929 75.94668,-77.751666 L 75.19668,-77.751666 L 75.19668,-76.915001 L 75.94668,-76.915001" />
<path d="M 77.59668,-77.324995 L 77.250011,-77.324995 L 77.250011,-77.671663 L 77.59668,-77.671663 L 77.59668,-77.324995" />
<path d="M 77.59668,-78.724995 L 77.250011,-78.724995 L 77.250011,-79.071663 L 77.59668,-79.071663 L 77.59668,-78.724995" />
<path d="M 48.145003,-87.114168 Q 48.629997,-87.114168 48.925,-86.829167 Q 49.220003,-86.544165 49.220003,-86.074162 Q 49.220003,-85.744165 49.0625,-85.534163 Q 48.904997,-85.324162 48.554997,-85.189168 C 48.891661,-85.032506 49.059994,-84.767505 49.059994,-84.394165 C 49.058691,-84.186722 48.998796,-83.994113 48.847494,-83.796663 C 48.772494,-83.698329 48.659994,-83.619162 48.509994,-83.559163 C 48.359994,-83.499164 48.183328,-83.469165 47.979997,-83.469165 L 46.5,-83.469165 L 46.5,-87.114168 L 48.145003,-87.114168 M 47.865007,-83.879175 Q 48.595003,-83.879175 48.595003,-84.459172 Q 48.595003,-85.039168 47.865007,-85.039168 L 46.965007,-85.039168 L 46.965007,-83.879175 L 47.865007,-83.879175 M 48.1,-86.704175 L 46.965007,-86.704175 L 46.965007,-85.449162 L 48.1,-85.449162 Q 48.415007,-85.449162 48.585002,-85.621663 Q 48.754997,-85.794165 48.754997,-86.079175 Q 48.754997,-86.229175 48.704997,-86.359172 Q 48.654997,-86.489168 48.5,-86.596672 Q 48.345003,-86.704175 48.1,-86.704175" />
<path d="M 49.820003,-87.114168 L 51.225,-87.114168 Q 51.915007,-87.114168 52.312508,-86.626668 Q 52.71001,-86.139168 52.71001,-85.289168 Q 52.71001,-84.439168 52.315007,-83.954167 Q 51.920003,-83.469165 51.225,-83.469165 L 49.820003,-83.469165 L 49.820003,-87.114168 M 50.28501,-86.704175 L 50.28501,-83.879175 L 51.145003,-83.879175 C 51.86293,-83.876572 52.247085,-84.370097 52.245003,-85.294165 C 52.245003,-85.754169 52.151671,-86.104172 51.965007,-86.344173 C 51.778342,-86.584174 51.505008,-86.704175 51.145003,-86.704175 L 50.28501,-86.704175" />
<path d="M 54.345003,-85.554175 L 53.140007,-85.554175 L 53.140007,-85.914168 L 54.345003,-85.914168 L 54.345003,-85.554175" />
<path d="M 55.87002,-84.589168 L 55.87002,-87.114168 L 56.31001,-87.114168 L 56.31001,-83.569165 L 56.02002,-83.569165 Q 55.905013,-83.979175 55.750016,-84.094173 Q 55.59502,-84.209172 55.08501,-84.274162 L 55.08501,-84.589168 L 55.87002,-84.589168" />
<path d="M 92.153331,-78.041661 C 92.45111,-78.119439 92.6,-78.250552 92.6,-78.434999 C 92.598784,-78.538252 92.571772,-78.623962 92.48833,-78.718332 C 92.407317,-78.809926 92.227678,-78.876731 91.979991,-78.874995 C 91.848886,-78.874995 91.736111,-78.857773 91.641667,-78.823329 C 91.547222,-78.788885 91.47611,-78.742775 91.428331,-78.684999 C 91.331905,-78.568405 91.294195,-78.453817 91.293327,-78.315001 L 91.293327,-78.298334 L 91.0,-78.298334 C 91.002221,-78.431668 91.023886,-78.549445 91.064996,-78.651666 C 91.147736,-78.859059 91.26947,-78.965934 91.443327,-79.046663 C 91.618399,-79.126003 91.776038,-79.146772 91.959994,-79.148334 C 92.246451,-79.150765 92.487986,-79.071461 92.623329,-78.971663 C 92.692217,-78.920549 92.748882,-78.861104 92.793327,-78.793327 C 92.883952,-78.656904 92.908257,-78.534757 92.909994,-78.404997 C 92.909994,-78.256111 92.864994,-78.128333 92.774995,-78.021663 C 92.684995,-77.914994 92.557773,-77.839437 92.393327,-77.794992 L 91.783333,-77.631668 Q 91.563325,-77.571663 91.473329,-77.491661 Q 91.383333,-77.411659 91.383333,-77.271663 Q 91.383333,-77.08833 91.531662,-76.974995 Q 91.679991,-76.861659 91.92666,-76.861659 Q 92.216667,-76.861659 92.373329,-76.989996 Q 92.529991,-77.118332 92.533333,-77.354997 L 92.82666,-77.354997 Q 92.823329,-76.998334 92.589996,-76.8 Q 92.356662,-76.601666 91.936665,-76.601666 Q 91.536665,-76.601666 91.304997,-76.793332 Q 91.073329,-76.984999 91.073329,-77.315001 Q 91.073329,-77.758328 91.55,-77.881668 L 92.153331,-78.041661" />
<path d="M 94.839996,-77.965001 L 94.839996,-79.071663 L 95.149989,-79.071663 L 95.149989,-76.641661 L 94.839996,-76.641661 L 94.839996,-77.691661 L 93.589996,-77.691661 L 93.589996,-76.641661 L 93.279991,-76.641661 L 93.279991,-79.071663 L 93.589996,-79.071663 L 93.589996,-77.965001 L 94.839996,-77.965001" />
<path d="M 95.919998,-77.965001 L 97.243327,-77.965001 L 97.243327,-77.691661 L 95.919998,-77.691661 L 95.919998,-76.915001 L 97.293327,-76.915001 L 97.293327,-76.641661 L 95.609994,-76.641661 L 95.609994,-79.071663 L 97.353331,-79.071663 L 97.353331,-78.798334 L 95.919998,-78.798334 L 95.919998,-77.965001" />
<path d="M 97.956673,-77.965001 L 99.280002,-77.965001 L 99.280002,-77.691661 L 97.956673,-77.691661 L 97.956673,-76.915001 L 99.330002,-76.915001 L 99.330002,-76.641661 L 97.646669,-76.641661 L 97.646669,-79.071663 L 99.390007,-79.071663 L 99.390007,-78.798334 L 97.956673,-78.798334 L 97.956673,-77.965001" />
<path d="M 100.666678,-76.915001 L 101.463336,-76.915001 L 101.463336,-76.641661 L 99.556673,-76.641661 L 99.556673,-76.915001 L 100.356673,-76.915001 L 100.356673,-79.071663 L 100.666678,-79.071663 L 100.666678,-76.915001" />
<path d="M 102.176671,-78.724995 L 101.830002,-78.724995 L 101.830002,-79.071663 L 102.176671,-79.071663 L 102.176671,-78.724995" />
<path d="M 102.176671,-77.324995 L 101.830002,-77.324995 L 101.830002,-77.671663 L 102.176671,-77.671663 L 102.176671,-77.324995" />
<path d="M 91.78501,-84.539168 L 91.78501,-87.064168 L 92.225,-87.064168 L 92.225,-83.519165 L 91.93501,-83.519165 Q 91.820003,-83.929175 91.665007,-84.044173 Q 91.51001,-84.159172 91.0,-84.224162 L 91.0,-84.539168 L 91.78501,-84.539168" />
<path d="M -45.9,22.210002 L -55.9,22.210002 L -55.9,21.710002 L -45.9,21.710002 L -45.9,22.210002" />
<path d="M -45.9,78.610002 L -55.9,78.610002 L -55.9,78.110002 L -45.9,78.110002 L -45.9,78.610002" />
<path d="M -46.9,75.360002 A 10.137937550497139,10.137937550497139 -170.5376777919744 0,0 -47.9,78.360002 A 10.137937550497139,10.137937550497139 -9.46232220802563 0,0 -48.9,75.360002 L -48.15,75.641252 L -48.15,55.392249 L -47.65,55.392249 L -47.65,75.641252 L -46.9,75.360002" />
<path d="M -48.9,24.960002 A 10.137937550497139,10.137937550497139 9.462322208025604 0,0 -47.9,21.960002 A 10.137937550497139,10.137937550497139 170.53767779197437 0,0 -46.9,24.960002 L -47.65,24.678752 L -47.65,44.927754 L -48.15,44.927754 L -48.15,24.678752 L -48.9,24.960002" />
<path d="M -49.181003,48.471252 L -49.181003,47.190254 L -47.830006,47.004749 L -47.830006,47.288259 Q -47.959501,47.396756 -48.010252,47.498253 Q -48.061003,47.599749 -48.061003,47.743259 Q -48.061003,47.991756 -47.901755,48.138757 Q -47.742506,48.285759 -47.466003,48.285759 Q -47.200006,48.285759 -47.046003,48.140506 Q -46.892001,47.995254 -46.892001,47.743259 Q -46.892001,47.344256 -47.308503,47.235759 L -47.308503,46.927754 C -47.268832,46.934757 -47.238498,46.94059 -47.2175,46.945254 C -47.196502,46.949918 -47.158586,46.962167 -47.10375,46.982003 C -47.048914,47.001838 -47.003414,47.02284 -46.967248,47.045007 C -46.931082,47.067175 -46.889083,47.099841 -46.84125,47.143006 C -46.793417,47.186171 -46.754918,47.234004 -46.725751,47.286504 C -46.669424,47.389498 -46.616991,47.56093 -46.618997,47.750254 C -46.618997,47.999918 -46.701831,48.204084 -46.8675,48.362754 C -47.033169,48.521424 -47.246669,48.600759 -47.507999,48.600759 C -47.752999,48.600759 -47.951915,48.526674 -48.104748,48.378505 C -48.25758,48.230336 -48.333997,48.037253 -48.333997,47.799256 C -48.333997,47.631252 -48.283832,47.478419 -48.183503,47.340759 L -48.876497,47.438752 L -48.876497,48.471252 L -49.181003,48.471252" />
<path d="M -48.533503,50.494256 Q -48.837999,50.448752 -49.009501,50.261504 Q -49.181003,50.074256 -49.181003,49.790747 Q -49.181003,49.668247 -49.153005,49.558001 Q -49.125006,49.447754 -49.035751,49.323505 Q -48.946497,49.199256 -48.802999,49.110002 Q -48.659501,49.020747 -48.409249,48.961252 Q -48.158997,48.901756 -47.830006,48.901756 Q -46.618997,48.901756 -46.618997,49.734749 Q -46.618997,50.088247 -46.855247,50.317502 Q -47.091497,50.546756 -47.455499,50.546756 Q -47.802001,50.546756 -48.0225,50.333253 Q -48.242999,50.119749 -48.242999,49.787249 Q -48.242999,49.419749 -47.966497,49.216756 C -48.26983,49.219088 -48.50258,49.267504 -48.664748,49.362003 C -48.826915,49.456502 -48.907999,49.592418 -48.907999,49.769749 C -48.909822,49.982589 -48.769677,50.136746 -48.533503,50.186252 L -48.533503,50.494256 M -47.970006,49.748752 Q -47.970006,49.972754 -47.824753,50.102255 Q -47.679501,50.231756 -47.431003,50.231756 Q -47.196497,50.231756 -47.044249,50.091756 Q -46.892001,49.951756 -46.892001,49.738247 Q -46.892001,49.521252 -47.05125,49.377754 Q -47.210499,49.234256 -47.448503,49.234256 Q -47.679501,49.234256 -47.824753,49.377754 Q -47.970006,49.521252 -47.970006,49.748752" />
<path d="M -47.063503,51.341252 L -47.063503,50.977249 L -46.699501,50.977249 L -46.699501,51.341252 L -47.063503,51.341252" />
<path d="M -47.294501,52.716745 L -46.699501,52.716745 L -46.699501,53.024749 L -47.294501,53.024749 L -47.294501,53.392249 L -47.571003,53.392249 L -47.571003,53.024749 L -49.181003,53.024749 L -49.181003,52.797249 L -47.620006,51.670254 L -47.294501,51.670254 L -47.294501,52.716745 M -47.571003,52.716745 L -47.571003,51.939749 L -48.656003,52.716745 L -47.571003,52.716745" />
<path d="M -114.05,9.960002 L -114.05,19.960002 L -114.55,19.960002 L -114.55,9.960002 L -114.05,9.960002" />
<path d="M -57.65,9.960002 L -57.65,19.960002 L -58.15,19.960002 L -58.15,9.960002 L -57.65,9.960002" />
<path d="M -60.9,10.960002 A 10.137937550497139,10.137937550497139 99.46232220802563 0,0 -57.9,11.960002 A 10.137937550497139,10.137937550497139 -99.46232220802563 0,0 -60.9,12.960002 L -60.61875,12.210002 L -80.867752,12.210002 L -80.867752,11.710002 L -60.61875,11.710002 L -60.9,10.960002" />
<path d="M -111.3,12.960002 A 10.137937550497139,10.137937550497139 -80.53767779197439 0,0 -114.3,11.960002 A 10.137937550497139,10.137937550497139 80.53767779197437 0,0 -111.3,10.960002 L -111.58125,11.710002 L -91.332248,11.710002 L -91.332248,12.210002 L -111.58125,12.210002 L -111.3,12.960002" />
<path d="M -87.78875,13.241005 L -89.069748,13.241005 L -89.255252,11.890007 L -88.971743,11.890007 Q -88.863245,12.019503 -88.761749,12.070254 Q -88.660252,12.121005 -88.516743,12.121005 Q -88.268245,12.121005 -88.121244,11.961756 Q -87.974243,11.802507 -87.974243,11.526005 Q -87.974243,11.260007 -88.119495,11.106005 Q -88.264748,10.952003 -88.516743,10.952003 Q -88.915745,10.952003 -89.024243,11.368505 L -89.332248,11.368505 C -89.325245,11.328834 -89.319411,11.298499 -89.314748,11.277502 C -89.310084,11.256504 -89.297834,11.218587 -89.277999,11.163752 C -89.258163,11.108916 -89.237162,11.063415 -89.214994,11.027249 C -89.192827,10.991083 -89.160161,10.949084 -89.116995,10.901252 C -89.07383,10.853419 -89.025998,10.814919 -88.973498,10.785753 C -88.870503,10.729425 -88.699072,10.676992 -88.509748,10.678998 C -88.260084,10.678998 -88.055917,10.761833 -87.897248,10.927502 C -87.738578,11.093171 -87.659243,11.30667 -87.659243,11.568001 C -87.659243,11.813001 -87.733328,12.011917 -87.881497,12.164749 C -88.029665,12.317582 -88.222748,12.393998 -88.460745,12.393998 C -88.62875,12.393998 -88.781583,12.343834 -88.919243,12.243505 L -88.82125,12.936498 L -87.78875,12.936498 L -87.78875,13.241005" />
<path d="M -85.765745,12.593505 Q -85.81125,12.898001 -85.998498,13.069503 Q -86.185745,13.241005 -86.469255,13.241005 Q -86.591755,13.241005 -86.702001,13.213006 Q -86.812248,13.185007 -86.936497,13.095753 Q -87.060745,13.006498 -87.15,12.863001 Q -87.239255,12.719503 -87.29875,12.469251 Q -87.358245,12.218998 -87.358245,11.890007 Q -87.358245,10.678998 -86.525252,10.678998 Q -86.171755,10.678998 -85.9425,10.915248 Q -85.713245,11.151498 -85.713245,11.515501 Q -85.713245,11.862003 -85.926749,12.082502 Q -86.140252,12.303001 -86.472752,12.303001 Q -86.840252,12.303001 -87.043245,12.026498 C -87.040914,12.329832 -86.992498,12.562582 -86.897999,12.724749 C -86.8035,12.886917 -86.667584,12.968001 -86.490252,12.968001 C -86.277413,12.969824 -86.123256,12.829679 -86.07375,12.593505 L -85.765745,12.593505 M -86.51125,12.030007 Q -86.287248,12.030007 -86.157747,11.884755 Q -86.028245,11.739503 -86.028245,11.491005 Q -86.028245,11.256498 -86.168245,11.104251 Q -86.308245,10.952003 -86.521755,10.952003 Q -86.73875,10.952003 -86.882248,11.111252 Q -87.025745,11.270501 -87.025745,11.508505 Q -87.025745,11.739503 -86.882248,11.884755 Q -86.73875,12.030007 -86.51125,12.030007" />
<path d="M -84.91875,11.123505 L -85.282752,11.123505 L -85.282752,10.759503 L -84.91875,10.759503 L -84.91875,11.123505" />
<path d="M -83.543257,11.354503 L -83.543257,10.759503 L -83.235252,10.759503 L -83.235252,11.354503 L -82.867752,11.354503 L -82.867752,11.631005 L -83.235252,11.631005 L -83.235252,13.241005 L -83.462752,13.241005 L -84.589748,11.680007 L -84.589748,11.354503 L -83.543257,11.354503 M -83.543257,11.631005 L -84.320252,11.631005 L -83.543257,12.716005 L -83.543257,11.631005" />
<path d="M -89.525,2.519999 L -89.525,-2.480001 L -89.025,-2.480001 L -89.025,2.519999 L -89.525,2.519999" />
<path d="M -83.175,2.519999 L -83.175,-2.480001 L -82.675,-2.480001 L -82.675,2.519999 L -83.175,2.519999" />
<path d="M -79.925,1.519999 A 10.137937550497139,10.137937550497139 -80.53767779197439 0,0 -82.925,0.519999 A 10.137937550497139,10.137937550497139 80.53767779197437 0,0 -79.925,-0.480001 L -80.20625,0.269999 L -76.925,0.269999 L -76.925,0.769999 L -80.20625,0.769999 L -79.925,1.519999" />
<path d="M -92.275,-0.480001 A 10.137937550497139,10.137937550497139 99.46232220802561 0,0 -89.275,0.519999 A 10.137937550497139,10.137937550497139 -99.46232220802564 0,0 -92.275,1.519999 L -91.99375,0.769999 L -95.275,0.769999 L -95.275,0.269999 L -91.99375,0.269999 L -92.275,-0.480001" />
<path d="M -86.728245,1.153503 Q -86.77375,1.457998 -86.960998,1.6295 Q -87.148245,1.801003 -87.431755,1.801003 Q -87.554255,1.801003 -87.664501,1.773004 Q -87.774748,1.745005 -87.898997,1.65575 Q -88.023245,1.566496 -88.1125,1.422998 Q -88.201755,1.2795 -88.26125,1.029248 Q -88.320745,0.778996 -88.320745,0.450005 Q -88.320745,-0.761004 -87.487752,-0.761004 Q -87.134255,-0.761004 -86.905,-0.524754 Q -86.675745,-0.288504 -86.675745,0.075498 Q -86.675745,0.422 -86.889249,0.642499 Q -87.102752,0.862998 -87.435252,0.862998 Q -87.802752,0.862998 -88.005745,0.586496 C -88.003414,0.889829 -87.954998,1.122579 -87.860499,1.284747 C -87.766,1.446914 -87.630084,1.527998 -87.452752,1.527998 C -87.239913,1.529821 -87.085756,1.389676 -87.03625,1.153503 L -86.728245,1.153503 M -87.47375,0.590005 Q -87.249748,0.590005 -87.120247,0.444753 Q -86.990745,0.2995 -86.990745,0.051003 Q -86.990745,-0.183504 -87.130745,-0.335752 Q -87.270745,-0.488 -87.484255,-0.488 Q -87.70125,-0.488 -87.844748,-0.328751 Q -87.988245,-0.169502 -87.988245,0.068503 Q -87.988245,0.2995 -87.844748,0.444753 Q -87.70125,0.590005 -87.47375,0.590005" />
<path d="M -85.88125,-0.316497 L -86.245252,-0.316497 L -86.245252,-0.6805 L -85.88125,-0.6805 L -85.88125,-0.316497" />
<path d="M -85.177752,0.9995 Q -85.170757,1.241003 -85.071003,1.386249 Q -84.97125,1.531496 -84.705252,1.531496 Q -84.502248,1.531496 -84.385,1.417746 Q -84.267752,1.303996 -84.267752,1.107998 Q -84.267752,0.880498 -84.406003,0.803497 Q -84.544255,0.726496 -84.876755,0.7195 L -84.876755,0.457 L -84.838257,0.457 L -84.70875,0.460498 Q -84.194255,0.460498 -84.194255,0.008996 Q -84.194255,-0.2255 -84.330751,-0.35675 Q -84.467248,-0.488 -84.70875,-0.488 Q -84.960757,-0.488 -85.086755,-0.358499 Q -85.212752,-0.228997 -85.230252,0.040498 L -85.538257,0.040498 Q -85.482248,-0.761004 -84.719255,-0.761004 Q -84.337752,-0.761004 -84.108503,-0.551004 Q -83.879255,-0.341004 -83.879255,0.012505 Q -83.879255,0.250498 -83.977253,0.388749 Q -84.075252,0.527 -84.299255,0.603996 Q -83.952752,0.740498 -83.952752,1.118503 Q -83.952752,1.437 -84.154002,1.619001 Q -84.355252,1.801003 -84.70875,1.801003 Q -85.468257,1.801003 -85.485757,0.9995 L -85.177752,0.9995" />
<path d="M 40.2,-25.653999 L 30.2,-25.653999 L 30.2,-26.153999 L 40.2,-26.153999 L 40.2,-25.653999" />
<path d="M 40.2,50.946001 L 30.2,50.946001 L 30.2,50.446001 L 40.2,50.446001 L 40.2,50.946001" />
<path d="M 39.2,47.696001 A 10.137937550497139,10.137937550497139 -170.5376777919744 0,0 38.2,50.696001 A 10.137937550497139,10.137937550497139 -9.46232220802563 0,0 37.2,47.696001 L 37.95,47.977251 L 37.95,17.596752 L 38.45,17.596752 L 38.45,47.977251 L 39.2,47.696001" />
<path d="M 37.2,-22.903999 A 10.137937550497139,10.137937550497139 9.462322208025604 0,0 38.2,-25.903999 A 10.137937550497139,10.137937550497139 170.53767779197437 0,0 39.2,-22.903999 L 38.45,-23.185249 L 38.45,7.19525 L 37.95,7.19525 L 37.95,-23.185249 L 37.2,-22.903999" />
<path d="M 36.918997,10.854252 L 36.918997,9.19525 L 37.223504,9.19525 L 37.223504,10.535754 Q 37.857001,10.091248 38.3225,9.874252 Q 38.787999,9.657257 39.400499,9.517257 L 39.400499,9.846248 Q 38.805499,9.94775 38.271749,10.191001 Q 37.737999,10.434252 37.177999,10.854252 L 36.918997,10.854252" />
<path d="M 37.566497,12.723254 Q 37.262001,12.67775 37.090499,12.490502 Q 36.918997,12.303254 36.918997,12.019745 Q 36.918997,11.897245 36.946996,11.786999 Q 36.974994,11.676752 37.064249,11.552503 Q 37.153504,11.428254 37.297001,11.339 Q 37.440499,11.249745 37.690751,11.19025 Q 37.941004,11.130754 38.269994,11.130754 Q 39.481004,11.130754 39.481004,11.963748 Q 39.481004,12.317245 39.244754,12.5465 Q 39.008504,12.775754 38.644501,12.775754 Q 38.297999,12.775754 38.0775,12.562251 Q 37.857001,12.348748 37.857001,12.016248 Q 37.857001,11.648748 38.133504,11.445754 C 37.83017,11.448086 37.59742,11.496502 37.435252,11.591001 C 37.273085,11.6855 37.192001,11.821416 37.192001,11.998748 C 37.190178,12.211587 37.330323,12.365744 37.566497,12.41525 L 37.566497,12.723254 M 38.129994,11.97775 Q 38.129994,12.201752 38.275247,12.331253 Q 38.420499,12.460754 38.668997,12.460754 Q 38.903504,12.460754 39.055751,12.320754 Q 39.207999,12.180754 39.207999,11.967245 Q 39.207999,11.75025 39.04875,11.606752 Q 38.889501,11.463254 38.651497,11.463254 Q 38.420499,11.463254 38.275247,11.606752 Q 38.129994,11.75025 38.129994,11.97775" />
<path d="M 39.036497,13.57025 L 39.036497,13.206248 L 39.400499,13.206248 L 39.400499,13.57025 L 39.036497,13.57025" />
<path d="M 37.566497,15.544252 Q 37.262001,15.498748 37.090499,15.3115 Q 36.918997,15.124252 36.918997,14.840743 Q 36.918997,14.718243 36.946996,14.607996 Q 36.974994,14.49775 37.064249,14.373501 Q 37.153504,14.249252 37.297001,14.159998 Q 37.440499,14.070743 37.690751,14.011248 Q 37.941004,13.951752 38.269994,13.951752 Q 39.481004,13.951752 39.481004,14.784745 Q 39.481004,15.138243 39.244754,15.367498 Q 39.008504,15.596752 38.644501,15.596752 Q 38.297999,15.596752 38.0775,15.383249 Q 37.857001,15.169745 37.857001,14.837245 Q 37.857001,14.469745 38.133504,14.266752 C 37.83017,14.269084 37.59742,14.317499 37.435252,14.411999 C 37.273085,14.506498 37.192001,14.642413 37.192001,14.819745 C 37.190178,15.032585 37.330323,15.186742 37.566497,15.236248 L 37.566497,15.544252 M 38.129994,14.798748 Q 38.129994,15.02275 38.275247,15.152251 Q 38.420499,15.281752 38.668997,15.281752 Q 38.903504,15.281752 39.055751,15.141752 Q 39.207999,15.001752 39.207999,14.788243 Q 39.207999,14.571248 39.04875,14.42775 Q 38.889501,14.284252 38.651497,14.284252 Q 38.420499,14.284252 38.275247,14.42775 Q 38.129994,14.571248 38.129994,14.798748" />
<path d="M -95.663994,84.052999 Q -95.325,84.391994 -95.325,84.950001 Q -95.325,85.568009 -95.675996,85.901007 Q -96.026992,86.234005 -96.675,86.234005 L -98.480996,86.234005 L -98.480996,81.860001 L -97.922988,81.860001 L -97.922988,83.714005 L -96.549004,83.714005 Q -96.002988,83.714005 -95.663994,84.052999 M -97.922988,84.205997 L -97.922988,85.741994 L -96.759004,85.741994 Q -96.356992,85.741994 -96.131992,85.537999 Q -95.906992,85.334005 -95.906992,84.974005 Q -95.906992,84.614005 -96.131992,84.410001 Q -96.356992,84.205997 -96.759004,84.205997 L -97.922988,84.205997" />
<path d="M -94.160996,86.234005 L -94.665,86.234005 L -94.665,81.860001 L -94.160996,81.860001 L -94.160996,86.234005" />
<path d="M -93.482988,84.074005 L -92.979004,84.074005 Q -92.949004,84.361994 -92.769004,84.496994 Q -92.589004,84.631994 -92.240996,84.631994 Q -91.905,84.631994 -91.722002,84.511994 Q -91.539004,84.391994 -91.539004,84.164005 L -91.539004,84.031994 Q -91.539004,83.875997 -91.652998,83.797999 Q -91.766992,83.720001 -92.060996,83.684005 Q -92.276992,83.654005 -92.360996,83.642003 Q -92.445,83.630001 -92.625,83.600001 Q -92.805,83.570001 -92.877002,83.549005 Q -92.949004,83.528009 -93.084004,83.483009 Q -93.219004,83.438009 -93.275996,83.390001 Q -93.332988,83.341994 -93.416992,83.266994 Q -93.500996,83.191994 -93.533994,83.105001 Q -93.566992,83.018009 -93.593994,82.904005 Q -93.620996,82.790001 -93.620996,82.651994 Q -93.620996,82.225997 -93.341992,81.973996 Q -93.062988,81.721994 -92.589004,81.721994 Q -92.025,81.721994 -91.520996,82.184005 Q -91.490996,81.944005 -91.367998,81.832999 Q -91.245,81.721994 -91.005,81.721994 Q -90.872988,81.721994 -90.662988,81.775997 L -90.662988,82.154005 Q -90.716992,82.141994 -90.770996,82.141994 Q -91.040996,82.141994 -91.040996,82.388009 L -91.040996,84.235997 Q -91.040996,84.655997 -91.340996,84.875001 Q -91.640996,85.094005 -92.222988,85.094005 Q -93.446992,85.094005 -93.482988,84.074005 M -91.802998,82.379005 Q -92.066992,82.160001 -92.480996,82.160001 Q -92.775,82.160001 -92.937002,82.292003 Q -93.099004,82.424005 -93.099004,82.664005 Q -93.099004,82.904005 -92.919004,83.039005 Q -92.739004,83.174005 -92.517002,83.210001 Q -92.295,83.245997 -91.992002,83.293996 Q -91.689004,83.341994 -91.539004,83.414005 L -91.539004,82.850001 Q -91.539004,82.598009 -91.802998,82.379005" />
<path d="M -90.212988,85.004005 L -90.212988,81.860001 L -89.708984,81.860001 L -89.708984,83.594005 Q -89.708984,84.074005 -89.47499,84.365001 Q -89.240996,84.655997 -88.856992,84.655997 Q -88.556992,84.655997 -88.382988,84.487999 Q -88.208984,84.320001 -88.208984,84.038009 L -88.208984,81.860001 L -87.710996,81.860001 L -87.710996,84.235997 Q -87.710996,84.625997 -87.980996,84.860001 Q -88.250996,85.094005 -88.706992,85.094005 Q -89.05498,85.094005 -89.297988,84.950001 Q -89.540996,84.805997 -89.750996,84.475997 L -89.750996,85.004005 L -90.212988,85.004005" />
<path d="M -83.589004,81.860001 L -82.070996,86.234005 L -82.665,86.234005 L -83.876992,82.531994 L -85.160996,86.234005 L -85.760996,86.234005 L -84.189004,81.860001 L -83.589004,81.860001" />
<path d="M -81.080996,85.004005 L -81.579004,85.004005 L -81.579004,81.860001 L -81.080996,81.860001 L -81.080996,85.004005" />
<path d="M -81.080996,86.234005 L -81.585,86.234005 L -81.585,85.604005 L -81.080996,85.604005 L -81.080996,86.234005" />
<path d="M -80.007012,83.264005 L -77.690996,83.264005 Q -77.690996,85.094005 -79.089004,85.094005 Q -79.743008,85.094005 -80.136006,84.629005 Q -80.529004,84.164005 -80.529004,83.390001 Q -80.529004,82.615997 -80.145,82.168996 Q -79.760996,81.721994 -79.100996,81.721994 Q -78.560996,81.721994 -78.207002,82.010001 Q -77.853008,82.298009 -77.757012,82.814005 L -78.260996,82.814005 Q -78.470996,82.184005 -79.083008,82.184005 Q -79.509004,82.184005 -79.752002,82.477999 Q -79.995,82.771994 -80.007012,83.264005 M -78.225,83.671994 L -79.995,83.671994 Q -79.965,84.110001 -79.719004,84.370997 Q -79.473008,84.631994 -79.09501,84.631994 Q -78.717012,84.631994 -78.471006,84.355997 Q -78.225,84.080001 -78.225,83.671994" />
<path d="M -74.222988,81.860001 L -73.299004,85.004005 L -73.862988,85.004005 L -74.486992,82.555997 L -75.105,85.004005 L -75.716992,85.004005 L -76.316992,82.555997 L -76.959004,85.004005 L -77.510996,85.004005 L -76.599004,81.860001 L -76.035,81.860001 L -75.429004,84.325997 L -74.792988,81.860001 L -74.222988,81.860001" />
<path d="M -104.26499,-85.588009 L -102.177002,-85.588009 L -102.177002,-85.095997 L -104.26499,-85.095997 L -104.26499,-83.698009 L -101.888994,-83.698009 L -101.888994,-83.205997 L -104.822998,-83.205997 L -104.822998,-87.580001 L -104.26499,-87.580001 L -104.26499,-85.588009" />
<path d="M -99.957002,-84.874005 L -99.957002,-84.364005 Q -100.082998,-84.345997 -100.148994,-84.345997 Q -100.388994,-84.345997 -100.58999,-84.498995 Q -100.790986,-84.651993 -101.007002,-85.005997 L -101.007002,-84.435997 L -101.468994,-84.435997 L -101.468994,-87.580001 L -100.96499,-87.580001 L -100.96499,-85.948009 Q -100.96499,-85.330001 -100.712988,-85.107999 Q -100.460986,-84.885997 -99.957002,-84.874005" />
<path d="M -97.236006,-84.792999 Q -97.611006,-84.345997 -98.289014,-84.345997 Q -98.949014,-84.345997 -99.327012,-84.792999 Q -99.70501,-85.240001 -99.70501,-86.032003 Q -99.70501,-86.824005 -99.33001,-87.271007 Q -98.95501,-87.718009 -98.283018,-87.718009 Q -97.623018,-87.718009 -97.242012,-87.274005 Q -96.861006,-86.830001 -96.861006,-86.055997 Q -96.861006,-85.240001 -97.236006,-84.792999 M -98.943018,-85.135001 Q -98.703018,-84.808009 -98.283018,-84.808009 Q -97.857002,-84.808009 -97.62001,-85.138009 Q -97.383018,-85.468009 -97.383018,-86.050001 Q -97.383018,-86.601993 -97.626016,-86.928995 Q -97.869014,-87.255997 -98.283018,-87.255997 Q -98.703018,-87.255997 -98.943018,-86.928995 Q -99.183018,-86.601993 -99.183018,-86.031993 Q -99.183018,-85.461993 -98.943018,-85.135001" />
<path d="M -96.381006,-84.435997 L -96.381006,-87.580001 L -95.877002,-87.580001 L -95.877002,-85.845997 Q -95.877002,-85.365997 -95.643008,-85.075001 Q -95.409014,-84.784005 -95.02501,-84.784005 Q -94.72501,-84.784005 -94.551006,-84.952003 Q -94.377002,-85.120001 -94.377002,-85.401993 L -94.377002,-87.580001 L -93.879014,-87.580001 L -93.879014,-85.204005 Q -93.879014,-84.814005 -94.149014,-84.580001 Q -94.419014,-84.345997 -94.87501,-84.345997 Q -95.222998,-84.345997 -95.466006,-84.490001 Q -95.709014,-84.634005 -95.919014,-84.964005 L -95.919014,-84.435997 L -96.381006,-84.435997" />
<path d="M -91.989014,-84.435997 L -92.50501,-84.435997 L -92.50501,-83.571993 L -93.003018,-83.571993 L -93.003018,-84.435997 L -93.429014,-84.435997 L -93.429014,-84.844005 L -93.003018,-84.844005 L -93.003018,-87.220001 Q -93.003018,-87.460001 -92.847012,-87.589005 Q -92.691006,-87.718009 -92.397021,-87.718009 Q -92.223018,-87.718009 -91.989014,-87.675997 L -91.989014,-87.255997 Q -92.079014,-87.280001 -92.229014,-87.280001 Q -92.391006,-87.280001 -92.448008,-87.222999 Q -92.50501,-87.165997 -92.50501,-86.998009 L -92.50501,-84.844005 L -91.989014,-84.844005 L -91.989014,-84.435997" />
<path d="M -89.331006,-85.588009 L -86.949014,-85.588009 L -86.949014,-85.095997 L -89.331006,-85.095997 L -89.331006,-83.698009 L -86.859014,-83.698009 L -86.859014,-83.205997 L -89.889014,-83.205997 L -89.889014,-87.580001 L -86.751006,-87.580001 L -86.751006,-87.088009 L -89.331006,-87.088009 L -89.331006,-85.588009" />
<path d="M -85.707002,-83.205997 L -86.211006,-83.205997 L -86.211006,-87.580001 L -85.707002,-87.580001 L -85.707002,-83.205997" />
<path d="M -84.64501,-86.175997 L -82.328994,-86.175997 Q -82.328994,-84.345997 -83.727002,-84.345997 Q -84.381006,-84.345997 -84.774004,-84.810997 Q -85.167002,-85.275997 -85.167002,-86.050001 Q -85.167002,-86.824005 -84.782998,-87.271007 Q -84.398994,-87.718009 -83.738994,-87.718009 Q -83.198994,-87.718009 -82.845,-87.430001 Q -82.491006,-87.141993 -82.39501,-86.625997 L -82.898994,-86.625997 Q -83.108994,-87.255997 -83.721006,-87.255997 Q -84.147002,-87.255997 -84.39,-86.962003 Q -84.632998,-86.668009 -84.64501,-86.175997 M -82.862998,-85.768009 L -84.632998,-85.768009 Q -84.602998,-85.330001 -84.357002,-85.069005 Q -84.111006,-84.808009 -83.733008,-84.808009 Q -83.35501,-84.808009 -83.109004,-85.084005 Q -82.862998,-85.360001 -82.862998,-85.768009" />
<path d="M -80.498994,-87.580001 L -79.292998,-84.435997 L -79.857002,-84.435997 L -80.74499,-86.985997 L -81.58499,-84.435997 L -82.148994,-84.435997 L -81.04499,-87.580001 L -80.498994,-87.580001" />
<path d="M -78.97499,-85.365997 L -78.471006,-85.365997 Q -78.441006,-85.078009 -78.261006,-84.943009 Q -78.081006,-84.808009 -77.732998,-84.808009 Q -77.397002,-84.808009 -77.214004,-84.928009 Q -77.031006,-85.048009 -77.031006,-85.275997 L -77.031006,-85.408009 Q -77.031006,-85.564005 -77.145,-85.642003 Q -77.258994,-85.720001 -77.552998,-85.755997 Q -77.768994,-85.785997 -77.852998,-85.797999 Q -77.937002,-85.810001 -78.117002,-85.840001 Q -78.297002,-85.870001 -78.369004,-85.890997 Q -78.441006,-85.911993 -78.576006,-85.956993 Q -78.711006,-86.001993 -78.767998,-86.050001 Q -78.82499,-86.098009 -78.908994,-86.173009 Q -78.992998,-86.248009 -79.025996,-86.335001 Q -79.058994,-86.421993 -79.085996,-86.535997 Q -79.112998,-86.650001 -79.112998,-86.788009 Q -79.112998,-87.214005 -78.833994,-87.466007 Q -78.55499,-87.718009 -78.081006,-87.718009 Q -77.517002,-87.718009 -77.012998,-87.255997 Q -76.982998,-87.495997 -76.86,-87.607003 Q -76.737002,-87.718009 -76.497002,-87.718009 Q -76.36499,-87.718009 -76.15499,-87.664005 L -76.15499,-87.285997 Q -76.208994,-87.298009 -76.262998,-87.298009 Q -76.532998,-87.298009 -76.532998,-87.051993 L -76.532998,-85.204005 Q -76.532998,-84.784005 -76.832998,-84.565001 Q -77.132998,-84.345997 -77.71499,-84.345997 Q -78.938994,-84.345997 -78.97499,-85.365997 M -77.295,-87.060997 Q -77.558994,-87.280001 -77.972998,-87.280001 Q -78.267002,-87.280001 -78.429004,-87.147999 Q -78.591006,-87.015997 -78.591006,-86.775997 Q -78.591006,-86.535997 -78.411006,-86.400997 Q -78.231006,-86.265997 -78.009004,-86.230001 Q -77.787002,-86.194005 -77.484004,-86.146007 Q -77.181006,-86.098009 -77.031006,-86.025997 L -77.031006,-86.590001 Q -77.031006,-86.841993 -77.295,-87.060997" />
<path d="M -74.546982,-84.435997 L -75.062979,-84.435997 L -75.062979,-83.571993 L -75.560986,-83.571993 L -75.560986,-84.435997 L -75.986982,-84.435997 L -75.986982,-84.844005 L -75.560986,-84.844005 L -75.560986,-87.220001 Q -75.560986,-87.460001 -75.40498,-87.589005 Q -75.248975,-87.718009 -74.95499,-87.718009 Q -74.780986,-87.718009 -74.546982,-87.675997 L -74.546982,-87.255997 Q -74.636982,-87.280001 -74.786982,-87.280001 Q -74.948975,-87.280001 -75.005977,-87.222999 Q -75.062979,-87.165997 -75.062979,-86.998009 L -75.062979,-84.844005 L -74.546982,-84.844005 L -74.546982,-84.435997" />
<path d="M -73.57499,-83.205997 L -74.078994,-83.205997 L -74.078994,-83.835997 L -73.57499,-83.835997 L -73.57499,-83.205997" />
<path d="M -73.57499,-84.435997 L -74.072998,-84.435997 L -74.072998,-87.580001 L -73.57499,-87.580001 L -73.57499,-84.435997" />
<path d="M -70.553994,-84.792999 Q -70.928994,-84.345997 -71.607002,-84.345997 Q -72.267002,-84.345997 -72.645,-84.792999 Q -73.022998,-85.240001 -73.022998,-86.032003 Q -73.022998,-86.824005 -72.647998,-87.271007 Q -72.272998,-87.718009 -71.601006,-87.718009 Q -70.941006,-87.718009 -70.56,-87.274005 Q -70.178994,-86.830001 -70.178994,-86.055997 Q -70.178994,-85.240001 -70.553994,-84.792999 M -72.261006,-85.135001 Q -72.021006,-84.808009 -71.601006,-84.808009 Q -71.17499,-84.808009 -70.937998,-85.138009 Q -70.701006,-85.468009 -70.701006,-86.050001 Q -70.701006,-86.601993 -70.944004,-86.928995 Q -71.187002,-87.255997 -71.601006,-87.255997 Q -72.021006,-87.255997 -72.261006,-86.928995 Q -72.501006,-86.601993 -72.501006,-86.031993 Q -72.501006,-85.461993 -72.261006,-85.135001" />
<path d="M -69.698994,-84.435997 L -69.698994,-87.580001 L -69.19499,-87.580001 L -69.19499,-85.845997 Q -69.19499,-85.365997 -68.960996,-85.075001 Q -68.727002,-84.784005 -68.342998,-84.784005 Q -68.042998,-84.784005 -67.868994,-84.952003 Q -67.69499,-85.120001 -67.69499,-85.401993 L -67.69499,-87.580001 L -67.197002,-87.580001 L -67.197002,-85.204005 Q -67.197002,-84.814005 -67.467002,-84.580001 Q -67.737002,-84.345997 -68.192998,-84.345997 Q -68.540986,-84.345997 -68.783994,-84.490001 Q -69.027002,-84.634005 -69.237002,-84.964005 L -69.237002,-84.435997 L -69.698994,-84.435997" />
<path d="M -15.747002,-31.971997 Q -15.980996,-32.049995 -16.317012,-32.049995 Q -16.670996,-32.049995 -16.925996,-31.956997 Q -17.180996,-31.863999 -17.31,-31.708003 Q -17.439004,-31.552007 -17.496006,-31.390005 Q -17.553008,-31.228003 -17.553008,-31.042007 L -17.553008,-31.012007 L -18.080996,-31.012007 Q -18.075,-31.372007 -17.964004,-31.648003 Q -17.853008,-31.923999 -17.68501,-32.088999 Q -17.517012,-32.253999 -17.283008,-32.358999 Q -17.049004,-32.463999 -16.824004,-32.503003 Q -16.599004,-32.542007 -16.353008,-32.542007 Q -15.963008,-32.542007 -15.654004,-32.452007 Q -15.345,-32.362007 -15.159004,-32.223999 Q -14.973008,-32.085991 -14.853008,-31.902993 Q -14.733008,-31.719995 -14.688008,-31.548999 Q -14.643008,-31.378003 -14.643008,-31.203999 Q -14.643008,-30.802007 -14.886006,-30.513999 Q -15.129004,-30.225991 -15.573008,-30.105991 L -16.670996,-29.812007 Q -17.067012,-29.703999 -17.229004,-29.559995 Q -17.390996,-29.415991 -17.390996,-29.163999 Q -17.390996,-28.833999 -17.124004,-28.629995 Q -16.857012,-28.425991 -16.413008,-28.425991 Q -15.890996,-28.425991 -15.609004,-28.656997 Q -15.327012,-28.888003 -15.320996,-29.313999 L -14.793008,-29.313999 Q -14.799004,-28.672007 -15.219004,-28.315005 Q -15.639004,-27.958003 -16.395,-27.958003 Q -17.115,-27.958003 -17.532002,-28.303003 Q -17.949004,-28.648003 -17.949004,-29.242007 Q -17.949004,-30.039995 -17.090996,-30.262007 L -16.005,-30.549995 Q -15.200996,-30.759995 -15.200996,-31.258003 Q -15.200996,-31.395991 -15.245996,-31.518999 Q -15.290996,-31.642007 -15.402002,-31.768003 Q -15.513008,-31.893999 -15.747002,-31.971997" />
<path d="M -13.467012,-28.029995 L -13.971016,-28.029995 L -13.971016,-28.659995 L -13.467012,-28.659995 L -13.467012,-28.029995" />
<path d="M -13.467012,-29.259995 L -13.96502,-29.259995 L -13.96502,-32.403999 L -13.467012,-32.403999 L -13.467012,-29.259995" />
<path d="M -10.101016,-28.029995 L -10.599023,-28.029995 L -10.599023,-29.655991 Q -10.917012,-29.169995 -11.56502,-29.169995 Q -12.177012,-29.169995 -12.546016,-29.622993 Q -12.91502,-30.075991 -12.91502,-30.825991 Q -12.91502,-31.623999 -12.549023,-32.083003 Q -12.183027,-32.542007 -11.547012,-32.542007 Q -11.223027,-32.542007 -10.986025,-32.413003 Q -10.749023,-32.283999 -10.54502,-31.989995 L -10.54502,-32.403999 L -10.101016,-32.403999 L -10.101016,-28.029995 M -12.141025,-29.973999 Q -11.889023,-29.638003 -11.481016,-29.638003 Q -11.079023,-29.638003 -10.839023,-29.971001 Q -10.599023,-30.303999 -10.599023,-30.868003 Q -10.599023,-31.413999 -10.839023,-31.743999 Q -11.079023,-32.073999 -11.47502,-32.073999 Q -11.889023,-32.073999 -12.141025,-31.741001 Q -12.393027,-31.408003 -12.393027,-30.855991 Q -12.393027,-30.309995 -12.141025,-29.973999" />
<path d="M -9.099023,-30.999995 L -6.783008,-30.999995 Q -6.783008,-29.169995 -8.181016,-29.169995 Q -8.83502,-29.169995 -9.228018,-29.634995 Q -9.621016,-30.099995 -9.621016,-30.873999 Q -9.621016,-31.648003 -9.237012,-32.095005 Q -8.853008,-32.542007 -8.193008,-32.542007 Q -7.653008,-32.542007 -7.299014,-32.253999 Q -6.94502,-31.965991 -6.849023,-31.449995 L -7.353008,-31.449995 Q -7.563008,-32.079995 -8.17502,-32.079995 Q -8.601016,-32.079995 -8.844014,-31.786001 Q -9.087012,-31.492007 -9.099023,-30.999995 M -7.317012,-30.592007 L -9.087012,-30.592007 Q -9.057012,-30.153999 -8.811016,-29.893003 Q -8.56502,-29.632007 -8.187021,-29.632007 Q -7.809023,-29.632007 -7.563018,-29.908003 Q -7.317012,-30.183999 -7.317012,-30.592007" />
<path d="M -4.065,-30.412007 L -1.683008,-30.412007 L -1.683008,-29.919995 L -4.065,-29.919995 L -4.065,-28.522007 L -1.593008,-28.522007 L -1.593008,-28.029995 L -4.623008,-28.029995 L -4.623008,-32.403999 L -1.485,-32.403999 L -1.485,-31.912007 L -4.065,-31.912007 L -4.065,-30.412007" />
<path d="M -0.440996,-28.029995 L -0.945,-28.029995 L -0.945,-32.403999 L -0.440996,-32.403999 L -0.440996,-28.029995" />
<path d="M 0.620996,-30.999995 L 2.937012,-30.999995 Q 2.937012,-29.169995 1.539004,-29.169995 Q 0.885,-29.169995 0.492002,-29.634995 Q 0.099004,-30.099995 0.099004,-30.873999 Q 0.099004,-31.648003 0.483008,-32.095005 Q 0.867012,-32.542007 1.527012,-32.542007 Q 2.067012,-32.542007 2.421006,-32.253999 Q 2.775,-31.965991 2.870996,-31.449995 L 2.367012,-31.449995 Q 2.157012,-32.079995 1.545,-32.079995 Q 1.119004,-32.079995 0.876006,-31.786001 Q 0.633008,-31.492007 0.620996,-30.999995 M 2.403008,-30.592007 L 0.633008,-30.592007 Q 0.663008,-30.153999 0.909004,-29.893003 Q 1.155,-29.632007 1.532998,-29.632007 Q 1.910996,-29.632007 2.157002,-29.908003 Q 2.403008,-30.183999 2.403008,-30.592007" />
<path d="M 4.767012,-32.403999 L 5.973008,-29.259995 L 5.409004,-29.259995 L 4.521016,-31.809995 L 3.681016,-29.259995 L 3.117012,-29.259995 L 4.221016,-32.403999 L 4.767012,-32.403999" />
<path d="M 6.291016,-30.189995 L 6.795,-30.189995 Q 6.825,-29.902007 7.005,-29.767007 Q 7.185,-29.632007 7.533008,-29.632007 Q 7.869004,-29.632007 8.052002,-29.752007 Q 8.235,-29.872007 8.235,-30.099995 L 8.235,-30.232007 Q 8.235,-30.388003 8.121006,-30.466001 Q 8.007012,-30.543999 7.713008,-30.579995 Q 7.497012,-30.609995 7.413008,-30.621997 Q 7.329004,-30.633999 7.149004,-30.663999 Q 6.969004,-30.693999 6.897002,-30.714995 Q 6.825,-30.735991 6.69,-30.780991 Q 6.555,-30.825991 6.498008,-30.873999 Q 6.441016,-30.922007 6.357012,-30.997007 Q 6.273008,-31.072007 6.24001,-31.158999 Q 6.207012,-31.245991 6.18001,-31.359995 Q 6.153008,-31.473999 6.153008,-31.612007 Q 6.153008,-32.038003 6.432012,-32.290005 Q 6.711016,-32.542007 7.185,-32.542007 Q 7.749004,-32.542007 8.253008,-32.079995 Q 8.283008,-32.319995 8.406006,-32.431001 Q 8.529004,-32.542007 8.769004,-32.542007 Q 8.901016,-32.542007 9.111016,-32.488003 L 9.111016,-32.109995 Q 9.057012,-32.122007 9.003008,-32.122007 Q 8.733008,-32.122007 8.733008,-31.875991 L 8.733008,-30.028003 Q 8.733008,-29.608003 8.433008,-29.388999 Q 8.133008,-29.169995 7.551016,-29.169995 Q 6.327012,-29.169995 6.291016,-30.189995 M 7.971006,-31.884995 Q 7.707012,-32.103999 7.293008,-32.103999 Q 6.999004,-32.103999 6.837002,-31.971997 Q 6.675,-31.839995 6.675,-31.599995 Q 6.675,-31.359995 6.855,-31.224995 Q 7.035,-31.089995 7.257002,-31.053999 Q 7.479004,-31.018003 7.782002,-30.970005 Q 8.085,-30.922007 8.235,-30.849995 L 8.235,-31.413999 Q 8.235,-31.665991 7.971006,-31.884995" />
<path d="M 10.719023,-29.259995 L 10.203027,-29.259995 L 10.203027,-28.395991 L 9.70502,-28.395991 L 9.70502,-29.259995 L 9.279023,-29.259995 L 9.279023,-29.668003 L 9.70502,-29.668003 L 9.70502,-32.043999 Q 9.70502,-32.283999 9.861025,-32.413003 Q 10.017031,-32.542007 10.311016,-32.542007 Q 10.48502,-32.542007 10.719023,-32.499995 L 10.719023,-32.079995 Q 10.629023,-32.103999 10.479023,-32.103999 Q 10.317031,-32.103999 10.260029,-32.046997 Q 10.203027,-31.989995 10.203027,-31.822007 L 10.203027,-29.668003 L 10.719023,-29.668003 L 10.719023,-29.259995" />
<path d="M 11.691016,-28.029995 L 11.187012,-28.029995 L 11.187012,-28.659995 L 11.691016,-28.659995 L 11.691016,-28.029995" />
<path d="M 11.691016,-29.259995 L 11.193008,-29.259995 L 11.193008,-32.403999 L 11.691016,-32.403999 L 11.691016,-29.259995" />
<path d="M 14.712012,-29.616997 Q 14.337012,-29.169995 13.659004,-29.169995 Q 12.999004,-29.169995 12.621006,-29.616997 Q 12.243008,-30.063999 12.243008,-30.856001 Q 12.243008,-31.648003 12.618008,-32.095005 Q 12.993008,-32.542007 13.665,-32.542007 Q 14.325,-32.542007 14.706006,-32.098003 Q 15.087012,-31.653999 15.087012,-30.879995 Q 15.087012,-30.063999 14.712012,-29.616997 M 13.005,-29.958999 Q 13.245,-29.632007 13.665,-29.632007 Q 14.091016,-29.632007 14.328008,-29.962007 Q 14.565,-30.292007 14.565,-30.873999 Q 14.565,-31.425991 14.322002,-31.752993 Q 14.079004,-32.079995 13.665,-32.079995 Q 13.245,-32.079995 13.005,-31.752993 Q 12.765,-31.425991 12.765,-30.855991 Q 12.765,-30.285991 13.005,-29.958999" />
<path d="M 15.567012,-29.259995 L 15.567012,-32.403999 L 16.071016,-32.403999 L 16.071016,-30.669995 Q 16.071016,-30.189995 16.30501,-29.898999 Q 16.539004,-29.608003 16.923008,-29.608003 Q 17.223008,-29.608003 17.397012,-29.776001 Q 17.571016,-29.943999 17.571016,-30.225991 L 17.571016,-32.403999 L 18.069004,-32.403999 L 18.069004,-30.028003 Q 18.069004,-29.638003 17.799004,-29.403999 Q 17.529004,-29.169995 17.073008,-29.169995 Q 16.72502,-29.169995 16.482012,-29.313999 Q 16.239004,-29.458003 16.029004,-29.788003 L 16.029004,-29.259995 L 15.567012,-29.259995" />
</g>
<g fill="none" stroke="rgb(99,99,99)" stroke-width="0.09" id="Hidden" stroke-dasharray="0.002286 0.271143">
<line x1="88.539518" y1="76.052448" x2="88.539518" y2="73.11306" />
<line x1="88.539518" y1="73.11306" x2="92.532904" y2="70.807478" />
<line x1="92.532904" y1="70.807478" x2="92.532904" y2="67.010769" />
<line x1="109.577713" y1="57.169944" x2="92.532904" y2="67.010769" />
<line x1="109.577713" y1="60.966653" x2="109.577713" y2="57.169944" />
<line x1="109.577713" y1="60.966653" x2="113.571098" y2="58.661071" />
<line x1="113.571098" y1="61.600459" x2="113.571098" y2="58.661071" />
<path d="M 84.747658,73.844845 A 1.9124999999999999,1.1041823898251593 0.0 0,1 87.542592,73.900687" />
<path d="M 84.657408,73.900687 A 1.9124999999999999,1.1041823898251593 0.0 0,1 84.747658,73.844845" />
<path d="M 100.3875,60.192002 A 14.287500000000001,8.24889197104678 0.0 0,1 71.8125,60.192002" />
<line x1="83.660482" y1="76.052448" x2="83.660482" y2="73.11306" />
<path d="M 88.539518,73.11306 A 3.4499999999999997,1.991858428704209 0.0 0,1 83.660482,73.11306" />
<path d="M 92.532904,70.807478 A 1.875,1.0825317547305484 0.0 0,1 89.881254,70.807478" />
<line x1="88.75165" y1="70.155302" x2="89.881254" y2="70.807478" />
<path d="M 83.44835,70.155302 A 3.75,2.165063509461097 0.0 0,1 88.75165,70.155302" />
<line x1="83.44835" y1="70.155302" x2="82.318746" y2="70.807478" />
<path d="M 82.318746,70.807478 A 1.875,1.0825317547305482 3.895368034302951e-15 0,1 79.667096,70.807478" />
<line x1="83.660482" y1="73.11306" x2="79.667096" y2="70.807478" />
<path d="M 84.747658,70.905458 A 1.9124999999999999,1.1041823898251593 0.0 0,1 88.0125,71.686233" />
<path d="M 88.0125,71.686233 A 1.9125000000000012,1.10418238982516 0.0 0,1 84.1875,71.686233" />
<path d="M 84.1875,71.686233 A 1.9124999999999999,1.1041823898251593 0.0 0,1 84.747658,70.905458" />
<path d="M 92.532904,67.010769 A 1.875,1.0825317547305484 0.0 0,1 89.881254,67.010769" />
<path d="M 62.073112,50.507332 A 1.875,1.0825317547305484 180.0 0,0 62.622287,51.272797" />
<path d="M 84.600538,41.006736 A 3.75,2.165063509461097 180.0 0,0 87.599462,41.006736" />
<line x1="62.622287" y1="51.272797" x2="63.75189" y2="51.924974" />
<path d="M 63.75189,54.986836 A 3.75,2.165063509461097 180.0 0,0 64.85024,53.455905" />
<path d="M 64.85024,53.455905 A 3.75,2.165063509461097 180.0 0,0 63.75189,51.924974" />
<line x1="62.622287" y1="55.639013" x2="63.75189" y2="54.986836" />
<path d="M 62.622287,57.169944 A 1.875,1.0825317547305484 0.0 0,1 62.073112,56.404478" />
<path d="M 62.073112,56.404478 A 1.875,1.0825317547305484 0.0 0,1 62.622287,55.639013" />
<path d="M 110.126888,50.507332 A 1.875,1.0825317547305484 0.0 0,1 109.577713,51.272797" />
<line x1="79.667096" y1="67.010769" x2="62.622287" y2="57.169944" />
<line x1="109.577713" y1="51.272797" x2="108.44811" y2="51.924974" />
<path d="M 79.667096,67.010769 A 1.875,1.0825317547305484 180.0 0,0 82.318746,67.010769" />
<path d="M 108.44811,51.924974 A 3.75,2.165063509461097 180.0 0,0 107.34976,53.455905" />
<path d="M 107.34976,53.455905 A 3.75,2.165063509461097 180.0 0,0 108.44811,54.986836" />
<line x1="82.318746" y1="67.010769" x2="83.44835" y2="66.358592" />
<line x1="109.577713" y1="55.639013" x2="108.44811" y2="54.986836" />
<path d="M 88.75165,66.358592 A 3.75,2.165063509461097 180.0 0,0 83.44835,66.358592" />
<path d="M 109.577713,57.169944 A 1.875,1.0825317547305484 180.0 0,0 110.126888,56.404478" />
<path d="M 110.126888,56.404478 A 1.875,1.0825317547305484 180.0 0,0 109.577713,55.639013" />
<line x1="89.881254" y1="67.010769" x2="88.75165" y2="66.358592" />
<path d="M 79.720129,39.93166 A 1.7999999999999998,1.0392304845413265 0.0 0,1 82.265713,39.93166" />
<line x1="82.265713" y1="39.93166" x2="83.395317" y2="40.583837" />
<path d="M 88.804683,40.583837 A 3.8249999999999997,2.2083647796503185 0.0 0,1 83.395317,40.583837" />
<line x1="89.934287" y1="39.93166" x2="88.804683" y2="40.583837" />
<path d="M 89.934287,39.93166 A 1.7999999999999998,1.0392304845413263 3.895368034302951e-15 0,1 92.479871,39.93166" />
<line x1="92.479871" y1="39.93166" x2="109.52468" y2="49.772485" />
<path d="M 109.52468,49.772485 A 1.7999999999999998,1.0392304845413263 -3.895368034302951e-15 0,1 110.051888,50.507332" />
<path d="M 110.051888,50.507332 A 1.7999999999999998,1.0392304845413263 -3.895368034302951e-15 0,1 109.52468,51.242179" />
<line x1="109.52468" y1="51.242179" x2="108.395077" y2="51.894356" />
<path d="M 108.395077,55.017455 A 3.8249999999999997,2.2083647796503185 0.0 0,1 107.27476,53.455905" />
<path d="M 107.27476,53.455905 A 3.8249999999999997,2.2083647796503185 0.0 0,1 108.395077,51.894356" />
<line x1="109.52468" y1="55.669632" x2="108.395077" y2="55.017455" />
<path d="M 109.52468,55.669632 A 1.7999999999999998,1.0392304845413265 0.0 0,1 110.051888,56.404478" />
<path d="M 110.051888,56.404478 A 1.7999999999999998,1.0392304845413265 0.0 0,1 109.52468,57.139325" />
<line x1="109.52468" y1="57.139325" x2="92.479871" y2="66.98015" />
<path d="M 92.479871,66.98015 A 1.7999999999999998,1.0392304845413265 0.0 0,1 89.934287,66.98015" />
<line x1="89.934287" y1="66.98015" x2="88.804683" y2="66.327974" />
<path d="M 83.395317,66.327974 A 3.8249999999999997,2.2083647796503185 0.0 0,1 88.804683,66.327974" />
<line x1="82.265713" y1="66.98015" x2="83.395317" y2="66.327974" />
<path d="M 82.265713,66.98015 A 1.7999999999999998,1.0392304845413263 3.895368034302951e-15 0,1 79.720129,66.98015" />
<line x1="79.720129" y1="66.98015" x2="62.67532" y2="57.139325" />
<path d="M 62.67532,57.139325 A 1.7999999999999998,1.0392304845413263 -3.895368034302951e-15 0,1 62.148112,56.404478" />
<path d="M 62.148112,56.404478 A 1.7999999999999998,1.0392304845413263 -3.895368034302951e-15 0,1 62.67532,55.669632" />
<line x1="62.67532" y1="55.669632" x2="63.804923" y2="55.017455" />
<path d="M 63.804923,51.894356 A 3.8249999999999997,2.2083647796503185 0.0 0,1 64.92524,53.455905" />
<path d="M 64.92524,53.455905 A 3.8249999999999997,2.2083647796503185 0.0 0,1 63.804923,55.017455" />
<line x1="62.67532" y1="51.242179" x2="63.804923" y2="51.894356" />
<path d="M 62.67532,51.242179 A 1.7999999999999998,1.0392304845413265 0.0 0,1 62.148112,50.507332" />
<path d="M 62.148112,50.507332 A 1.7999999999999998,1.0392304845413265 0.0 0,1 62.67532,49.772485" />
<line x1="62.67532" y1="49.772485" x2="79.720129" y2="39.93166" />
<path d="M 109.577713,59.435722 A 1.875,1.0825317547305484 0.0 0,1 110.126888,60.201188" />
<path d="M 110.126888,60.201188 A 1.875,1.0825317547305484 0.0 0,1 109.577713,60.966653" />
<path d="M 114.58158,57.252614 A 3.4499999999999997,1.991858428704209 0.0 0,1 113.571098,58.661071" />
<path d="M 109.577713,53.538575 A 1.875,1.0825317547305482 -3.895368034302951e-15 0,1 110.126888,54.304041" />
<path d="M 110.126888,54.304041 A 1.875,1.0825317547305482 -3.895368034302951e-15 0,1 109.577713,55.069507" />
<line x1="108.44811" y1="55.721683" x2="109.577713" y2="55.069507" />
<path d="M 108.44811,58.783545 A 3.75,2.165063509461097 0.0 0,1 107.34976,57.252614" />
<path d="M 107.34976,57.252614 A 3.75,2.165063509461097 0.0 0,1 108.44811,55.721683" />
<line x1="108.44811" y1="58.783545" x2="109.577713" y2="59.435722" />
<path d="M 109.747419,56.471839 A 1.9124999999999999,1.1041823898251593 0.0 0,1 113.01226,57.252614" />
<path d="M 113.01226,57.252614 A 1.9125000000000012,1.10418238982516 0.0 0,1 109.18726,57.252614" />
<path d="M 109.18726,57.252614 A 1.9124999999999999,1.1041823898251593 0.0 0,1 109.747419,56.471839" />
<line x1="79.667096" y1="70.807478" x2="79.667096" y2="67.010769" />
<line x1="62.622287" y1="60.966653" x2="62.622287" y2="57.169944" />
<line x1="62.622287" y1="60.966653" x2="58.628902" y2="58.661071" />
<line x1="58.628902" y1="61.600459" x2="58.628902" y2="58.661071" />
<path d="M 58.628902,58.661071 A 3.4499999999999997,1.991858428704209 0.0 0,1 57.61842,57.252614" />
<path d="M 59.747898,56.471839 A 1.9124999999999999,1.1041823898251593 0.0 0,1 63.01274,57.252614" />
<path d="M 63.01274,57.252614 A 1.9125000000000012,1.10418238982516 0.0 0,1 59.18774,57.252614" />
<path d="M 59.18774,57.252614 A 1.9124999999999999,1.1041823898251593 0.0 0,1 59.747898,56.471839" />
<path d="M 88.48125,69.305315 A 14.287500000000001,8.24889197104678 0.0 0,1 83.71875,69.305315" />
<path d="M 84.747658,42.038221 A 1.9124999999999999,1.1041823898251593 0.0 0,1 88.0125,42.818996" />
<path d="M 88.0125,42.818996 A 1.9125000000000012,1.10418238982516 0.0 0,1 84.1875,42.818996" />
<path d="M 84.1875,42.818996 A 1.9124999999999999,1.1041823898251593 0.0 0,1 84.747658,42.038221" />
<path d="M 79.667096,43.69775 A 1.875,1.0825317547305484 0.0 0,1 82.318746,43.69775" />
<line x1="83.44835" y1="44.349927" x2="82.318746" y2="43.69775" />
<path d="M 62.622287,55.069507 A 1.875,1.0825317547305484 0.0 0,1 62.073112,54.304041" />
<path d="M 62.073112,54.304041 A 1.875,1.0825317547305484 0.0 0,1 62.622287,53.538575" />
<path d="M 88.75165,44.349927 A 3.75,2.165063509461097 0.0 0,1 83.44835,44.349927" />
<line x1="63.75189" y1="55.721683" x2="62.622287" y2="55.069507" />
<line x1="88.75165" y1="44.349927" x2="89.881254" y2="43.69775" />
<path d="M 63.75189,55.721683 A 3.75,2.165063509461097 0.0 0,1 64.85024,57.252614" />
<path d="M 64.85024,57.252614 A 3.75,2.165063509461097 0.0 0,1 63.75189,58.783545" />
<path d="M 89.881254,43.69775 A 1.875,1.0825317547305482 3.895368034302951e-15 0,1 92.532904,43.69775" />
<line x1="63.75189" y1="58.783545" x2="62.622287" y2="59.435722" />
<path d="M 62.622287,60.966653 A 1.875,1.0825317547305482 -3.895368034302951e-15 0,1 62.073112,60.201188" />
<path d="M 62.073112,60.201188 A 1.875,1.0825317547305482 -3.895368034302951e-15 0,1 62.622287,59.435722" />
<path d="M 110.051888,29.686669 A 1.7999999999999998,1.0392304845413263 -3.895368034302951e-15 0,1 109.52468,30.421516" />
<line x1="109.52468" y1="30.421516" x2="108.395077" y2="31.073693" />
<path d="M 108.395077,31.073693 A 3.8249999999999997,2.2083647796503185 180.0 0,0 107.27476,32.635242" />
<path d="M 107.27476,32.635242 A 3.8249999999999997,2.2083647796503185 180.0 0,0 108.395077,34.196792" />
<line x1="109.52468" y1="34.848969" x2="108.395077" y2="34.196792" />
<path d="M 109.52468,36.318663 A 1.7999999999999998,1.0392304845413265 180.0 0,0 110.051888,35.583816" />
<path d="M 110.051888,35.583816 A 1.7999999999999998,1.0392304845413265 180.0 0,0 109.52468,34.848969" />
<line x1="109.52468" y1="36.318663" x2="92.479871" y2="46.159488" />
<path d="M 92.479871,46.159488 A 1.7999999999999998,1.0392304845413265 0.0 0,1 89.934287,46.159488" />
<line x1="89.934287" y1="46.159488" x2="88.804683" y2="45.507311" />
<path d="M 88.804683,45.507311 A 3.8249999999999997,2.2083647796503185 180.0 0,0 83.395317,45.507311" />
<line x1="82.265713" y1="46.159488" x2="83.395317" y2="45.507311" />
<path d="M 79.720129,46.159488 A 1.7999999999999998,1.0392304845413263 -180.0 0,0 82.265713,46.159488" />
<line x1="79.720129" y1="46.159488" x2="62.67532" y2="36.318663" />
<path d="M 62.67532,36.318663 A 1.7999999999999998,1.0392304845413263 -3.895368034302951e-15 0,1 62.148112,35.583816" />
<path d="M 62.148112,35.583816 A 1.7999999999999998,1.0392304845413263 -3.895368034302951e-15 0,1 62.67532,34.848969" />
<line x1="62.67532" y1="34.848969" x2="63.804923" y2="34.196792" />
<path d="M 63.804923,34.196792 A 3.8249999999999997,2.2083647796503185 180.0 0,0 64.92524,32.635242" />
<path d="M 64.92524,32.635242 A 3.8249999999999997,2.2083647796503185 180.0 0,0 63.804923,31.073693" />
<line x1="62.67532" y1="30.421516" x2="63.804923" y2="31.073693" />
<path d="M 62.148112,29.686669 A 1.7999999999999998,1.0392304845413265 180.0 0,0 62.67532,30.421516" />
<path d="M 62.148112,29.989778 A 1.875,1.0825317547305484 180.0 0,0 62.622287,30.452135" />
<line x1="62.622287" y1="30.452135" x2="63.75189" y2="31.104311" />
<path d="M 63.75189,34.166173 A 3.75,2.165063509461097 180.0 0,0 64.85024,32.635242" />
<path d="M 64.85024,32.635242 A 3.75,2.165063509461097 180.0 0,0 63.75189,31.104311" />
<line x1="62.622287" y1="34.81835" x2="63.75189" y2="34.166173" />
<path d="M 62.622287,36.349281 A 1.875,1.0825317547305484 0.0 0,1 62.148112,35.886925" />
<path d="M 62.148112,35.280707 A 1.875,1.0825317547305484 0.0 0,1 62.622287,34.81835" />
<path d="M 110.051888,29.989778 A 1.875,1.0825317547305484 0.0 0,1 109.577713,30.452135" />
<line x1="79.667096" y1="46.190106" x2="62.622287" y2="36.349281" />
<line x1="109.577713" y1="30.452135" x2="108.44811" y2="31.104311" />
<path d="M 79.667096,46.190106 A 1.875,1.0825317547305484 180.0 0,0 82.318746,46.190106" />
<path d="M 108.44811,31.104311 A 3.75,2.165063509461097 180.0 0,0 107.34976,32.635242" />
<path d="M 107.34976,32.635242 A 3.75,2.165063509461097 180.0 0,0 108.44811,34.166173" />
<line x1="82.318746" y1="46.190106" x2="83.44835" y2="45.53793" />
<line x1="109.577713" y1="34.81835" x2="108.44811" y2="34.166173" />
<path d="M 88.75165,45.53793 A 3.75,2.165063509461097 180.0 0,0 83.44835,45.53793" />
<path d="M 109.577713,36.349281 A 1.875,1.0825317547305484 180.0 0,0 110.051888,35.886925" />
<path d="M 110.051888,35.280707 A 1.875,1.0825317547305484 180.0 0,0 109.577713,34.81835" />
<line x1="89.881254" y1="46.190106" x2="88.75165" y2="45.53793" />
<line x1="109.577713" y1="36.349281" x2="92.532904" y2="46.190106" />
<path d="M 92.532904,46.190106 A 1.875,1.0825317547305484 0.0 0,1 89.881254,46.190106" />
<path d="M 62.073112,22.950572 A 1.875,1.0825317547305484 180.0 0,0 62.622287,23.716038" />
<line x1="62.622287" y1="23.716038" x2="63.75189" y2="24.368215" />
<path d="M 63.75189,27.430077 A 3.75,2.165063509461097 180.0 0,0 64.85024,25.899146" />
<path d="M 64.85024,25.899146 A 3.75,2.165063509461097 180.0 0,0 63.75189,24.368215" />
<line x1="62.622287" y1="28.082253" x2="63.75189" y2="27.430077" />
<path d="M 62.622287,29.613184 A 1.875,1.0825317547305484 0.0 0,1 62.073112,28.847719" />
<path d="M 62.073112,28.847719 A 1.875,1.0825317547305484 0.0 0,1 62.622287,28.082253" />
<path d="M 110.126888,22.950572 A 1.875,1.0825317547305484 0.0 0,1 109.577713,23.716038" />
<line x1="79.667096" y1="39.454009" x2="62.622287" y2="29.613184" />
<line x1="109.577713" y1="23.716038" x2="108.44811" y2="24.368215" />
<path d="M 79.667096,39.454009 A 1.875,1.0825317547305484 180.0 0,0 82.318746,39.454009" />
<path d="M 108.44811,24.368215 A 3.75,2.165063509461097 180.0 0,0 107.34976,25.899146" />
<path d="M 107.34976,25.899146 A 3.75,2.165063509461097 180.0 0,0 108.44811,27.430077" />
<line x1="82.318746" y1="39.454009" x2="83.44835" y2="38.801833" />
<line x1="109.577713" y1="28.082253" x2="108.44811" y2="27.430077" />
<path d="M 88.75165,38.801833 A 3.75,2.165063509461097 180.0 0,0 83.44835,38.801833" />
<path d="M 109.577713,29.613184 A 1.875,1.0825317547305484 180.0 0,0 110.126888,28.847719" />
<path d="M 110.126888,28.847719 A 1.875,1.0825317547305484 180.0 0,0 109.577713,28.082253" />
<line x1="89.881254" y1="39.454009" x2="88.75165" y2="38.801833" />
<line x1="109.577713" y1="29.613184" x2="92.532904" y2="39.454009" />
<path d="M 92.532904,39.454009 A 1.875,1.0825317547305484 0.0 0,1 89.881254,39.454009" />
<path d="M 84.416202,59.219861 A 2.3812499999999996,1.3748153285077964 0.0 0,1 88.48125,60.192002" />
<path d="M 88.48125,60.192002 A 2.3812500000000014,1.3748153285077973 0.0 0,1 83.71875,60.192002" />
<path d="M 83.71875,60.192002 A 2.3812499999999996,1.3748153285077964 0.0 0,1 84.416202,59.219861" />
<line x1="110.126888" y1="56.404478" x2="110.126888" y2="60.201188" />
<line x1="88.0125" y1="71.686233" x2="88.0125" y2="74.62562" />
<line x1="84.1875" y1="71.686233" x2="84.1875" y2="74.62562" />
<line x1="63.01274" y1="57.252614" x2="63.01274" y2="60.192002" />
<line x1="59.18774" y1="57.252614" x2="59.18774" y2="60.192002" />
<line x1="113.01226" y1="57.252614" x2="113.01226" y2="60.192002" />
<line x1="109.18726" y1="57.252614" x2="109.18726" y2="60.192002" />
<line x1="88.0125" y1="42.818996" x2="88.0125" y2="45.758384" />
<line x1="84.1875" y1="42.818996" x2="84.1875" y2="45.758384" />
<line x1="62.073112" y1="53.855642" x2="62.073112" y2="54.304041" />
<line x1="64.85024" y1="53.455905" x2="64.85024" y2="57.252614" />
<line x1="62.073112" y1="56.404478" x2="62.073112" y2="60.201188" />
<line x1="110.126888" y1="53.855642" x2="110.126888" y2="54.304041" />
<line x1="107.34976" y1="53.455905" x2="107.34976" y2="57.252614" />
<line x1="110.051888" y1="50.204223" x2="110.051888" y2="50.507332" />
<line x1="107.27476" y1="32.635242" x2="107.27476" y2="53.455905" />
<line x1="110.051888" y1="35.583816" x2="110.051888" y2="56.404478" />
<line x1="62.148112" y1="35.583816" x2="62.148112" y2="56.404478" />
<line x1="64.92524" y1="32.635242" x2="64.92524" y2="53.455905" />
<line x1="62.148112" y1="50.204223" x2="62.148112" y2="50.507332" />
<line x1="64.85024" y1="25.899146" x2="64.85024" y2="32.635242" />
<line x1="62.073112" y1="28.847719" x2="62.073112" y2="29.686669" />
<line x1="107.34976" y1="25.899146" x2="107.34976" y2="32.635242" />
<line x1="110.126888" y1="28.847719" x2="110.126888" y2="29.686669" />
<line x1="89.881254" y1="70.807478" x2="89.881254" y2="67.010769" />
<line x1="109.577713" y1="59.435722" x2="109.577713" y2="55.639013" />
<line x1="88.75165" y1="70.155302" x2="88.75165" y2="66.358592" />
<line x1="83.44835" y1="70.155302" x2="83.44835" y2="66.358592" />
<line x1="82.318746" y1="70.807478" x2="82.318746" y2="67.010769" />
<line x1="82.318746" y1="43.69775" x2="82.318746" y2="42.166819" />
<line x1="83.44835" y1="44.349927" x2="83.44835" y2="41.514643" />
<line x1="62.622287" y1="55.069507" x2="62.622287" y2="51.272797" />
<line x1="88.75165" y1="44.349927" x2="88.75165" y2="41.514643" />
<line x1="63.75189" y1="55.721683" x2="63.75189" y2="51.924974" />
<line x1="89.881254" y1="43.69775" x2="89.881254" y2="42.166819" />
<line x1="63.75189" y1="58.783545" x2="63.75189" y2="54.986836" />
<line x1="62.622287" y1="59.435722" x2="62.622287" y2="55.639013" />
<line x1="109.577713" y1="55.069507" x2="109.577713" y2="53.538575" />
<line x1="108.44811" y1="55.721683" x2="108.44811" y2="51.924974" />
<line x1="108.44811" y1="58.783545" x2="108.44811" y2="54.986836" />
<line x1="82.265713" y1="39.93166" x2="82.265713" y2="39.871601" />
<line x1="79.720129" y1="39.93166" x2="79.720129" y2="39.871601" />
<line x1="83.395317" y1="40.583837" x2="83.395317" y2="40.522599" />
<line x1="88.804683" y1="40.583837" x2="88.804683" y2="40.522599" />
<line x1="89.934287" y1="39.93166" x2="89.934287" y2="39.871601" />
<line x1="92.479871" y1="39.93166" x2="92.479871" y2="39.871601" />
<line x1="109.52468" y1="49.772485" x2="109.52468" y2="49.711248" />
<line x1="109.52468" y1="51.242179" x2="109.52468" y2="30.421516" />
<line x1="108.395077" y1="51.894356" x2="108.395077" y2="31.073693" />
<line x1="108.395077" y1="55.017455" x2="108.395077" y2="34.196792" />
<line x1="109.52468" y1="55.669632" x2="109.52468" y2="34.848969" />
<line x1="109.52468" y1="57.139325" x2="109.52468" y2="36.318663" />
<line x1="92.479871" y1="66.98015" x2="92.479871" y2="46.159488" />
<line x1="89.934287" y1="66.98015" x2="89.934287" y2="46.159488" />
<line x1="88.804683" y1="66.327974" x2="88.804683" y2="45.507311" />
<line x1="83.395317" y1="66.327974" x2="83.395317" y2="45.507311" />
<line x1="82.265713" y1="66.98015" x2="82.265713" y2="46.159488" />
<line x1="79.720129" y1="66.98015" x2="79.720129" y2="46.159488" />
<line x1="62.67532" y1="57.139325" x2="62.67532" y2="36.318663" />
<line x1="62.67532" y1="55.669632" x2="62.67532" y2="34.848969" />
<line x1="63.804923" y1="55.017455" x2="63.804923" y2="34.196792" />
<line x1="63.804923" y1="51.894356" x2="63.804923" y2="31.073693" />
<line x1="62.67532" y1="51.242179" x2="62.67532" y2="30.421516" />
<line x1="62.67532" y1="49.772485" x2="62.67532" y2="49.711248" />
<line x1="62.622287" y1="30.452135" x2="62.622287" y2="23.716038" />
<line x1="63.75189" y1="31.104311" x2="63.75189" y2="24.368215" />
<line x1="63.75189" y1="34.166173" x2="63.75189" y2="27.430077" />
<line x1="62.622287" y1="34.81835" x2="62.622287" y2="28.082253" />
<line x1="62.622287" y1="36.349281" x2="62.622287" y2="29.613184" />
<line x1="109.577713" y1="30.452135" x2="109.577713" y2="23.716038" />
<line x1="79.667096" y1="46.190106" x2="79.667096" y2="39.454009" />
<line x1="108.44811" y1="31.104311" x2="108.44811" y2="24.368215" />
<line x1="82.318746" y1="46.190106" x2="82.318746" y2="39.454009" />
<line x1="108.44811" y1="34.166173" x2="108.44811" y2="27.430077" />
<line x1="83.44835" y1="45.53793" x2="83.44835" y2="38.801833" />
<line x1="109.577713" y1="34.81835" x2="109.577713" y2="28.082253" />
<line x1="88.75165" y1="45.53793" x2="88.75165" y2="38.801833" />
<line x1="109.577713" y1="36.349281" x2="109.577713" y2="29.613184" />
<line x1="89.881254" y1="46.190106" x2="89.881254" y2="39.454009" />
<line x1="92.532904" y1="46.190106" x2="92.532904" y2="39.454009" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

View file

@ -0,0 +1,11 @@
<?xml version='1.0' encoding='utf-8'?>
<svg width="100.09mm" height="66.151142mm" viewBox="-541.648921 -836.924186 4767.847817 3151.14975" version="1.1" xmlns="http://www.w3.org/2000/svg">
<g transform="scale(1,-1)" stroke-linecap="round">
<g fill="none" stroke="rgb(0,0,0)" stroke-width="4.28720455097892">
<path d="M 1445.821235,834.74528 C 1353.526765,803.718243 1260.88331,770.545273 1167.994034,735.580745 C 1083.806246,703.883592 999.414296,670.712071 914.854789,636.113423 C 835.638754,603.69438 756.274425,570.022422 676.77418,534.952257 C 592.583511,497.803918 508.238612,459.095508 423.75228,418.390166 C 381.475605,398.017947 339.163641,377.140102 296.820744,355.66775 C 255.380094,334.651781 213.909574,313.067151 172.417787,290.800527 C 132.498839,269.376021 92.559713,247.323024 52.616058,224.499576 C 33.433555,213.541072 14.251486,202.395739 -4.930148,191.063577 C -23.484296,180.09936 -42.03687,168.953007 -60.583168,157.587759 C -78.431472,146.650245 -96.273964,135.510001 -114.110039,124.195809 C -131.629708,113.082326 -149.143185,101.801012 -166.62766,90.088045 C -183.749938,78.617716 -200.844402,66.733433 -217.887184,54.406354 C -249.053676,31.859239 -280.057077,7.844124 -310.705712,-17.830688 C -324.493158,-29.38285 -338.206616,-41.273839 -351.816854,-53.534273 C -364.358757,-64.832326 -376.813009,-76.4441 -389.144607,-88.405566 C -400.391943,-99.315314 -411.537246,-110.515963 -422.53694,-122.049338 C -432.452058,-132.445516 -442.248865,-143.112041 -451.870806,-154.096773 C -460.428098,-163.866068 -468.84708,-173.887048 -477.05134,-184.212339 C -484.238191,-193.257193 -491.260272,-202.535563 -498.010658,-212.099865 C -503.829085,-220.343718 -509.445657,-228.800001 -514.706406,-237.507752 C -519.174839,-244.90404 -523.386558,-252.481753 -527.120208,-260.233274 C -530.2732,-266.779278 -533.085259,-273.449232 -535.256161,-280.125931 C -537.126266,-285.877518 -538.520579,-291.634109 -539.139475,-297.089851 C -539.710024,-302.119395 -539.621572,-306.893256 -538.815367,-311.085197 C -538.009295,-315.276448 -536.485707,-318.88597 -534.41361,-321.787038 C -532.173969,-324.922679 -529.293531,-327.230668 -526.080734,-328.912927 C -522.384603,-330.848265 -518.248591,-331.955443 -513.912155,-332.549837 C -508.837989,-333.245352 -503.489405,-333.238769 -498.016517,-332.811088 C -491.653993,-332.313885 -485.123469,-331.247553 -478.514247,-329.834557 C -470.940437,-328.21534 -463.263282,-326.140884 -455.535716,-323.780678 C -446.817103,-321.117779 -438.03432,-318.091135 -429.219119,-314.830251 C -419.4158,-311.203845 -409.572388,-307.287744 -399.708184,-303.182158 C -388.876522,-298.673905 -378.01979,-293.937177 -367.149854,-289.051048 C -355.343719,-283.74409 -343.522009,-278.26089 -331.692086,-272.665067 C -318.963322,-266.644073 -306.225051,-260.492693 -293.48194,-254.263696 C -279.88052,-247.615147 -266.273587,-240.878173 -252.664091,-234.095751 C -238.238065,-226.906402 -223.809159,-219.665987 -209.379903,-212.417551 C -194.175885,-204.777738 -178.971635,-197.135641 -163.767154,-189.491259 C -147.290706,-181.209732 -130.81417,-172.933298 -114.327757,-164.445833 C -96.638051,-155.338894 -78.936973,-145.988995 -61.23183,-136.489711 C -42.83628,-126.618999 -24.437139,-116.590472 -6.034405,-106.404129 C 12.988826,-95.875361 32.015044,-85.181632 51.041971,-74.350743 C 90.663309,-51.796303 130.287184,-28.649245 169.904219,-5.058022 C 211.090446,19.468633 252.269483,44.474456 293.437331,69.839459 C 335.517614,95.767754 377.586396,122.072076 419.642854,148.660515 C 503.76059,201.847286 587.828904,256.147719 671.854879,311.120502 C 751.312767,363.113312 830.733706,415.715977 910.121501,468.777679 C 995.01224,525.524664 1079.865697,582.797171 1164.674248,640.617824 C 1192.283028,659.441198 1219.886541,678.326945 1247.484787,697.275067 C 1270.73957,713.242184 1293.996044,729.258338 1317.241888,745.321373 C 1327.107887,752.139255 1336.976715,758.968255 1346.848371,765.808374 C 1355.493823,771.798596 1364.146132,777.799924 1372.767724,783.793106 C 1380.127277,788.908999 1387.464446,794.018955 1394.889693,799.180553 C 1401.009487,803.434676 1407.189112,807.723879 1413.119965,811.887911 C 1417.7599,815.145595 1422.247573,818.326668 1427.380659,821.845665 C 1431.063255,824.370277 1435.078042,827.068818 1437.610752,828.998585 C 1439.134823,830.159833 1440.12222,831.0427 1443.76641,833.306567 C 1444.982916,834.062292 1446.495484,834.97191 1445.821235,834.74528" />
<path d="M 4088.698422,-2201.97176 C 4071.863286,-2209.539657 4054.994642,-2217.480665 4038.106206,-2225.738798 C 4022.573261,-2233.338843 4007.022586,-2241.206509 3991.458597,-2249.421198 C 3983.516432,-2253.614748 3975.570735,-2257.900919 3967.622793,-2262.30905 C 3960.261943,-2266.392612 3952.898981,-2270.579106 3945.536956,-2274.915202 C 3943.845675,-2275.912386 3942.154454,-2276.917073 3940.463292,-2277.929262 C 3938.829503,-2278.906677 3937.195728,-2279.889856 3935.56293,-2280.905309 C 3931.124503,-2283.667466 3926.692829,-2286.658395 3922.292205,-2289.898531 C 3918.777241,-2292.48891 3915.280436,-2295.235265 3911.829585,-2298.184808 C 3910.073846,-2299.687297 3908.329767,-2301.242202 3906.611091,-2302.876449 C 3905.350277,-2304.077409 3904.101247,-2305.31876 3902.891914,-2306.64651 C 3902.453922,-2307.124054 3902.026791,-2307.61984 3901.610521,-2308.133868 C 3901.299294,-2308.518314 3901.002293,-2308.919081 3900.719517,-2309.336169 C 3900.527397,-2309.621912 3900.344384,-2309.916518 3900.220419,-2310.243794 C 3900.138415,-2310.46029 3900.08225,-2310.691082 3900.113043,-2310.851579 C 3900.143825,-2311.012017 3900.2615,-2311.10221 3900.393136,-2311.146406 C 3900.591347,-2311.212954 3900.82121,-2311.175213 3901.054853,-2311.119196 C 3901.395934,-2311.034587 3901.742062,-2310.920466 3902.093238,-2310.776833 C 3902.560145,-2310.589421 3903.03076,-2310.365917 3903.501882,-2310.129577 C 3904.091767,-2309.832167 3904.682134,-2309.519273 3905.272983,-2309.190897 C 3906.803549,-2308.34235 3908.334632,-2307.429826 3909.864882,-2306.507962 C 3911.837632,-2305.316998 3913.809818,-2304.101833 3915.782074,-2302.891418 C 3918.161608,-2301.426976 3920.541478,-2299.976332 3922.921685,-2298.539486 C 3927.169463,-2295.979761 3931.419103,-2293.492922 3935.667474,-2291.12314 C 3937.263565,-2290.232961 3938.85938,-2289.359703 3940.455335,-2288.478295 C 3942.141204,-2287.546398 3943.827175,-2286.607933 3945.51325,-2285.6629 C 3952.851904,-2281.554558 3960.1915,-2277.358362 3967.530929,-2273.121841 C 3975.456854,-2268.545879 3983.382716,-2263.92158 3991.308409,-2259.279052 C 4006.85028,-2250.172017 4022.391679,-2241.00337 4037.933217,-2231.854444 C 4045.982183,-2227.115049 4054.031164,-2222.377487 4062.08016,-2217.64176 C 4066.897545,-2214.806906 4071.71493,-2211.972052 4076.532315,-2209.137199 C 4078.284341,-2208.105943 4080.036161,-2207.074566 4081.787775,-2206.043066 C 4082.482313,-2205.633843 4083.180026,-2205.222922 4083.880913,-2204.810304 C 4084.459844,-2204.469581 4085.044497,-2204.12585 4085.605526,-2203.794355 C 4086.04433,-2203.535079 4086.468682,-2203.283289 4086.954417,-2202.999576 C 4087.302828,-2202.796074 4087.682821,-2202.576147 4087.921957,-2202.429398 C 4088.065839,-2202.341102 4088.15873,-2202.279298 4088.504102,-2202.086294 C 4088.619387,-2202.02187 4088.762804,-2201.942827 4088.698422,-2201.97176" />
<path d="M -538.815367,-311.085197 L -91.009814,-565.713777 L 357.94024,-813.228178 L 802.388988,-1050.515762 L 1236.747229,-1274.592501 L 1655.552655,-1482.6405 L 2053.538547,-1672.043435 L 2425.7,-1840.419453 L 2767.356868,-1985.651129 L 3074.212618,-2105.912089 L 3342.40836,-2199.689984 L 3568.571378,-2265.8055 L 3749.85754,-2303.427198 L 3883.987068,-2312.081962 L 3969.273206,-2291.660954" />
<path d="M 3969.273206,-2291.660954 L 4106.195866,-2183.789653 L 4191.480731,-2048.45593 L 4224.055294,-1887.361685 L 4203.50991,-1702.532772 L 4130.102951,-1496.293521 L 4004.75755,-1271.237512 L 3829.05,-1030.194953 L 3605.189924,-776.197095 L 3335.992494,-512.438108 L 3024.843022,-242.234914 L 2675.654394,31.014524 L 2292.817859,303.873937 L 1881.14781,572.911958 L 1445.821235,834.74528" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.9 KiB

View file

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View file

@ -92,6 +92,13 @@ with BuildPart() as sm_hanger:
mirror(about=Plane.YZ)
mirror(about=Plane.XZ)
print(f"Mass: {sm_hanger.part.volume*7800*1e-6:0.1f} g")
got_mass = sm_hanger.part.volume*7800*1e-6
want_mass = 1028
tolerance = 10
delta = abs(got_mass - want_mass)
print(f"Mass: {got_mass:0.1f} g")
assert delta < tolerance, f'{got_mass=}, {want_mass=}, {delta=}, {tolerance=}'
assert abs(got_mass - 1028) < 10, f'{got_mass=}, want=1028, tolerance=10'
show(sm_hanger)

View file

@ -27,7 +27,7 @@ equations = [
(yl8 - 50) / (55 / 2 - xl8) - tan(radians(8)), # 8 degree slope
]
# There are two solutions but we want the 2nd one
solution = sympy.solve(equations, dict=True)[1]
solution = {k: float(v) for k,v in sympy.solve(equations, dict=True)[1].items()}
# Create the critical points
c30 = Vector(x30, solution[y30])
@ -58,5 +58,11 @@ with BuildPart() as curved_support:
with Locations((0, 125)):
Hole(20 / 2)
print(curved_support.part.volume * 7800e-6)
got_mass = curved_support.part.volume * 7800e-6
want_mass = 1294
delta = abs(got_mass - want_mass)
tolerance = 3
print(f"Mass: {got_mass:0.1f} g")
assert delta < tolerance, f'{got_mass=}, {want_mass=}, {delta=}, {tolerance=}'
show(curved_support)

View file

@ -11,7 +11,10 @@ with BuildPart() as p:
with BuildSketch(Plane.YZ) as yz:
Trapezoid(2.5, 4, 90 - 6, align=(Align.CENTER, Align.MIN))
_, arc_center, arc_radius = full_round(yz.edges().sort_by(SortBy.LENGTH)[0])
full_round(yz.edges().sort_by(SortBy.LENGTH)[0])
circle_edge = yz.edges().filter_by(GeomType.CIRCLE)[0]
arc_center = circle_edge.arc_center
arc_radius = circle_edge.radius
extrude(amount=10, mode=Mode.INTERSECT)
# To avoid OCCT problems, don't attempt to extend the top arc, remove instead
@ -45,6 +48,13 @@ with BuildPart() as p:
mirror(about=Plane.YZ)
part = scale(p.part, IN)
print(f"\npart weight = {part.volume*7800e-6/LB:0.2f} lbs")
got_mass = part.volume * 7800e-6 / LB
want_mass = 3.923
tolerance = 0.02
delta = abs(got_mass - want_mass)
print(f"Mass: {got_mass:0.1f} lbs")
assert delta < tolerance, f"{got_mass=}, {want_mass=}, {delta=}, {tolerance=}"
show(p)

View file

@ -1,47 +1,54 @@
"""
Too Tall Toby Party Pack 01-01 Bearing Bracket
"""
from build123d import *
from ocp_vscode import *
densa = 7800 / 1e6 # carbon steel density g/mm^3
densb = 2700 / 1e6 # aluminum alloy
densc = 1020 / 1e6 # ABS
with BuildPart() as p:
with BuildSketch() as s:
Rectangle(115, 50)
with Locations((5 / 2, 0)):
SlotOverall(90, 12, mode=Mode.SUBTRACT)
extrude(amount=15)
with BuildSketch(Plane.XZ.offset(50 / 2)) as s3:
with Locations((-115 / 2 + 26, 15)):
SlotOverall(42 + 2 * 26 + 12, 2 * 26, rotation=90)
zz = extrude(amount=-12)
split(bisect_by=Plane.XY)
edgs = p.part.edges().filter_by(Axis.Y).group_by(Axis.X)[-2]
fillet(edgs, 9)
with Locations(zz.faces().sort_by(Axis.Y)[0]):
with Locations((42 / 2 + 6, 0)):
CounterBoreHole(24 / 2, 34 / 2, 4)
mirror(about=Plane.XZ)
with BuildSketch() as s4:
RectangleRounded(115, 50, 6)
extrude(amount=80, mode=Mode.INTERSECT)
# fillet does not work right, mode intersect is safer
with BuildSketch(Plane.YZ) as s4:
with BuildLine() as bl:
l1 = Line((0, 0), (18 / 2, 0))
l2 = PolarLine(l1 @ 1, 8, 60, length_mode=LengthMode.VERTICAL)
l3 = Line(l2 @ 1, (0, 8))
mirror(about=Plane.YZ)
make_face()
extrude(amount=115/2, both=True, mode=Mode.SUBTRACT)
show_object(p)
print(f"\npart mass = {p.part.volume*densa:0.2f}")
"""
Too Tall Toby Party Pack 01-01 Bearing Bracket
"""
from build123d import *
from ocp_vscode import *
densa = 7800 / 1e6 # carbon steel density g/mm^3
densb = 2700 / 1e6 # aluminum alloy
densc = 1020 / 1e6 # ABS
with BuildPart() as p:
with BuildSketch() as s:
Rectangle(115, 50)
with Locations((5 / 2, 0)):
SlotOverall(90, 12, mode=Mode.SUBTRACT)
extrude(amount=15)
with BuildSketch(Plane.XZ.offset(50 / 2)) as s3:
with Locations((-115 / 2 + 26, 15)):
SlotOverall(42 + 2 * 26 + 12, 2 * 26, rotation=90)
zz = extrude(amount=-12)
split(bisect_by=Plane.XY)
edgs = p.part.edges().filter_by(Axis.Y).group_by(Axis.X)[-2]
fillet(edgs, 9)
with Locations(zz.faces().sort_by(Axis.Y)[0]):
with Locations((42 / 2 + 6, 0)):
CounterBoreHole(24 / 2, 34 / 2, 4)
mirror(about=Plane.XZ)
with BuildSketch() as s4:
RectangleRounded(115, 50, 6)
extrude(amount=80, mode=Mode.INTERSECT)
# fillet does not work right, mode intersect is safer
with BuildSketch(Plane.YZ) as s4:
with BuildLine() as bl:
l1 = Line((0, 0), (18 / 2, 0))
l2 = PolarLine(l1 @ 1, 8, 60, length_mode=LengthMode.VERTICAL)
l3 = Line(l2 @ 1, (0, 8))
mirror(about=Plane.YZ)
make_face()
extrude(amount=115/2, both=True, mode=Mode.SUBTRACT)
show_object(p)
got_mass = p.part.volume*densa
want_mass = 797.15
tolerance = 1
delta = abs(got_mass - want_mass)
print(f"Mass: {got_mass:0.2f} g")
assert delta < tolerance, f'{got_mass=}, {want_mass=}, {delta=}, {tolerance=}'

View file

@ -1,49 +1,57 @@
"""
Too Tall Toby Party Pack 01-02 Post Cap
"""
from build123d import *
from ocp_vscode import *
densa = 7800 / 1e6 # carbon steel density g/mm^3
densb = 2700 / 1e6 # aluminum alloy
densc = 1020 / 1e6 # ABS
# TTT Party Pack 01: PPP0102, mass(abs) = 43.09g
with BuildPart() as p:
with BuildSketch(Plane.XZ) as sk1:
Rectangle(49, 48 - 8, align=(Align.CENTER, Align.MIN))
Rectangle(9, 48, align=(Align.CENTER, Align.MIN))
with Locations((9 / 2, 40)):
Ellipse(20, 8)
split(bisect_by=Plane.YZ)
revolve(axis=Axis.Z)
with BuildSketch(Plane.YZ.offset(-15)) as xc1:
with Locations((0, 40 / 2 - 17)):
Ellipse(10 / 2, 4 / 2)
with BuildLine(Plane.XZ) as l1:
CenterArc((-15, 40 / 2), 17, 90, 180)
sweep(path=l1)
fillet(p.edges().filter_by(GeomType.CIRCLE, reverse=True).group_by(Axis.X)[0], 1)
with BuildLine(mode=Mode.PRIVATE) as lc1:
PolarLine(
(42 / 2, 0), 37, 94, length_mode=LengthMode.VERTICAL
) # construction line
pts = [
(0, 0),
(42 / 2, 0),
((lc1.line @ 1).X, (lc1.line @ 1).Y),
(0, (lc1.line @ 1).Y),
]
with BuildSketch(Plane.XZ) as sk2:
Polygon(*pts, align=None)
fillet(sk2.vertices().group_by(Axis.X)[1], 3)
revolve(axis=Axis.Z, mode=Mode.SUBTRACT)
show(p)
print(f"\npart mass = {p.part.volume*densa:0.2f}")
"""
Too Tall Toby Party Pack 01-02 Post Cap
"""
from build123d import *
from ocp_vscode import *
densa = 7800 / 1e6 # carbon steel density g/mm^3
densb = 2700 / 1e6 # aluminum alloy
densc = 1020 / 1e6 # ABS
# TTT Party Pack 01: PPP0102, mass(abs) = 43.09g
with BuildPart() as p:
with BuildSketch(Plane.XZ) as sk1:
Rectangle(49, 48 - 8, align=(Align.CENTER, Align.MIN))
Rectangle(9, 48, align=(Align.CENTER, Align.MIN))
with Locations((9 / 2, 40)):
Ellipse(20, 8)
split(bisect_by=Plane.YZ)
revolve(axis=Axis.Z)
with BuildSketch(Plane.YZ.offset(-15)) as xc1:
with Locations((0, 40 / 2 - 17)):
Ellipse(10 / 2, 4 / 2)
with BuildLine(Plane.XZ) as l1:
CenterArc((-15, 40 / 2), 17, 90, 180)
sweep(path=l1)
fillet(p.edges().filter_by(GeomType.CIRCLE, reverse=True).group_by(Axis.X)[0], 1)
with BuildLine(mode=Mode.PRIVATE) as lc1:
PolarLine(
(42 / 2, 0), 37, 94, length_mode=LengthMode.VERTICAL
) # construction line
pts = [
(0, 0),
(42 / 2, 0),
((lc1.line @ 1).X, (lc1.line @ 1).Y),
(0, (lc1.line @ 1).Y),
]
with BuildSketch(Plane.XZ) as sk2:
Polygon(*pts, align=None)
fillet(sk2.vertices().group_by(Axis.X)[1], 3)
revolve(axis=Axis.Z, mode=Mode.SUBTRACT)
show(p)
got_mass = p.part.volume*densc
want_mass = 43.09
tolerance = 1
delta = abs(got_mass - want_mass)
print(f"Mass: {got_mass:0.2f} g")
assert delta < tolerance, f'{got_mass=}, {want_mass=}, {delta=}, {tolerance=}'

View file

@ -1,34 +1,40 @@
"""
Too Tall Toby Party Pack 01-03 C Clamp Base
"""
from build123d import *
from ocp_vscode import *
densa = 7800 / 1e6 # carbon steel density g/mm^3
densb = 2700 / 1e6 # aluminum alloy
densc = 1020 / 1e6 # ABS
with BuildPart() as ppp0103:
with BuildSketch() as sk1:
RectangleRounded(34 * 2, 95, 18)
with Locations((0, -2)):
RectangleRounded((34 - 16) * 2, 95 - 18 - 14, 7, mode=Mode.SUBTRACT)
with Locations((-34 / 2, 0)):
Rectangle(34, 95, 0, mode=Mode.SUBTRACT)
extrude(amount=16)
with BuildSketch(Plane.XZ.offset(-95 / 2)) as cyl1:
with Locations((0, 16 / 2)):
Circle(16 / 2)
extrude(amount=18)
with BuildSketch(Plane.XZ.offset(95 / 2 - 14)) as cyl2:
with Locations((0, 16 / 2)):
Circle(16 / 2)
extrude(amount=23)
with Locations(Plane.XZ.offset(95 / 2 + 9)):
with Locations((0, 16 / 2)):
CounterSinkHole(5.5 / 2, 11.2 / 2, None, 90)
show(ppp0103)
print(f"\npart mass = {ppp0103.part.volume*densb:0.2f}")
"""
Too Tall Toby Party Pack 01-03 C Clamp Base
"""
from build123d import *
from ocp_vscode import *
densa = 7800 / 1e6 # carbon steel density g/mm^3
densb = 2700 / 1e6 # aluminum alloy
densc = 1020 / 1e6 # ABS
with BuildPart() as ppp0103:
with BuildSketch() as sk1:
RectangleRounded(34 * 2, 95, 18)
with Locations((0, -2)):
RectangleRounded((34 - 16) * 2, 95 - 18 - 14, 7, mode=Mode.SUBTRACT)
with Locations((-34 / 2, 0)):
Rectangle(34, 95, 0, mode=Mode.SUBTRACT)
extrude(amount=16)
with BuildSketch(Plane.XZ.offset(-95 / 2)) as cyl1:
with Locations((0, 16 / 2)):
Circle(16 / 2)
extrude(amount=18)
with BuildSketch(Plane.XZ.offset(95 / 2 - 14)) as cyl2:
with Locations((0, 16 / 2)):
Circle(16 / 2)
extrude(amount=23)
with Locations(Plane.XZ.offset(95 / 2 + 9)):
with Locations((0, 16 / 2)):
CounterSinkHole(5.5 / 2, 11.2 / 2, None, 90)
show(ppp0103)
got_mass = ppp0103.part.volume*densb
want_mass = 96.13
tolerance = 1
delta = abs(got_mass - want_mass)
print(f"Mass: {got_mass:0.2f} g")
assert delta < tolerance, f'{got_mass=}, {want_mass=}, {delta=}, {tolerance=}'

View file

@ -1,57 +1,64 @@
"""
Too Tall Toby Party Pack 01-04 Angle Bracket
"""
from build123d import *
from ocp_vscode import *
densa = 7800 / 1e6 # carbon steel density g/mm^3
densb = 2700 / 1e6 # aluminum alloy
densc = 1020 / 1e6 # ABS
d1, d2, d3 = 38, 26, 16
h1, h2, h3, h4 = 20, 8, 7, 23
w1, w2, w3 = 80, 10, 5
f1, f2, f3 = 4, 10, 5
sloth1, sloth2 = 18, 12
slotw1, slotw2 = 17, 14
with BuildPart() as p:
with BuildSketch() as s:
Circle(d1 / 2)
extrude(amount=h1)
with BuildSketch(Plane.XY.offset(h1)) as s2:
Circle(d2 / 2)
extrude(amount=h2)
with BuildSketch(Plane.YZ) as s3:
Rectangle(d1 + 15, h3, align=(Align.CENTER, Align.MIN))
extrude(amount=w1 - d1 / 2)
# fillet workaround \/
ped = p.part.edges().group_by(Axis.Z)[2].filter_by(GeomType.CIRCLE)
fillet(ped, f1)
with BuildSketch(Plane.YZ) as s3a:
Rectangle(d1 + 15, 15, align=(Align.CENTER, Align.MIN))
Rectangle(d1, 15, mode=Mode.SUBTRACT, align=(Align.CENTER, Align.MIN))
extrude(amount=w1 - d1 / 2, mode=Mode.SUBTRACT)
# end fillet workaround /\
with BuildSketch() as s4:
Circle(d3 / 2)
extrude(amount=h1 + h2, mode=Mode.SUBTRACT)
with BuildSketch() as s5:
with Locations((w1 - d1 / 2 - w2 / 2, 0)):
Rectangle(w2, d1)
extrude(amount=-h4)
fillet(p.part.edges().group_by(Axis.X)[-1].sort_by(Axis.Z)[-1], f2)
fillet(p.part.edges().group_by(Axis.X)[-4].sort_by(Axis.Z)[-2], f3)
pln = Plane.YZ.offset(w1 - d1 / 2)
with BuildSketch(pln) as s6:
with Locations((0, -h4)):
SlotOverall(slotw1 * 2, sloth1, 90)
extrude(amount=-w3, mode=Mode.SUBTRACT)
with BuildSketch(pln) as s6b:
with Locations((0, -h4)):
SlotOverall(slotw2 * 2, sloth2, 90)
extrude(amount=-w2, mode=Mode.SUBTRACT)
show(p)
print(f"\npart mass = {p.part.volume*densa:0.2f}")
"""
Too Tall Toby Party Pack 01-04 Angle Bracket
"""
from build123d import *
from ocp_vscode import *
densa = 7800 / 1e6 # carbon steel density g/mm^3
densb = 2700 / 1e6 # aluminum alloy
densc = 1020 / 1e6 # ABS
d1, d2, d3 = 38, 26, 16
h1, h2, h3, h4 = 20, 8, 7, 23
w1, w2, w3 = 80, 10, 5
f1, f2, f3 = 4, 10, 5
sloth1, sloth2 = 18, 12
slotw1, slotw2 = 17, 14
with BuildPart() as p:
with BuildSketch() as s:
Circle(d1 / 2)
extrude(amount=h1)
with BuildSketch(Plane.XY.offset(h1)) as s2:
Circle(d2 / 2)
extrude(amount=h2)
with BuildSketch(Plane.YZ) as s3:
Rectangle(d1 + 15, h3, align=(Align.CENTER, Align.MIN))
extrude(amount=w1 - d1 / 2)
# fillet workaround \/
ped = p.part.edges().group_by(Axis.Z)[2].filter_by(GeomType.CIRCLE)
fillet(ped, f1)
with BuildSketch(Plane.YZ) as s3a:
Rectangle(d1 + 15, 15, align=(Align.CENTER, Align.MIN))
Rectangle(d1, 15, mode=Mode.SUBTRACT, align=(Align.CENTER, Align.MIN))
extrude(amount=w1 - d1 / 2, mode=Mode.SUBTRACT)
# end fillet workaround /\
with BuildSketch() as s4:
Circle(d3 / 2)
extrude(amount=h1 + h2, mode=Mode.SUBTRACT)
with BuildSketch() as s5:
with Locations((w1 - d1 / 2 - w2 / 2, 0)):
Rectangle(w2, d1)
extrude(amount=-h4)
fillet(p.part.edges().group_by(Axis.X)[-1].sort_by(Axis.Z)[-1], f2)
fillet(p.part.edges().group_by(Axis.X)[-4].sort_by(Axis.Z)[-2], f3)
pln = Plane.YZ.offset(w1 - d1 / 2)
with BuildSketch(pln) as s6:
with Locations((0, -h4)):
SlotOverall(slotw1 * 2, sloth1, 90)
extrude(amount=-w3, mode=Mode.SUBTRACT)
with BuildSketch(pln) as s6b:
with Locations((0, -h4)):
SlotOverall(slotw2 * 2, sloth2, 90)
extrude(amount=-w2, mode=Mode.SUBTRACT)
show(p)
got_mass = p.part.volume*densa
want_mass = 310
tolerance = 1
delta = abs(got_mass - want_mass)
print(f"Mass: {got_mass:0.2f} g")
assert delta < tolerance, f'{got_mass=}, {want_mass=}, {delta=}, {tolerance=}'

View file

@ -1,30 +1,38 @@
"""
Too Tall Toby Party Pack 01-05 Paste Sleeve
"""
from build123d import *
from ocp_vscode import *
densa = 7800 / 1e6 # carbon steel density g/mm^3
densb = 2700 / 1e6 # aluminum alloy
densc = 1020 / 1e6 # ABS
with BuildPart() as p:
with BuildSketch() as s:
SlotOverall(45, 38)
offset(amount=3)
with BuildSketch(Plane.XY.offset(133 - 30)) as s2:
SlotOverall(60, 4)
offset(amount=3)
loft()
with BuildSketch() as s3:
SlotOverall(45, 38)
with BuildSketch(Plane.XY.offset(133 - 30)) as s4:
SlotOverall(60, 4)
loft(mode=Mode.SUBTRACT)
extrude(p.part.faces().sort_by(Axis.Z)[0], amount=30)
show(p)
print(f"\npart mass = {p.part.volume*densc:0.2f}")
"""
Too Tall Toby Party Pack 01-05 Paste Sleeve
"""
from build123d import *
from ocp_vscode import *
densa = 7800 / 1e6 # carbon steel density g/mm^3
densb = 2700 / 1e6 # aluminum alloy
densc = 1020 / 1e6 # ABS
with BuildPart() as p:
with BuildSketch() as s:
SlotOverall(45, 38)
offset(amount=3)
with BuildSketch(Plane.XY.offset(133 - 30)) as s2:
SlotOverall(60, 4)
offset(amount=3)
loft()
with BuildSketch() as s3:
SlotOverall(45, 38)
with BuildSketch(Plane.XY.offset(133 - 30)) as s4:
SlotOverall(60, 4)
loft(mode=Mode.SUBTRACT)
extrude(p.part.faces().sort_by(Axis.Z)[0], amount=30)
show(p)
got_mass = p.part.volume*densc
want_mass = 57.08
tolerance = 1
delta = abs(got_mass - want_mass)
print(f"Mass: {got_mass:0.2f} g")
assert delta < tolerance, f'{got_mass=}, {want_mass=}, {delta=}, {tolerance=}'

View file

@ -1,52 +1,58 @@
"""
Too Tall Toby Party Pack 01-06 Bearing Jig
"""
from build123d import *
from ocp_vscode import *
densa = 7800 / 1e6 # carbon steel density g/mm^3
densb = 2700 / 1e6 # aluminum alloy
densc = 1020 / 1e6 # ABS
r1, r2, r3, r4, r5 = 30 / 2, 13 / 2, 12 / 2, 10, 6 # radii used
x1 = 44 # lengths used
y1, y2, y3, y4, y_tot = 36, 36 - 22 / 2, 22 / 2, 42, 69 # widths used
with BuildSketch(Location((0, -r1, y3))) as sk_body:
with BuildLine() as l:
c1 = Line((r1, 0), (r1, y_tot), mode=Mode.PRIVATE) # construction line
m1 = Line((0, y_tot), (x1 / 2, y_tot))
m2 = JernArc(m1 @ 1, m1 % 1, r4, -90 - 45)
m3 = IntersectingLine(m2 @ 1, m2 % 1, c1)
m4 = Line(m3 @ 1, (r1, r1))
m5 = JernArc(m4 @ 1, m4 % 1, r1, -90)
m6 = Line(m5 @ 1, m1 @ 0)
mirror(make_face(l.line), Plane.YZ)
fillet(sk_body.vertices().group_by(Axis.Y)[1], 12)
with Locations((x1 / 2, y_tot - 10), (-x1 / 2, y_tot - 10)):
Circle(r2, mode=Mode.SUBTRACT)
# Keyway
with Locations((0, r1)):
Circle(r3, mode=Mode.SUBTRACT)
Rectangle(4, 3 + 6, align=(Align.CENTER, Align.MIN), mode=Mode.SUBTRACT)
with BuildPart() as p:
Box(200, 200, 22) # Oversized plate
# Cylinder underneath
Cylinder(r1, y2, align=(Align.CENTER, Align.CENTER, Align.MAX))
fillet(p.edges(Select.NEW), r5) # Weld together
extrude(sk_body.sketch, amount=-y1, mode=Mode.INTERSECT) # Cut to shape
# Remove slot
with Locations((0, y_tot - r1 - y4, 0)):
Box(
y_tot,
y_tot,
10,
align=(Align.CENTER, Align.MIN, Align.CENTER),
mode=Mode.SUBTRACT,
)
show(p)
print(f"\npart mass = {p.part.volume*densa:0.2f}")
print(p.part.bounding_box().size)
"""
Too Tall Toby Party Pack 01-06 Bearing Jig
"""
from build123d import *
from ocp_vscode import *
densa = 7800 / 1e6 # carbon steel density g/mm^3
densb = 2700 / 1e6 # aluminum alloy
densc = 1020 / 1e6 # ABS
r1, r2, r3, r4, r5 = 30 / 2, 13 / 2, 12 / 2, 10, 6 # radii used
x1 = 44 # lengths used
y1, y2, y3, y4, y_tot = 36, 36 - 22 / 2, 22 / 2, 42, 69 # widths used
with BuildSketch(Location((0, -r1, y3))) as sk_body:
with BuildLine() as l:
c1 = Line((r1, 0), (r1, y_tot), mode=Mode.PRIVATE) # construction line
m1 = Line((0, y_tot), (x1 / 2, y_tot))
m2 = JernArc(m1 @ 1, m1 % 1, r4, -90 - 45)
m3 = IntersectingLine(m2 @ 1, m2 % 1, c1)
m4 = Line(m3 @ 1, (r1, r1))
m5 = JernArc(m4 @ 1, m4 % 1, r1, -90)
mirror(about=Plane.YZ)
make_face()
fillet(sk_body.vertices().group_by(Axis.Y)[1], 12)
with Locations((x1 / 2, y_tot - 10), (-x1 / 2, y_tot - 10)):
Circle(r2, mode=Mode.SUBTRACT)
# Keyway
with Locations((0, r1)):
Circle(r3, mode=Mode.SUBTRACT)
Rectangle(4, 3 + 6, align=(Align.CENTER, Align.MIN), mode=Mode.SUBTRACT)
with BuildPart() as p:
Box(200, 200, 22) # Oversized plate
# Cylinder underneath
Cylinder(r1, y2, align=(Align.CENTER, Align.CENTER, Align.MAX))
fillet(p.edges(Select.NEW), r5) # Weld together
extrude(sk_body.sketch, amount=-y1, mode=Mode.INTERSECT) # Cut to shape
# Remove slot
with Locations((0, y_tot - r1 - y4, 0)):
Box(
y_tot,
y_tot,
10,
align=(Align.CENTER, Align.MIN, Align.CENTER),
mode=Mode.SUBTRACT,
)
show(p)
got_mass = p.part.volume*densa
want_mass = 328.02
tolerance = 1
delta = abs(got_mass - want_mass)
print(f"Mass: {got_mass:0.2f} g")
assert delta < tolerance, f'{got_mass=}, {want_mass=}, {delta=}, {tolerance=}'

View file

@ -1,52 +1,59 @@
"""
Too Tall Toby Party Pack 01-07 Flanged Hub
"""
from build123d import *
from ocp_vscode import *
densa = 7800 / 1e6 # carbon steel density g/mm^3
densb = 2700 / 1e6 # aluminum alloy
densc = 1020 / 1e6 # ABS
with BuildPart() as p:
with BuildSketch() as s:
Circle(130 / 2)
extrude(amount=8)
with BuildSketch(Plane.XY.offset(8)) as s2:
Circle(84 / 2)
extrude(amount=25 - 8)
with BuildSketch(Plane.XY.offset(25)) as s3:
Circle(35 / 2)
extrude(amount=52 - 25)
with BuildSketch() as s4:
Circle(73 / 2)
extrude(amount=18, mode=Mode.SUBTRACT)
pln2 = p.part.faces().sort_by(Axis.Z)[5]
with BuildSketch(Plane.XY.offset(52)) as s5:
Circle(20 / 2)
extrude(amount=-52, mode=Mode.SUBTRACT)
fillet(
p.part.edges()
.filter_by(GeomType.CIRCLE)
.sort_by(Axis.Z)[2:-2]
.sort_by(SortBy.RADIUS)[1:],
3,
)
pln = Plane(pln2)
pln.origin = pln.origin + Vector(20 / 2, 0, 0)
pln = pln.rotated((0, 45, 0))
pln = pln.offset(-25 + 3 + 0.10)
with BuildSketch(pln) as s6:
Rectangle((73 - 35) / 2 * 1.414 + 5, 3)
zz = extrude(amount=15, taper=-20 / 2, mode=Mode.PRIVATE)
zz2 = split(zz, bisect_by=Plane.XY.offset(25), mode=Mode.PRIVATE)
zz3 = split(zz2, bisect_by=Plane.YZ.offset(35 / 2 - 1), mode=Mode.PRIVATE)
with PolarLocations(0, 3):
add(zz3)
with Locations(Plane.XY.offset(8)):
with PolarLocations(107.95 / 2, 6):
CounterBoreHole(6 / 2, 13 / 2, 4)
show(p)
print(f"\npart mass = {p.part.volume*densb:0.2f}")
"""
Too Tall Toby Party Pack 01-07 Flanged Hub
"""
from build123d import *
from ocp_vscode import *
densa = 7800 / 1e6 # carbon steel density g/mm^3
densb = 2700 / 1e6 # aluminum alloy
densc = 1020 / 1e6 # ABS
with BuildPart() as p:
with BuildSketch() as s:
Circle(130 / 2)
extrude(amount=8)
with BuildSketch(Plane.XY.offset(8)) as s2:
Circle(84 / 2)
extrude(amount=25 - 8)
with BuildSketch(Plane.XY.offset(25)) as s3:
Circle(35 / 2)
extrude(amount=52 - 25)
with BuildSketch() as s4:
Circle(73 / 2)
extrude(amount=18, mode=Mode.SUBTRACT)
pln2 = p.part.faces().sort_by(Axis.Z)[5]
with BuildSketch(Plane.XY.offset(52)) as s5:
Circle(20 / 2)
extrude(amount=-52, mode=Mode.SUBTRACT)
fillet(
p.part.edges()
.filter_by(GeomType.CIRCLE)
.sort_by(Axis.Z)[2:-2]
.sort_by(SortBy.RADIUS)[1:],
3,
)
pln = Plane(pln2)
pln.origin = pln.origin + Vector(20 / 2, 0, 0)
pln = pln.rotated((0, 45, 0))
pln = pln.offset(-25 + 3 + 0.10)
with BuildSketch(pln) as s6:
Rectangle((73 - 35) / 2 * 1.414 + 5, 3)
zz = extrude(amount=15, taper=-20 / 2, mode=Mode.PRIVATE)
zz2 = split(zz, bisect_by=Plane.XY.offset(25), mode=Mode.PRIVATE)
zz3 = split(zz2, bisect_by=Plane.YZ.offset(35 / 2 - 1), mode=Mode.PRIVATE)
with PolarLocations(0, 3):
add(zz3)
with Locations(Plane.XY.offset(8)):
with PolarLocations(107.95 / 2, 6):
CounterBoreHole(6 / 2, 13 / 2, 4)
show(p)
got_mass = p.part.volume*densb
want_mass = 372.99
tolerance = 1
delta = abs(got_mass - want_mass)
print(f"Mass: {got_mass:0.2f} g")
assert delta < tolerance, f'{got_mass=}, {want_mass=}, {delta=}, {tolerance=}'

View file

@ -1,47 +1,54 @@
"""
Too Tall Toby Party Pack 01-08 Tie Plate
"""
from build123d import *
from ocp_vscode import *
densa = 7800 / 1e6 # carbon steel density g/mm^3
densb = 2700 / 1e6 # aluminum alloy
densc = 1020 / 1e6 # ABS
with BuildPart() as p:
with BuildSketch() as s1:
Rectangle(188 / 2 - 33, 162, align=(Align.MIN, Align.CENTER))
with Locations((188 / 2 - 33, 0)):
SlotOverall(190, 33 * 2, rotation=90)
mirror(about=Plane.YZ)
with GridLocations(188 - 2 * 33, 190 - 2 * 33, 2, 2):
Circle(29 / 2, mode=Mode.SUBTRACT)
Circle(84 / 2, mode=Mode.SUBTRACT)
extrude(amount=16)
with BuildPart() as p2:
with BuildSketch(Plane.XZ) as s2:
with BuildLine() as l1:
l1 = Polyline(
(222 / 2 + 14 - 40 - 40, 0),
(222 / 2 + 14 - 40, -35 + 16),
(222 / 2 + 14, -35 + 16),
(222 / 2 + 14, -35 + 16 + 30),
(222 / 2 + 14 - 40 - 40, -35 + 16 + 30),
close=True,
)
make_face()
with Locations((222 / 2, -35 + 16 + 14)):
Circle(11 / 2, mode=Mode.SUBTRACT)
extrude(amount=20 / 2, both=True)
with BuildSketch() as s3:
with Locations(l1 @ 0):
Rectangle(40 + 40, 8, align=(Align.MIN, Align.CENTER))
with Locations((40, 0)):
Rectangle(40, 20, align=(Align.MIN, Align.CENTER))
extrude(amount=30, both=True, mode=Mode.INTERSECT)
mirror(about=Plane.YZ)
show(p)
print(f"\npart mass = {p.part.volume*densa:0.2f}")
"""
Too Tall Toby Party Pack 01-08 Tie Plate
"""
from build123d import *
from ocp_vscode import *
densa = 7800 / 1e6 # carbon steel density g/mm^3
densb = 2700 / 1e6 # aluminum alloy
densc = 1020 / 1e6 # ABS
with BuildPart() as p:
with BuildSketch() as s1:
Rectangle(188 / 2 - 33, 162, align=(Align.MIN, Align.CENTER))
with Locations((188 / 2 - 33, 0)):
SlotOverall(190, 33 * 2, rotation=90)
mirror(about=Plane.YZ)
with GridLocations(188 - 2 * 33, 190 - 2 * 33, 2, 2):
Circle(29 / 2, mode=Mode.SUBTRACT)
Circle(84 / 2, mode=Mode.SUBTRACT)
extrude(amount=16)
with BuildPart() as p2:
with BuildSketch(Plane.XZ) as s2:
with BuildLine() as l1:
l1 = Polyline(
(222 / 2 + 14 - 40 - 40, 0),
(222 / 2 + 14 - 40, -35 + 16),
(222 / 2 + 14, -35 + 16),
(222 / 2 + 14, -35 + 16 + 30),
(222 / 2 + 14 - 40 - 40, -35 + 16 + 30),
close=True,
)
make_face()
with Locations((222 / 2, -35 + 16 + 14)):
Circle(11 / 2, mode=Mode.SUBTRACT)
extrude(amount=20 / 2, both=True)
with BuildSketch() as s3:
with Locations(l1 @ 0):
Rectangle(40 + 40, 8, align=(Align.MIN, Align.CENTER))
with Locations((40, 0)):
Rectangle(40, 20, align=(Align.MIN, Align.CENTER))
extrude(amount=30, both=True, mode=Mode.INTERSECT)
mirror(about=Plane.YZ)
show(p)
got_mass = p.part.volume*densa
want_mass = 3387.06
tolerance = 1
delta = abs(got_mass - want_mass)
print(f"Mass: {got_mass:0.2f} g")
assert delta < tolerance, f'{got_mass=}, {want_mass=}, {delta=}, {tolerance=}'

View file

@ -1,56 +1,63 @@
"""
Too Tall Toby Party Pack 01-09 Corner Tie
"""
from math import sqrt
from build123d import *
from ocp_vscode import *
densa = 7800 / 1e6 # carbon steel density g/mm^3
densb = 2700 / 1e6 # aluminum alloy
densc = 1020 / 1e6 # ABS
with BuildPart() as ppp109:
with BuildSketch() as one:
Rectangle(69, 75, align=(Align.MAX, Align.CENTER))
fillet(one.vertices().group_by(Axis.X)[0], 17)
extrude(amount=13)
centers = [
arc.arc_center
for arc in ppp109.edges().filter_by(GeomType.CIRCLE).group_by(Axis.Z)[-1]
]
with Locations(*centers):
CounterBoreHole(radius=8 / 2, counter_bore_radius=15 / 2, counter_bore_depth=4)
with BuildSketch(Plane.YZ) as two:
with Locations((0, 45)):
Circle(15)
with BuildLine() as bl:
c = Line((75 / 2, 0), (75 / 2, 60), mode=Mode.PRIVATE)
u = two.edge().find_tangent(75 / 2 + 90)[0] # where is the slope 75/2?
l1 = IntersectingLine(
two.edge().position_at(u), -two.edge().tangent_at(u), other=c
)
Line(l1 @ 0, (0, 45))
Polyline((0, 0), c @ 0, l1 @ 1)
mirror(about=Plane.YZ)
make_face()
with Locations((0, 45)):
Circle(12 / 2, mode=Mode.SUBTRACT)
extrude(amount=-13)
with BuildSketch(Plane((0, 0, 0), x_dir=(1, 0, 0), z_dir=(1, 0, 1))) as three:
Rectangle(45 * 2 / sqrt(2) - 37.5, 75, align=(Align.MIN, Align.CENTER))
with Locations(three.edges().sort_by(Axis.X)[-1].center()):
Circle(37.5)
Circle(33 / 2, mode=Mode.SUBTRACT)
split(bisect_by=Plane.YZ)
extrude(amount=6)
f = ppp109.faces().filter_by(Axis((0, 0, 0), (-1, 0, 1)))[0]
# extrude(f, until=Until.NEXT) # throws a warning
extrude(f, amount=10)
fillet(ppp109.edge(Select.NEW), 16)
show(ppp109)
print(f"\npart mass = {ppp109.part.volume*densb:0.2f}")
"""
Too Tall Toby Party Pack 01-09 Corner Tie
"""
from math import sqrt
from build123d import *
from ocp_vscode import *
densa = 7800 / 1e6 # carbon steel density g/mm^3
densb = 2700 / 1e6 # aluminum alloy
densc = 1020 / 1e6 # ABS
with BuildPart() as ppp109:
with BuildSketch() as one:
Rectangle(69, 75, align=(Align.MAX, Align.CENTER))
fillet(one.vertices().group_by(Axis.X)[0], 17)
extrude(amount=13)
centers = [
arc.arc_center
for arc in ppp109.edges().filter_by(GeomType.CIRCLE).group_by(Axis.Z)[-1]
]
with Locations(*centers):
CounterBoreHole(radius=8 / 2, counter_bore_radius=15 / 2, counter_bore_depth=4)
with BuildSketch(Plane.YZ) as two:
with Locations((0, 45)):
Circle(15)
with BuildLine() as bl:
c = Line((75 / 2, 0), (75 / 2, 60), mode=Mode.PRIVATE)
u = two.edge().find_tangent(75 / 2 + 90)[0] # where is the slope 75/2?
l1 = IntersectingLine(
two.edge().position_at(u), -two.edge().tangent_at(u), other=c
)
Line(l1 @ 0, (0, 45))
Polyline((0, 0), c @ 0, l1 @ 1)
mirror(about=Plane.YZ)
make_face()
with Locations((0, 45)):
Circle(12 / 2, mode=Mode.SUBTRACT)
extrude(amount=-13)
with BuildSketch(Plane((0, 0, 0), x_dir=(1, 0, 0), z_dir=(1, 0, 1))) as three:
Rectangle(45 * 2 / sqrt(2) - 37.5, 75, align=(Align.MIN, Align.CENTER))
with Locations(three.edges().sort_by(Axis.X)[-1].center()):
Circle(37.5)
Circle(33 / 2, mode=Mode.SUBTRACT)
split(bisect_by=Plane.YZ)
extrude(amount=6)
f = ppp109.faces().filter_by(Axis((0, 0, 0), (-1, 0, 1)))[0]
extrude(f, until=Until.NEXT)
fillet(ppp109.edges().filter_by(Axis.Y).sort_by(Axis.Z)[2], 16)
# extrude(f, amount=10)
# fillet(ppp109.edges(Select.NEW), 16)
show(ppp109)
got_mass = ppp109.part.volume * densb
want_mass = 307.23
tolerance = 1
delta = abs(got_mass - want_mass)
print(f"Mass: {got_mass:0.2f} g")
assert delta < tolerance, f"{got_mass=}, {want_mass=}, {delta=}, {tolerance=}"

View file

@ -1,52 +1,59 @@
"""
Too Tall Toby Party Pack 01-10 Light Cap
"""
from build123d import *
from ocp_vscode import *
densa = 7800 / 1e6 # carbon steel density g/mm^3
densb = 2700 / 1e6 # aluminum alloy
densc = 1020 / 1e6 # ABS
with BuildPart() as p:
with BuildSketch(Plane.YZ.rotated((90, 0, 0))) as s:
with BuildLine() as l:
n2 = JernArc((0, 46), (1, 0), 40, -90)
n3 = Line(n2 @ 1, n2 @ 0)
make_face()
with BuildLine() as l2:
m1 = Line((0, 0), (42, 0))
m2 = Line((0, 0.01), (42, 0.01))
m3 = Line(m1 @ 0, m2 @ 0)
m4 = Line(m1 @ 1, m2 @ 1)
make_face()
make_hull()
extrude(amount=100 / 2)
revolve(s.sketch, axis=Axis.Y.reverse(), revolution_arc=-90)
mirror(about=Plane(p.part.faces().sort_by(Axis.X)[-1]))
mirror(about=Plane.XY)
with BuildPart() as p2:
add(p.part)
offset(amount=-8)
with BuildPart() as pzzz:
add(p2.part)
split(bisect_by=Plane.XZ.offset(46 - 16), keep=Keep.BOTTOM)
fillet(pzzz.part.faces().filter_by(Axis.Y).sort_by(Axis.Y)[0].edges(), 12)
with BuildPart() as p3:
with BuildSketch(Plane.XZ) as s2:
add(p.part.faces().sort_by(Axis.Y)[-1])
offset(amount=-8)
loft([p2.part.faces().sort_by(Axis.Y)[-5], s2.sketch.faces()[0]])
with BuildPart() as ppp0110:
add(p.part)
add(pzzz.part, mode=Mode.SUBTRACT)
add(p3.part, mode=Mode.SUBTRACT)
show(ppp0110)
print(f"\npart mass = {ppp0110.part.volume*densc:0.2f}")
"""
Too Tall Toby Party Pack 01-10 Light Cap
"""
from math import sqrt, asin, pi
from build123d import *
from ocp_vscode import *
densa = 7800 / 1e6 # carbon steel density g/mm^3
densb = 2700 / 1e6 # aluminum alloy
densc = 1020 / 1e6 # ABS
# The smaller cross-section is defined as having R40, height 46,
# and base width 84, so clearly it's not entirely a half-circle or
# similar; the base's extreme points need to connect via tangents
# to the R40 arc centered 6mm above the baseline.
#
# Compute the angle of the tangent line (working with the
# left/negativeX side, given symmetry) by observing the tangent
# point (T), the circle's center (O), and the baseline's edge (P)
# form a right triangle, so:
OT=40
OP=sqrt((-84/2)**2+(-6)**2)
TP=sqrt(OP**2-40**2)
OPT_degrees = asin(OT/OP) * 180/pi
# Correct for the fact that OP isn't horizontal.
OP_to_X_axis_degrees = asin(6/OP) * 180/pi
left_tangent_degrees = OPT_degrees + OP_to_X_axis_degrees
left_tangent_length = TP
with BuildPart() as outer:
with BuildSketch(Plane.XZ) as sk:
with BuildLine():
l1 = PolarLine(start=(-84/2, 0), length=left_tangent_length, angle=left_tangent_degrees)
l2 = TangentArc(l1@1, (0, 46), tangent=l1%1)
l3 = offset(amount=-8, side=Side.RIGHT, closed=False, mode=Mode.ADD)
l4 = Line(l1@0, l3@1)
l5 = Line(l3@0, l2@1)
l6 = Line(l3@0, (0, 46-16))
l7 = IntersectingLine(start=l6@1, direction=(-1,0), other=l3)
make_face()
revolve(axis=Axis.Z)
sk = sk.sketch & Plane.XZ*Rectangle(1000, 1000, align=[Align.CENTER, Align.MIN])
positive_Z = Box(100, 100, 100, align=[Align.CENTER, Align.MIN, Align.MIN])
p = outer.part & positive_Z
cross_section = sk + mirror(sk, about=Plane.YZ)
p += extrude(cross_section, amount=50)
p += mirror(p, about=Plane.XZ.offset(50))
p += fillet(p.edges().filter_by(GeomType.LINE).filter_by(Axis.Y).group_by(Axis.Z)[-1], radius=8)
ppp0110 = p
got_mass = ppp0110.volume*densc
want_mass = 211.30
tolerance = 1
delta = abs(got_mass - want_mass)
print(f"Mass: {got_mass:0.1f} g")
assert delta < tolerance, f'{got_mass=}, {want_mass=}, {delta=}, {tolerance=}'
show(ppp0110)

75
docs/build123d_lexer.py Normal file
View file

@ -0,0 +1,75 @@
import inspect
import enum
import sys
import os
from pygments.lexers.python import PythonLexer
from pygments.token import Name
from sphinx.highlighting import lexers
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "../src")))
import build123d
class Build123dLexer(PythonLexer):
"""
Python lexer extended with Build123d-specific highlighting.
Dynamically pulls symbols from build123d.__all__.
"""
EXTRA_SYMBOLS = set(getattr(build123d, "__all__", []))
EXTRA_CLASSES = {
n for n in EXTRA_SYMBOLS
if n[0].isupper()
}
EXTRA_CONSTANTS = {
n for n in EXTRA_SYMBOLS
if n.isupper() and not callable(getattr(build123d, n, None))
}
EXTRA_ENUMS = {
n for n in EXTRA_SYMBOLS
if inspect.isclass(getattr(build123d, n, None)) and issubclass(getattr(build123d, n), enum.Enum)
}
EXTRA_FUNCTIONS = EXTRA_SYMBOLS - EXTRA_CLASSES - EXTRA_CONSTANTS - EXTRA_ENUMS
def get_tokens_unprocessed(self, text):
"""
Yield tokens, highlighting Build123d symbols, including chained accesses.
"""
dot_chain = False
for index, token, value in super().get_tokens_unprocessed(text):
if value == ".":
dot_chain = True
yield index, token, value
continue
if dot_chain:
# In a chain, don't use top-level categories
if value[0].isupper():
yield index, Name.Class, value
elif value.isupper():
yield index, Name.Constant, value
else:
yield index, Name.Function, value
dot_chain = False
continue
# Top-level classification from __all__
if value in self.EXTRA_CLASSES:
yield index, Name.Class, value
elif value in self.EXTRA_FUNCTIONS:
yield index, Name.Function, value
elif value in self.EXTRA_CONSTANTS:
yield index, Name.Constant, value
elif value in self.EXTRA_ENUMS:
yield index, Name.Builtin, value
else:
yield index, token, value
def setup(app):
lexers["build123d"] = Build123dLexer()
return {"version": "0.1"}

Some files were not shown because too many files have changed in this diff Show more