Skip to content

Changelog

All notable changes to this project are documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Links go to the documentation page for each feature. Everything below sits under Unreleased because nothing has been published to nuget.org yet — the packages build and pack at 0.1.0, but no version has shipped, so there is no released version to date-stamp.

Unreleased

Added

Geometry kernel

  • Core math kernel — Vector3d/Matrix4d/Quaterniond/Aabb/Ray3d, BVH and octree, a central tolerance policy, and adaptive-exact Shewchuk predicates in 2D and 3D.
  • Half-edge mesh engine with booleans, Loop subdivision and QEM decimation.
  • Exact mesh booleans by imprint and winding-number classification, replacing the earlier BSP clipper.
  • Implicit engine — an SDF AST of primitives and operators, polygonised by manifold Surface Nets, with sharp features preserved by dual contouring. See The SDF vocabulary, Blends, Offset and Shell.
  • B-Rep engine — analytic curves and surfaces, NURBS, topology, and surface–surface intersection with analytic pairs plus a marching tracer for the rest.
  • The conversion triangle — implicit→mesh, B-Rep→mesh and mesh→implicit. See Three representations.
  • LINQ spatial queries over a BVH-backed IQueryable. See LINQ spatial queries.
  • Automatic B-Rep booleans (union, intersection, difference) with topologically sealed seams. See Booleans.
  • Exact curved 2D booleans — the arrangement carries circular arcs unflattened, so a disc measures πr² rather than a polygon’s approximation of it. See 2D sketch booleans.
  • Coplanar face fusion, so flush embossing and stacked plates fuse into one solid.
  • Lattices — eight triply periodic minimal surfaces (Schwarz P and D, gyroid, Neovius, I-WP, Lidinoid, Fischer–Koch S, Split P) as sheets or networks, plus six strut lattices, sized by volume fraction. See Lattices.
  • Space-filling curves (Hilbert, Moore, Peano, Gosper, Z-order) and a 2D infill consumer. See Space-filling curves & 2D infill.

Modelling

  • The unified Shape API — model once, choose the representation at the end, with Explain(target) reporting each node as Native, Bridged or Impossible.
  • Sketching with lines, arcs, béziers and elliptical arcs, exact in all three representations. See Sketching.
  • A variational sketch-constraint solver with a rank-revealing degrees-of-freedom report.
  • Extrude, revolve and sweep, including twisted and tapered extrusion. See Extrude, revolve, sweep.
  • Chamfers and fillets — mitered rims, whole-solid rounding, variable-radius laws and partial runs. See Chamfer & fillet.
  • Loft, draft and shell, including curved-face shelling and draft. See Loft, draft & shell.
  • Holes with a standards catalogue, drill-tip angles and threaded holes. See Holes & standard sizes.
  • Threads — ISO profiles, B-Rep-native rods and holes, left-hand threads, and a Native sub-depth lead-in chamfer. See Threads.
  • Modelled text from TrueType and OpenType/CFF fonts, including text on a curve. See Text.
  • Heightmap terrain from .dat and grayscale PNG. See Heightmap terrain.
  • Sheet metal — a K-factor bend model, folded topology surgery and unfolding to a flat pattern. See Sheet metal.
  • Frames and weldments — profiles on a skeleton with exact miters and cut lists. See Frames & weldments.
  • Parametric features, a feature registry and whole-history persistence. See Parametric features.
  • A typed geometry-reference vocabulary for features. See Geometry inputs for features.
  • Face and edge selection as LINQ extension methods. See Selecting faces & edges.
  • Topological naming by face provenance, carried through every rebuild site.
  • Design studies — drive [Param] values against a measured objective. See Design studies.
  • Assemblies, exploded views and mates, with mates reaching across assembly levels. See Assemblies.
  • Standard components that modify the host model as they are placed. See Standard components.
  • Materials and mass properties, with one unit convention. See Materials & mass.
  • Mechanisms — joints, drivers, couplings, cams, rates, limits and interference. See Mechanisms.
  • Gears — involute spur and helical, rack, worm, straight bevel, planetary, herringbone, crossed helical and cycloidal, each verified from contact. See Gears.
  • Patterns, LocationSet, extrude-until and build-plate packing. See Transforms & patterns and Packing a build plate.
  • Remeshing through the Shape API. See Remeshing.
  • Manufacturability checks — draft, overhangs and wall thickness. See Manufacturability checks.
  • An anti-drill tamper mesh with a derived and measured drill guarantee. See Anti-drill tamper mesh.
  • Document persistence and undo/redo. See Saving documents.

