Breaking Changes
- build123d no longer has a transitive dependency on VTK. This is because build123d has switched dependency from cadquery-ocp 7.9 to cadquery-ocp-novtk 7.9 on this release. For users of certain jupyter-based workflows this may cause an issue when working with the new build123d==0.11.0 release. You are still free to separately install VTK which will re-enable the functionality provided by build123d's jupyter_tools.py. For further information and discussion please see the tracking issue #1337.
Compatibility Notes
These are compatibility-related changes that users should review. They are not necessarily all breaking changes.
Polygonnow defaults to(Align.NONE, Align.NONE)instead of centered alignment by @jdegenstein in #1220.Shape.is_planar_faceis deprecated in d4bfeefe.EllipticalCenterArc.end_angleis deprecated in favor ofarc_sizein efd5b130.Face.make_plane()has been replaced byFace(Plane)by @snoyer in #1113.split_by_perimeterhas moved toward the 2D topology API and is now implemented forFace/Shell; theShapemethod remains as deprecated compatibility behavior in 8405ee06..wrappedattributes on several classes were changed to read-only properties backed by private_wrappedstorage by @snoyer in #1283.- Intersection and algebra operations now more consistently return dimension-aware build123d objects such as
Part,Sketch, orCurverather than exposing rawShapeListresults, using composite factory infrastructure in 46e53193. - Deprecated
Color.to_tuplewas removed in 083cb161.
Notable Changes
- Major refactor and expansion of intersection support across 1D, 2D, 3D, and composite shapes, including broader
intersectmethods, improved result normalization, and more test coverage by @jwagenet in #1120 and @bernhard-42 in #1209. - Added
ConstrainedArcsandConstrainedLines1D objects which are Arcs/Lines that are constrained by other objects by @gumyr in various commits. - Added new
ConvexPolyhedron3D object that creates a convex solid from the convex hull of the provided points by @gumyr in 7fb6e280. This provides similar functionality to convex hulls in OpenSCAD (faceted solids). - Added new
BSpline1D object defined directly from control points and knot data by @gumyr in ee375906. - Added
ParabolicCenterArcandHyperbolicCenterArcby @kuravih in #1156. - Improved algebra-mode result handling so composite operations return dimension-aware
Part,Sketch, orCurveobjects instead of rawShapeListresults in 46e53193. - Continued VTK decoupling and OCP 7.9 preparation by @bernhard-42 in #1168.
- Added linux-aarch64 as a supported platform for build123d by @jdegenstein in #1236.
- Python 3.14 is also now supported as of this release.
- Added
Axis(..., end_point=...)construction for point-to-point axis definitions by @pranjalbhatia710 in #1322. - Added support for single-line fonts and a
FontManagerby @jwagenet in #1169. - Added BytesIO/file-object export support across SVG, DXF, STEP, STL, and 3MF workflows by @jdegenstein in #1141.
- Added BREP and STEP export to binary file objects by @snoyer in #1185.
- Added STL import rescaling support by @jdegenstein in #1227.
- Improved glTF export label behavior by disabling automatic OCCT naming where it overwrote user labels by @voneiden in #1202.
- Added
Face.uv_faceandFace.seamshelpers for working with parametric face space in b6cfb1da and b0a1e07f. - Added
import_dxfin a64430da. - Added and improved
arc_sizesupport acrossCircle,CenterArc,JernArc, andEllipticalCenterArcby @DaWeidmann and @gumyr in #1249 and related commits. - Improved
fillet_2dandFilletPolyline, including 0-radius support and several previous failure cases in 6cb57464 and related commits by @AlexVerschoot and @gumyr.
Selected Other Changes
- Added improved syntax highlighting for documentation code blocks by @jwagenet in #1088.
- Added support for passing an iterable of radii to FilletPolyline by @x0pherl in #1121
- Improved MacOS development setup by @gumyr in #1129.
- Added support for RGBA hex strings in
Colorby @jwagenet in #1133. - Fixed Example 14 heading in introductory examples by @Birdulon in #1144.
- Fixed alignment example documentation by @dgies in #1171.
- Added improved README structure and examples by @jwagenet in #1172.
- Enabled cadquery-ocp-stubs dependency groups for typing workflows by @jdegenstein in #1173.
- Added improved documentation for introductory examples by @DaWeidmann in #1179.
- Corrected color handling to use sRGB conversion by @gongfan99 in #1188.
- Added documentation for bd-vslot by @keeeal in #1189.
- Added non-blocking
tytype-checking workflow, and Python 3.14 CI coverage by @jdegenstein in #1203. - Fixed
JernArclocalization and tangent direction behavior by @jdegenstein in #1226. - fix: ShapeList.filter_by callable argument should match list type by @tobywf in #1234
- Added type annotations to
Builder.__enter__()by @DaWeidmann in #1248. - Added makerrepo to the external tools documentation by @fangpenlin in #1250.
- Added construction of
BoundBoxfromTopoDS_Shapeby @DaWeidmann in #1263. - Fixed a bare exception clause in
text.pyby @hobostay in #1266. - Improved
ShapeList.filter_bycallable typing by @toby Fleming in b811edbd. - Improved
Shape._bool_ophandling for zero shapes in 17f2d57d. - Fixed fillet/chamfer result wrapping for object instances in 6fe77900.
- Fixed trim behavior with reversed edges in 60181dcf.
- Fixed
PositionMode.LENGTHbehavior for some complex composite wires in ce0d99a4. - Improved
Face.axis_of_rotationsupport for additional surface types in 203f8bfc. - Fixed
ExportSVG.add_shapemutating inputs in ade88ecc. - Fixed sweep behavior when passed a generator by @gumyr in af7c1271.
- Improved
splithandling for allKeepenum values in 3871345d. - Added
ShapeList.group_byrounding improvements by @snoyer in #1277. - Added
topo_distance_toselector support in ab076f99. - Improved
Plane.__mul__typing and tests by @snoyer in #1281. - Added py-lib3mf linux-aarch64 workflow support and benchmark/test matrix changes by @jdegenstein in #1289.
- Added deprecated wrapper support so IDEs/type checkers can detect deprecated APIs by @snoyer in #1291.
- Fix typo in Location Contexts docs by @iparsrc in #1292
- fix: ConstrainedArcs solutions parameters offset by pi by @javimixet in #1302
- Avoid duplicate boolean clean passes by @sammekekko in #1308
- Changed
Matrix.rotate()to use degrees by @DaWeidmann in #1312. - Added
partomaticto the external libraries documentation by @x0pherl in #1317. - Improved type hints for
+and-operators by @DavidMStraub in #1321. - Added a twist-extrude documentation example by @KilowattSynthesis in #1328.
- Added
export_to_pcbway, a STEP export helper that uploads a build123d shape to PCBWay and opens the returned pricing page by @gumyr in #1329. - Added Plane(points) support for constructing a plane from three points while preserving the existing Plane(origin), Plane(origin, x_dir), and Plane(origin, x_dir, z_dir) forms by @pranjalbhatia710 in #1330.
- Fixed import failures on Windows systems with uppercase .TTC font collection files by loading font extensions case-insensitively in FontManager.register_font by @riosbotchen-source in #1334.
New Contributors
Thanks to the following first-time contributors:
- @x0pherl made their first contribution in #1121
- @Birdulon made their first contribution in #1144
- @AlexVerschoot made their first contribution in #1140
- @dgies made their first contribution in #1171
- @DaWeidmann made their first contribution in #1179
- @kuravih made their first contribution in #1156
- @keeeal made their first contribution in #1189
- @fangpenlin made their first contribution in #1250
- @hobostay made their first contribution in #1266
- @iparsrc made their first contribution in #1292
- @tobywf made their first contribution in #1234
- @sammekekko made their first contribution in #1308
- @DavidMStraub made their first contribution in #1321
- @KilowattSynthesis made their first contribution in #1328
- @pranjalbhatia710 made their first contribution in #1322
- @javimixet made their first contribution in #1302
- @riosbotchen-source made their first contribution in #1334
Contributors
Thanks to everyone who contributed to this release:
@AlexVerschoot, @bernhard-42, @Birdulon, @DavidMStraub, @DaWeidmann, @dgies, @fangpenlin, @gongfan99, @gumyr, @hobostay, @iparsrc, @jdegenstein, @jwagenet, @keeeal, @KilowattSynthesis, @kuravih, @paulftw, @pranjalbhatia710, @riosbotchen, @sammekekko, @slobberingant, @snoyer, @tobywf, @voneiden, and @x0pherl.
Full Changelog
Full Changelog: v0.10.0...v0.11.0