Skip to content

Cadova 0.1.5

Latest

Choose a tag to compare

@tomasf tomasf released this 02 Sep 13:42

Additions

  • Repeat along path (more variants): New 3D helpers for placing instances by either exact count or fixed spacing:
    • Geometry3D.repeated(along:target:reference:count:)
    • Geometry3D.repeated(along:target:reference:spacing:)
  • Read outlines: Geometry2D.readingOutlines(_:) converts geometry outlines into closed BezierPath2Ds and passes the original geometry and the paths to a reader closure.
  • Projection / slice builders. Convenient builder variants that hand you both the original geometry and the derived 2D result, for when you need to use both in the result:
    • projected(_:)
    • sliced(atZ:_:)
    • sliced(along:_:)
  • Alignment presets: Added GeometryAlignment3D.minXY and GeometryAlignment3D.maxXY for quick XY-face alignment.

Improvements

  • Faster, safer cache for materialized entries. Reworked how the cache handles materialized results to avoid race conditions and reduce redundant work. Benchmarks show improved stability and better performance in multi-part operations.
  • Measuring with fallbacks: measuringBounds now accepts an empty { ... } builder to produce fallback geometry when the input is empty.

Bug fixes

  • Fillet with zero radius: fillet(radius: 0) now produces the expected result (instead of empty geometry).