Simulation

  • A tetrahedral mesher with exact predicates, verified boundary recovery, quality refinement and anisotropic boundary layers. See Tetrahedral meshing.
  • Linear-static structural analysis, verified against patch tests, Euler–Bernoulli and Kirsch. See Structural analysis.
  • Thermal analysis — steady, transient, and thermal–structural coupling. See Thermal analysis.
  • Modal analysis by shift-and-invert Lanczos, with block Lanczos for repeated eigenvalues. See Modal analysis.
  • Buckling, stress stiffening, Rayleigh damping and harmonic response, plus a direct per-frequency solve for non-proportional damping. See Buckling & frequency response.
  • Transient dynamics by Newmark/HHT direct time integration. See Transient dynamics.
  • Fatigue post-processing — S-N life, Goodman and Gerber, rainflow counting and Marin factors. See Fatigue.
  • Directional materials, superconvergent stress recovery and an energy-norm error estimate.
  • Topology optimisation by SIMP with optimality criteria. See Topology optimisation.
  • Simulation results as fields on a mesh, with colour maps and deformed shapes. See Results & fields.
  • EngrCAD.Core.Solvers — a dependency-free sparse library with CG, Cholesky with AMD ordering, and SparseLdlt for symmetric-indefinite systems.

Interchange

  • STEP AP214 export and import, including assemblies.
  • A native lossless B-Rep archive, glTF export and IGES import. See Exports and Importing meshes.
  • STL, OBJ, OFF, 3MF, AMF and VTU export.
  • DXF and SVG, both directions. See DXF & SVG.
  • Engineering drawings — hidden-line removal, sheets, dimensions and PDF export. See Drawings.
  • 2D views — offset, section and silhouette. See 2D views.

Viewer and tooling

  • An OpenGL viewer as a library, with CAD chrome, section planes, display modes, matcap shading and a view cube. See Viewer.
  • 3D annotations (PMI) with hole tables and callouts. See 3D annotations.
  • Animation — a pure-t timeline, playback transport and APNG/GIF export. See Animation.
  • Live modelling by dotnet watch hot reload, and .csx scripting. See Scripting.
  • An MCP server, so a model program serves itself to AI assistants, plus loopback RPC control of a running viewer. See AI assistants (MCP).
  • A Blazor WebAssembly viewer running the kernel in the browser. See In the browser.
  • Executable documentation — every example compiles, runs and renders, and 118 of them run live in the reader’s browser.

Changed

  • The documentation site moved from DocFX to Astro Starlight, with DocFX reduced to generating the .NET API reference.
  • Material moved into EngrCAD.Core and the unit convention was settled on mm/N/MPa/tonne/s, with readable units as accessors rather than a second convention.
  • A grid quad’s diagonal is chosen by geometry (the shorter 3D diagonal) rather than by corner order, shared by every consumer through one rule.
  • Trimmed-face tessellation puts the natural grid’s interior rows into the base triangulation, so refinement is residual duty rather than a convergence mechanism.
  • PreventLongEdgeFlips became the remesher’s default, because the tet mesher’s boundary recovery needs a Delaunay-clean surface.
  • Surface Nets streams a sliding window of slabs and culls blocks the surface cannot reach, cutting peak memory from O(volume) to O(cross-section).
  • The half-edge builder resolves twins by counting sort rather than a dictionary.
  • Stress recovery and thermal flux are assembled per material region, so an interface is no longer smoothed across.
  • Allocation tests take the minimum over several batches, so a one-time JIT or GC artifact cannot fail them.

Fixed

  • Non-manifold pinch vertices from Surface Nets, split by cube face adjacency.
  • The web viewport cleared depth while the depth mask was disabled, so enabling the annotation overlay erased the model.
  • A cut pole cap was probed at its loop’s average parameter instead of its closest approach, refusing a blind hole that breaks out of a face.
  • An exact conic partially crossing a bounded planar patch is now clipped rather than deferred, so a cut can break out of more than one face.
  • Region2dOffset.Stroke dropped the outer corner fill at every clockwise turn.
  • A full circle’s seam in SketchRegion left a band of ordinates no parity ray could cross, so a point well inside a disc could read as outside.
  • Cross-drilled and sphere-piercing booleans, by sampling tracer polylines at their exact vertices.
  • A non-ASCII character in GLSL source made the whole viewport render black.