Skip to content

v0.11.0

Latest

Choose a tag to compare

@jdegenstein jdegenstein released this 17 Jun 19:57
0109bf7

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.

  • Polygon now defaults to (Align.NONE, Align.NONE) instead of centered alignment by @jdegenstein in #1220.
  • Shape.is_planar_face is deprecated in d4bfeefe.
  • EllipticalCenterArc.end_angle is deprecated in favor of arc_size in efd5b130.
  • Face.make_plane() has been replaced by Face(Plane) by @jwagenet in #1113.
  • split_by_perimeter has moved toward the 2D topology API and is now implemented for Face/Shell; the Shape method remains as deprecated compatibility behavior in 8405ee06.
  • .wrapped attributes on several classes were changed to read-only properties backed by private _wrapped storage by @snoyer in #1283.
  • Intersection and algebra operations now more consistently return dimension-aware build123d objects such as Part, Sketch, or Curve rather than exposing raw ShapeList results, using composite factory infrastructure in 46e53193.
  • Deprecated Color.to_tuple was removed in 083cb161.

Notable Changes

  • Major refactor and expansion of intersection support across 1D, 2D, 3D, and composite shapes, including broader intersect methods, improved result normalization, and more test coverage by @jwagenet in #1120 and @bernhard-42 in #1209.
  • Added ConstrainedArcs and ConstrainedLines 1D objects which are Arcs/Lines that are constrained by other objects by @gumyr in various commits.
  • Added new ConvexPolyhedron 3D 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 BSpline 1D object defined directly from control points and knot data by @gumyr in ee375906.
  • Added ParabolicCenterArc and HyperbolicCenterArc by @kuravih in #1156.
  • Improved algebra-mode result handling so composite operations return dimension-aware Part, Sketch, or Curve objects instead of raw ShapeList results 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 FontManager by @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_face and Face.seams helpers for working with parametric face space in b6cfb1da and b0a1e07f.
  • Added import_dxf in a64430da.
  • Added and improved arc_size support across Circle, CenterArc, JernArc, and EllipticalCenterArc by @DaWeidmann and @gumyr in #1249 and related commits.
  • Improved fillet_2d and FilletPolyline, 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 @x0pherl in #1129.
  • Added support for RGBA hex strings in Color by @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 ty type-checking workflow, and Python 3.14 CI coverage by @jdegenstein in #1203.
  • Fixed JernArc localization 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 BoundBox from TopoDS_Shape by @DaWeidmann in #1263.
  • Fixed a bare exception clause in text.py by @hobostay in #1266.
  • Improved ShapeList.filter_by callable typing by @toby Fleming in b811edbd.
  • Improved Shape._bool_op handling 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.LENGTH behavior for some complex composite wires in ce0d99a4.
  • Improved Face.axis_of_rotation support for additional surface types in 203f8bfc.
  • Fixed ExportSVG.add_shape mutating inputs in ade88ecc.
  • Fixed sweep behavior when passed a generator by @gumyr in af7c1271.
  • Improved split handling for all Keep enum values in 3871345d.
  • Added ShapeList.group_by rounding improvements by @snoyer in #1277.
  • Added topo_distance_to selector 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 partomatic to 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:

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