Published November 5, 2025
| Version v0.10.0
Software
Open
build123d: A Python-based parametric CAD library
Description
Breaking Changes
- Convert Shape methods to properties:
is_null,is_valid,shape_type. Unfortunately it isn't possible to keep the old method and deprecate it when switching over to properties. The fix is just to remove the()e.g.is_valid() -> is_valid.
Notable Changes
- Added a new Shape property -
global_locationwhich will provide the location of a part relative to the global coordinate system when it's deep within an assembly - Some of the
to_***methods have been deprecated. For exampleVector.to_tuple()has been replaced withtuple(Vector) - Added a new operation draft with the
Solid.draftinstance method. It allows you to create parts that are going to be cast or moulded requiring a draft angle on the vertical sides. - There is now a build123d roadmap - see here: https://github.com/gumyr/build123d/wiki/Roadmap
- Added a
Face.wrapmethod by @gumyr. This method is useful for applying flat features—such as decorative patterns, cutouts, or boundary outlines—onto curved or freeform surfaces while retaining their original proportions. - @jwagenet added four new 1D lines
ArcArcTangentLine,ArcArcTangentArc,PointArcTangentLine, andPointArcTangentArc. They all implement solvers to find intersections, tangent directions. NOTE: These new 1D line objects are already in deprecated status as there are plans to unify and extend these types of curves into fewer objects. - @jwagenet has created a new section on Topology Selection and Exploration of the docs: https://build123d.readthedocs.io/en/latest/topology_selection.html
- When adding Shapes (without using the builders or,
Part,Sketch,Curve) build123d will now typically create aShapeList. This is meant to improve the user experience related to the breaking change in v0.9.0. With the new releaseFace + Facereturns:ShapeList(# of two faces). - @jdegenstein added a new constrained surface creation method
Face.make_surface_patch - @gongfan99 added
Face.make_gordon_surfacemethod for gordon surface creation along with a new pure python dependency of build123d called (ocp_gordon)[https://github.com/gongfan99/ocp_gordon] - @gumyr added a new
BlendCurveobject for blending with up to C2 continuity between two curves
Selected Other Changes
- make
Axis.positionandAxis.directionproperties by @snoyer in https://github.com/gumyr/build123d/pull/905 - Adding
Face.radii,Face.is_circular_convex,Face.is_circular_concave, renameFace.rotational_axistoFace.axis_of_rotationby @gumyr in https://github.com/gumyr/build123d/commit/0208621fd770e9b95917c71e14fd4659aeb7912b - add
alignparameter toimport_svgby @snoyer in https://github.com/gumyr/build123d/pull/908 - Add a new TestCase that asserts that examples exit successfully. by @fischman in https://github.com/gumyr/build123d/pull/910
- Run tests in parallel by default, and update CONTRIBUTING.md by @fischman in https://github.com/gumyr/build123d/pull/911
- Switch to lib3mf official pypi release from py_lib3mf by @jdegenstein in https://github.com/gumyr/build123d/pull/917
- Update type signature for component getters by @mingmingrr in https://github.com/gumyr/build123d/pull/923
- Avoid deepcopy'ing Shape.topo_parent. by @fischman in https://github.com/gumyr/build123d/pull/914
- Fixing examples, PR #910 by @gumyr https://github.com/gumyr/build123d/commit/aeb6b32b6594b51209a70ee1922ff63a00080dc1
- Improve topo_explore_connected_faces to remove duplicate faces by @gumyr in https://github.com/gumyr/build123d/commit/8ba128c273e83a19d62ab474a427ed9eee155ad1
- Improving geometry eq/hash to enable sets by @gumyr in https://github.com/gumyr/build123d/commit/10a466f6453ef99c4c485d02985e5357f3f3076f
- TooTallToby tutorials: unbreak and test. by @fischman in https://github.com/gumyr/build123d/pull/912
- PolarLine() make localized direction a unit vector to only scale by length by @jwagenet in https://github.com/gumyr/build123d/pull/931
- Revise docstrings for build objects by @jwagenet in https://github.com/gumyr/build123d/pull/930
- Use
uvfor setup of github actions workflows by @jdegenstein in https://github.com/gumyr/build123d/pull/934 - Quick fix documentation issues by @jwagenet in https://github.com/gumyr/build123d/pull/933
- Add very minimal support for CompSolid by @gumyr in https://github.com/gumyr/build123d/commit/b1f0eedfcb417c3476e9fe6a7650d820ccc12f18
- Add new docs section "Selectors and Operators" by @jwagenet in https://github.com/gumyr/build123d/pull/959
- Add Tangent objects for Point and Arc by @jwagenet in https://github.com/gumyr/build123d/pull/947
- Fixed Issue #944 (section not working) by @gumyr in https://github.com/gumyr/build123d/commit/8c171837ee97f90351d9f21a516f310ad2c0bba1
- Replacing location_at(planar) with (x_dir) by @gumyr in https://github.com/gumyr/build123d/commit/0624bff82e820f53cc9453fb525c1326ca8c3171
- Fixed DoubleTangentArc to create Edge by @gumyr in https://github.com/gumyr/build123d/commit/c4080e1231c3e8e8a6956c08724dd5d74adcc570
- Added Toy Truck example by @gumyr in https://github.com/gumyr/build123d/commit/bf6206377ded3792bf0916e083399457337e5ba0 and others
- Fix
revolvedirection and size with negativerevolution_arcby @jwagenet in https://github.com/gumyr/build123d/pull/964 - Resolve deprecation warnings of regex library by @emmanuel-ferdman in https://github.com/gumyr/build123d/pull/976
- pyproject.toml -> update ipython version pin to include v9.x.x by @jdegenstein in https://github.com/gumyr/build123d/pull/981
- Add explicit scipy dependency by @ndevenish in https://github.com/gumyr/build123d/pull/978
- Add OCCT text alignment to
Text/make_textby @jwagenet in https://github.com/gumyr/build123d/pull/960 - Adding deglob tool (tools/deglob.py) to help remove glob imports by @gumyr in https://github.com/gumyr/build123d/commit/2431a054469386a924e22046b002926451257bcd
- Added Location.center to enable sort_by, etc and add Location.mirror by @gumyr in https://github.com/gumyr/build123d/commit/2a730b5fef72a53f081d6c5f26d395d68be5d27f and https://github.com/gumyr/build123d/commit/d4cb27414eba0cee76e4c9def7a935fbe521e529
- Fixed normal_at(u,v) Issue #973 by @gumyr in https://github.com/gumyr/build123d/commit/0854cac191d17fcc32316eee8a640aa283d026da and https://github.com/gumyr/build123d/commit/739368c41720b3a2f45438fd8b87f4c105872780
- Fixed Issue #843 added is_forward to Edge parameter methods by @gumyr in https://github.com/gumyr/build123d/commit/6590df1e65d98cf4d95a0803836a4fb95bd6a099
- Fixed full_round Issue #972 by @gumyr in https://github.com/gumyr/build123d/commit/ed5e0307e3a9db741c0bad007abb99822a49911a
- Fixed normal_at bug when passed a Vector by @gumyr in https://github.com/gumyr/build123d/commit/890f1a540b9e78b4b2dcfc802136b1b38ecceb0d
- Added Face.wrap feature by @gumyr in https://github.com/gumyr/build123d/commit/60cd260e74a69c56ad7b4159e8f0bc2433659055
- Store benchmark results as CSV; artifact and printed to stdout by @jdegenstein in https://github.com/gumyr/build123d/pull/982
- Rework Location constructor, improve pylint by @gumyr in https://github.com/gumyr/build123d/commit/67115111e2139540fff5560fceaf7ade9a1c3ac8
- Deprecated to_axis Issue #155 by @gumyr in https://github.com/gumyr/build123d/commit/2efd21ff5817025d21cae97644a54a9baac2f7c5
- Adding method Face.wrap_faces by @gumyr in https://github.com/gumyr/build123d/commit/ccdfda88e934b864bfe3a2b634ea31e57079f36e
- Adding topo_parent to Triangle vertices by @gumyr in https://github.com/gumyr/build123d/commit/aecc71dac2ff53d31f2ad938328814cc3ff6f613
- Enabling ShapeList + Shape by @gumyr in https://github.com/gumyr/build123d/commit/cec429c5ccf75c290bd6f3ba8c3550826b866720
- Fix various typos by @luzpaz in https://github.com/gumyr/build123d/pull/986
- Add timestamp argument to STEP export by @jgraichen in https://github.com/gumyr/build123d/pull/984
- Adding bicycle tire example by @gumyr in https://github.com/gumyr/build123d/commit/0e7ab984301074f3bea3bad96938138d30c42420
- Improved Edge.param_at_point and Wire.trim - Issue #795 by @gumyr https://github.com/gumyr/build123d/commit/14ef7d1a0d53d30c227d3b63a8bfb47ca8614a32
- Added draft operation by @gumyr in https://github.com/gumyr/build123d/commit/30d26904ff86bfb0ddd24fbd259f6d692d35b723 and others
- Deprecating Color.to_tuple Issue #155 by @gumyr in https://github.com/gumyr/build123d/commit/83cea3938d842ac2aa17ce269433cbf05909b6d4
- Deprecating Axis.to_plane, refactored Plane constructor Issue #155 by @gumyr in https://github.com/gumyr/build123d/commit/2e0c193aa8a7c667c976e0d6dec49cdc4a0312d6
- Deprecating Vertex.to_tuple - Issue #155 by @gumyr in https://github.com/gumyr/build123d/commit/ce3e6ba3a4c221c2b75d37886b4de4f4070bc4be
- Deprecating Edge/Wire.to_wire and Face.to_arcs by @gumyr in https://github.com/gumyr/build123d/commit/421dc667845509401ba308b6294333d91c25ea6a
- Deprecating Location.to_tuple Issue #155 by @gumyr in https://github.com/gumyr/build123d/commit/f445de32c98f6df1fab1bef5b8a5b8211f9df205
- Convert Shape methods to properties: is_null, is_valid, shape_type by @gumyr in https://github.com/gumyr/build123d/commit/560a5369b718242d7b8d547e1a00e4519e40aac1
- Deprecating Shape.relocate Issue #768 by @gumyr in https://github.com/gumyr/build123d/commit/ffc97ef6f0f7e60f23909391300806d5190e20ea
- Adding example of making many holes by @gumyr in https://github.com/gumyr/build123d/commit/6aaadd12a4cccc8b181144ce409d00623a82a312
- Adding global_location property by @gumyr in https://github.com/gumyr/build123d/commit/b25b330c9b2eadc70c90241ed83deba1dd584652
- Adding Face.location_at(point) and Shell.location_at(point) by @gumyr in https://github.com/gumyr/build123d/commit/10a3a2519d7083193b94593940f23f3f947056c1 and https://github.com/gumyr/build123d/commit/3f2d0a445d05dc031a328888420f94af067a3c0c
- Fixing fillet/chamfer parent id Issue #393 by @gumyr in https://github.com/gumyr/build123d/commit/02439d3a3628eb775ae46c1bb10d6d264f009448
- Improving trace - Issue #1021 by @gumyr in https://github.com/gumyr/build123d/commit/f3f9fd23574072d0217becf3260de9064bbb7a52
- Ensure tolerance is passed to wrap_edge function... by @seltzered in https://github.com/gumyr/build123d/pull/999
- Bugfix: correct
ArcArcTangentArctangency with reversed start_arc in algebra mode by @jwagenet in https://github.com/gumyr/build123d/pull/1000 - Bugfixes: Slot objects by @jwagenet in https://github.com/gumyr/build1Additional/pull/1003
- Add missing example STEP and other doc fixes by @jwagenet in https://github.com/gumyr/build123d/pull/1023
- tools/deglob.py -> add ability to write deglobbed change back to target file by @jdegenstein in https://github.com/gumyr/build123d/pull/988
- Added continuity to topo_explore_connected_edges by @gumyr in https://github.com/gumyr/build123d/commit/4795bf79ffff4ed7fdfdd1d7fd120e7447782f6b
- fix PolarLine with angles that make the length negative by @danieledapo in https://github.com/gumyr/build123d/pull/1040
- Add
Face.make_surface_patchconstrained surface modeling method by @jdegenstein in https://github.com/gumyr/build1Additional/pull/1043 - Add missing docstring to
Face.make_surface_patchand enhance error checking / handling and related tests by @jdegenstein in https://github.com/gumyr/build123d/pull/1048 - Update external tools to add OCP.wasm and update Yet Another CAD Viewer by @yeicor in https://github.com/gumyr/build123d/pull/1050
- Add method to list available system font names and FontStyles by @jwagenet in https://github.com/gumyr/build123d/pull/1051
- Enhancing loft to support a single hole by @gumyr in https://github.com/gumyr/build123d/commit/9f51515c63bad51ee50ac987760c930e5c993e7b
- Feature:
ArcArcTangentArcadd missing tangent cases and fix bad objects in BuildLine by @jwagenet in https://github.com/gumyr/build123d/pull/1058 - Add link to bd_beams_and_bars to external tools by @mtancoigne in https://github.com/gumyr/build123d/pull/1059
- Fix link format in external tools docs by @mtancoigne in https://github.com/gumyr/build123d/pull/1061
- add ability to do perspective projection by @Mx-El in https://github.com/gumyr/build123d/pull/1062
- operations_part.py -> reset
pending_edgesformake_brake_formedby @jdegenstein in https://github.com/gumyr/build123d/pull/1069 - Feature: add
ColorLikehandling toColorby @jwagenet in https://github.com/gumyr/build123d/pull/1072 - Docs should say arc when curve would be ambiguous by @paulftw in https://github.com/gumyr/build123d/pull/1082
- Wire.param_at_point improved by @gumyr in https://github.com/gumyr/build123d/commit/735f4ffb4d867e4d11554e3797f9c6eb143fa814
- Adding BlendCurve Issue #1054 by @gumyr in https://github.com/gumyr/build123d/commit/6028b14aa068f9235c41a74f837fecc898330764
- Adding Mixin1D.curvature_comb by @gumyr in https://github.com/gumyr/build123d/commit/790f0eacedcf056cfd46ab9c3945a5a405e6e2e7
- Add Edge.make_constrained_arcs by @gumyr in https://github.com/gumyr/build123d/commit/8b2886144ee3fe93aafc21f1a118d3eeb19410a6
- Intersect Everything: Geometry and 0D, 1D Shape by @jwagenet in https://github.com/gumyr/build123d/pull/1090
- Move from macos-13 (x86_64) to macos-15-intel (also x86_64) for relevant workflows by @jdegenstein in https://github.com/gumyr/build1Additional/pull/1100
- feat: add Gordon surface implementation and test by @gongfan99 in https://github.com/gumyr/build123d/pull/1099
- fix: make_gordon_surface supports all edge types by @gongfan99 in https://github.com/gumyr/build123d/pull/1101
- Adding Airfoil 1D object by @gumyr in https://github.com/gumyr/build123d/commit/f67cc12c34610d1b7c676f6af3c44a891ecaafe4
- fix: gradient error in gordon surface intersect by @gongfan99 in https://github.com/gumyr/build123d/pull/1106
- Added Edge.make_constrained_lines method by @gumyr in https://github.com/gumyr/build123d/commit/13685139563df1eec0528e0ca5844acae456a3ef and others
- Updated surface modeling docs to cover new functionality by @gumyr in https://github.com/gumyr/build123d/commit/4a32cedcd2fbae2583a439f34a372e739eb7344a and others
- .readthedocs.yaml -> fix tab title version on dev version builds by @jdegenstein in https://github.com/gumyr/build123d/pull/1111
- Deprecate some Arcs (e.g. ArcArcTangentArc) by @jdegenstein in https://github.com/gumyr/build123d/pull/1097
- Improving Face creation - fix inner Wires by @gumyr in https://github.com/gumyr/build123d/commit/696e99c8891745f54c509c28383b6e3ee6c9b88d
New Contributors
- @mingmingrr made their first contribution in https://github.com/gumyr/build123d/pull/923
- @jwagenet made their first contribution in https://github.com/gumyr/build1Example/pull/931
- @emmanuel-ferdman made their first contribution in https://github.com/gumyr/build123d/pull/976
- @ndevenish made their first contribution in https://github.com/gumyr/build123d/pull/978
- @jgraichen made their first contribution in https://github.com/gumyr/build123d/pull/984
- @seltzered made their first contribution in https://github.com/gumyr/build123d/pull/999
- @mtancoigne made their first contribution in https://github.com/gumyr/build123d/pull/1059
- @Mx-El made their first contribution in https://github.com/gumyr/build123d/pull/1062
- @paulftw made their first contribution in https://github.com/gumyr/build123d/pull/1082
- @gongfan99 made their first contribution in https://github.com/gumyr/build123d/pull/1099
Full Changelog: https://github.com/gumyr/build123d/compare/v0.9.1...v0.10.0
Notes
Files
gumyr/build123d-v0.10.0.zip
Files
(20.2 MB)
| Name | Size | Download all |
|---|---|---|
|
md5:854654aff24ccd3df2195414cd88750b
|
20.2 MB | Preview Download |
Additional details
Related works
- Is supplement to
- Software: https://github.com/gumyr/build123d/tree/v0.10.0 (URL)
Software
- Repository URL
- https://github.com/gumyr/build123d