Files
OneCAD-Simulation/docs/meshing/corpus.md
T
a817a62440 Meshing test corpus built with SolidCraft; assembly placement in open_design (#11)
* geometry: build designs from SolidCraft command scripts (feature scripts)

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm

* geometry: place component bodies through their occurrences when opening a design

An assembly's instances were missing and moved components sat at their own origin.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm

* Meshing test corpus: 16 SolidCraft recipes, analytic shapes, loader and runner

modelcraft-testkit holds the corpus (tests/corpus/<name>/recipe.json run through SolidCraft's
engine, then opened as a design) and the runner binary behind cargo xtask corpus.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm

* docs: corpus results, test corpus architecture and the scripts feature; licences

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm

* corpus: measure each body once, check stage widths, simpler loader and runner

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm

---------

Co-authored-by: jyviko <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
2026-10-13 15:19:06 -04:00

5.7 KiB
Raw Blame History

Meshing test corpus

Generated by cargo xtask corpus; do not edit. The parts are our own: SolidCraft recipes in tests/corpus/<name>/recipe.json and analytic shapes generated in code (crates/testkit/src/corpus.rs). Each run rebuilds every part, tessellates it at a chordal tolerance of 1e-3 of its bounding-box diagonal and runs every stage on it. Times are wall clock on the machine that ran it; every other column is deterministic.

Results

part categories bodies faces triangles tol. mm build ms enclosed mm³ SolidCraft mm³ rel. diff exact mm³
bent-tube sweepable, thin-wall, genus 1 18 4296 0.121 443 4213.1 4159.4 1.3e-2 4159.8
bolted-assembly assembly, blocky 3 22 284 0.117 53 33004.7 32999.0 1.7e-4 32998.9
cross-cylinders boolean, sharp 1 10 1395 0.087 7912 32197.4 32357.8 -5.0e-3 32365.8
filleted-bracket fillet, genus, sweepable 1 13 540 0.088 387 32162.3 32145.0 5.4e-4 32144.8
i-beam sweepable, thin-wall 1 14 44 0.208 3 61600.0 61600.0 0.0e0 61600.0
loft-transition organic 1 6 292 0.075 56 56390.2 56450.6 -1.1e-3 –
perforated-plate genus, thin-wall, sweepable 1 54 1644 0.144 269 26822.2 26764.6 2.2e-3 26764.2
pinhole-block small-feature, genus 1 38 4044 0.073 203 49919.4 49909.6 2.0e-4 49909.5
rounded-box fillet 1 26 2540 0.054 148 23325.7 23340.5 -6.3e-4 23340.8
shallow-groove near-tangent, boolean 1 8 62 0.075 11 47795.2 47782.3 2.7e-4 47781.5
sharp-wedge sharp, thin-wall, sweepable 1 5 8 0.083 2 3200.0 3200.0 0.0e0 3200.0
sphere-on-plate near-tangent, boolean 1 12 2826 0.098 687 69353.3 69509.0 -2.2e-3 69509.7
spline-vase organic 1 11 3890 0.106 218 94891.2 94948.5 -6.0e-4 –
stepped-block blocky, sharp 1 14 96 0.078 32 47000.0 47000.0 0.0e0 47000.0
thin-ribs thin-wall, blocky 1 26 92 0.119 65 32000.0 32000.0 -4.5e-16 32000.0
thin-wall-enclosure thin-wall, blocky 1 11 36 0.108 8 15564.0 15564.0 0.0e0 15564.0
analytic-sphere analytic 1 6 2784 0.069 248 33353.4 33507.9 -4.6e-3 33510.3
analytic-torus analytic, genus 1 6 7230 0.109 338 37644.1 37893.7 -6.6e-3 37899.3
analytic-cylinder analytic, sweepable 1 4 1004 0.049 25 12533.1 12564.7 -2.5e-3 12566.4
analytic-pipe analytic, genus, sweepable 1 6 1448 0.104 42 94150.9 94238.0 -9.3e-4 94247.8
analytic-plate-hole analytic, genus, sweepable 1 8 112 0.224 11 98449.1 98429.5 2.0e-4 98429.2

Categories

category stresses parts
thin-wall walls thin against the part's size 6
small-feature features much smaller than the part 1
fillet blends between faces 2
genus through holes (genus > 0) 7
sharp sharp edges and acute dihedral angles 3
near-tangent faces meeting at a shallow angle 2
boolean intersection curves from booleans 3
sweepable extrusions and sweeps (one-to-one sweep meshing) 8
blocky axis-aligned blocks (polycube-friendly) 4
organic free-form, lofted or revolved spline surfaces 2
assembly several bodies placed by component transforms 1
analytic closed-form geometry for solver verification 5

Parts

  • bent-tube: A 10 mm tube with a 1 mm wall, bent through R30: a thin-walled sweep along a line-arc-line path.
  • bolted-assembly: A base plate with a clamp block component placed twice, once turned 90 degrees: bodies placed by component transforms.
  • cross-cylinders: Two orthogonal R10 cylinders joined: equal radii, so the intersection curves cross at two singular points.
  • filleted-bracket: An 8 mm L-bracket with an R6 inside fillet and a hole through each leg: a blend beside holes.
  • i-beam: A 200 mm I-beam with 3 mm flanges and a 2 mm web: a long sweepable prism with thin walls.
  • loft-transition: A 40 mm square lofted to an R15 circle 50 mm above: a ruled free-form surface between unlike sections.
  • perforated-plate: A 3 mm plate perforated by a 6 x 4 grid of 6 mm holes: genus 24 in a thin sheet.
  • pinhole-block: A 50 mm block drilled through by sixteen 0.6 mm pinholes: features 80 times smaller than the part, genus 16.
  • rounded-box: A 40 x 30 x 20 box with every edge rounded R3: cylinder and sphere blends meeting at the corners.
  • shallow-groove: A block with a 0.5 mm deep groove cut by an R30 cylinder: groove walls 10 degrees off the top face.
  • sharp-wedge: A wedge whose faces meet at under 3 degrees: a sharp edge with a needle-thin cross-section.
  • sphere-on-plate: A sphere sunk 0.1 mm into a plate: the faces meet at under 6 degrees around a 2 mm circle.
  • spline-vase: A vase revolved from a spline profile: doubly curved faces of varying curvature around a closed axis.
  • stepped-block: Three stacked blocks with a slot cut through the base: axis-aligned steps for polycube and octree meshers.
  • thin-ribs: A 4 mm plate carrying five 0.8 mm ribs 20 mm tall: thin walls standing on a thicker base.
  • thin-wall-enclosure: An 80 x 60 x 40 box shelled to 1 mm walls, open on top: thin walls over a large span.
  • analytic-sphere: Sphere r 20: curvature everywhere, no edges.
  • analytic-torus: Torus 30/8: genus 1 with doubly curved faces and no edges.
  • analytic-cylinder: Cylinder r 10, h 40: the round bar of beam and torsion checks.
  • analytic-pipe: Thick-walled pipe 20/30, length 60: the Lamé cylinder.
  • analytic-plate-hole: Plate 200 x 100 x 5 with a 20 mm hole: the Kirsch plate.