kernel-cases: the ladder takes twelve cases for this round's kernel fixes

Three new cases in closed form: two through holes touching at a point
(02/021), the stock shelled with no face open (09/012, a sealed void, two
shells) and a dome shelled from its flat base (09/013, its rim the circle
r18). Nine rig cases copied into their tiers: a cylinder grazing a hole's
edge (1279), lips 1e-4 off a base's walls (2928), wall halves merged into a
flange (494), flush chord layers (5197), the horn torus revolve (4007),
crossing pleated loft skins (4623), loft ribs joined to a rounded pad (4092),
a drafted box with rounds shelled (3576) and a shelled dome with its ring
joined back (4847). Golden recorded on SMLib replay 8017df9: 123/128 pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
jyviko
2026-10-26 07:33:13 -04:00
parent 9a93f9d215
commit 376363c736
27 changed files with 5526 additions and 402 deletions
+135 -123
View File
@@ -9,16 +9,16 @@ The **frontier** is the first case of a tier, in ladder order, that fails (fail,
| Tier | What | Cases | Results | Frontier |
|---|---|---|---|---|
| 01-primitives | primitives with closed-form volumes | 6 | 6 pass | – |
| 02-booleans | booleans in the degeneracy classes, and cuts that end in a single line | 20 | 1 fail, 19 pass | 018-hole-tangent-to-side-face |
| 03-analytic-profiles | extrudes and revolves of line-and-arc profiles | 9 | 9 pass | – |
| 04-spline-profiles | spline profiles, sweeps and lofts | 10 | 10 pass | – |
| 05-holes-and-taps | holes and tapped holes | 13 | 1 fail, 12 pass | 010-hole-tangent-to-end-face |
| 06-threads | modelled threads | 10 | 1 fail, 7 pass, 2 unsupported | 006-external-m10-into-chamfer |
| 07-fillets | constant, variable and corner fillets | 17 | 3 fail, 12 pass, 2 unsupported | 012-variable-into-rounded-corner |
| 08-chamfers | chamfers | 8 | 1 fail, 7 pass | 008-part-chamfers |
| 09-shells-and-offsets | shells and offsets | 11 | 2 fail, 9 pass | 010-shell-under-rounded-top |
| 10-patterns-and-mirrors | patterns and mirrors | 8 | 1 fail, 7 pass | 008-part-vents |
| 11-cumulative-parts | parts combining every tier | 4 | 3 fail, 1 pass | 002-flange |
| 02-booleans | booleans in the degeneracy classes, and cuts that end in a single line | 25 | 25 pass | – |
| 03-analytic-profiles | extrudes and revolves of line-and-arc profiles | 10 | 10 pass | – |
| 04-spline-profiles | spline profiles, sweeps and lofts | 12 | 12 pass | – |
| 05-holes-and-taps | holes and tapped holes | 13 | 13 pass | – |
| 06-threads | modelled threads | 10 | 8 pass, 2 unsupported | – |
| 07-fillets | constant, variable and corner fillets | 17 | 1 fail, 14 pass, 2 unsupported | 016-corner-three-sequential-r5-r3-r7 |
| 08-chamfers | chamfers | 8 | 8 pass | – |
| 09-shells-and-offsets | shells and offsets | 15 | 15 pass | – |
| 10-patterns-and-mirrors | patterns and mirrors | 8 | 8 pass | – |
| 11-cumulative-parts | parts combining every tier | 4 | 4 pass | – |
Cases where SMLib's check gave no verdict on a body (SMLib can't take the record yet), so only the record's checks graded validity: 0.
@@ -28,119 +28,131 @@ Times are the commands' own, in seconds, from the case's process; **golden** is
| Case | What | Answer | Result | s | golden s | changes |
|---|---|---|---|---|---|---|
| ladder/01-primitives/001-box | a 60x40x20 box: the stock every later tier starts from | analytic | pass | 0.003 | – | status was unsupported |
| ladder/01-primitives/002-cylinder | a cylinder r10 h30 | analytic | pass | 0.031 | – | status was unsupported |
| ladder/01-primitives/004-frustum | a cone frustum r10 -> r5, h20 (revolved trapezoid) | analytic | pass | 0.035 | – | status was unsupported |
| ladder/01-primitives/003-cone | a cone r10 h30 (no cone primitive: a revolved right triangle, its axis a sketch line) | analytic | pass | 0.028 | – | status was unsupported |
| ladder/01-primitives/005-sphere | a sphere r10 | analytic | pass | 0.009 | – | status was unsupported |
| ladder/01-primitives/006-torus | a torus R20 r5 | analytic | pass | 1.466 | – | status was unsupported |
| ladder/02-booleans/004-edge-on-edge-no-overlap | a cut tool that shares only the top front edge of the stock | analytic | pass | 0.010 | – | status was unsupported |
| ladder/02-booleans/003-pocket-flush-with-top | a 20x20x10 pocket whose tool's top is the stock's top face | analytic | pass | 0.011 | – | status was unsupported |
| ladder/02-booleans/015-knife-edge-wedge-cut | a triangular prism cut whose slope meets the bottom face along one line (a knife edge), its other faces on the stock's | analytic | pass | 0.007 | – | status was unsupported |
| ladder/02-booleans/002-coplanar-overlap-join | two 60x40x20 boxes overlapping 30x20 in plan, tops and bottoms coplanar | analytic | pass | 0.007 | – | status was unsupported |
| ladder/02-booleans/019-notch-flush-with-end-face | a notch 40x20 through the height, its end flush with the stock's end face: a U | analytic | pass | 0.007 | – | status was unsupported |
| ladder/02-booleans/016-v-groove-pinches-bottom-to-line | a V groove whose apex touches the bottom face along a line, cut through: two pieces | analytic | pass | 0.007 | – | status was unsupported |
| ladder/02-booleans/013-cut-across-cylinder-seam | a 10x4 notch through a cylinder r10 across its +X side (where the seam lies) | analytic | pass | 0.063 | – | status was unsupported |
| ladder/02-booleans/001-coincident-face-join | a 60x40x10 box joined exactly on the stock's top face: one 60x40x30 box | analytic | pass | 0.007 | – | status was unsupported |
| ladder/02-booleans/009-near-tangent-overlap-1e-3 | a cylinder r10 along X dipping 1e-3 mm into the top face, cut: a groove 1e-3 deep | analytic | pass | 0.032 | – | status was unsupported |
| ladder/02-booleans/020-part-back-wall | the running part: a 60x10x15 back wall joined on the stock's top, flush with its back and ends | analytic | pass | 0.009 | – | status was unsupported |
| ladder/02-booleans/005-vertex-on-face-no-overlap | an inverted cone whose apex touches the middle of the top face, cut | analytic | pass | 0.042 | – | status was unsupported |
| ladder/02-booleans/018-hole-tangent-to-side-face | a through hole r10 tangent to the front face: the front face pinched to a line | analytic | **FAIL**: measure Part: the operation failed: not supported yet: tessellation: face 4 (plane): boundary crosses itself (want measurable); body_count 0 (want 1); volume_mm3 0 (want 41716.814693) | 0.068 | – | status was unsupported |
| ladder/02-booleans/010-near-tangent-overlap-1e-6 | a cylinder r10 along X dipping 1e-6 mm into the top face, cut | invariants | pass | 0.034 | – | status was unsupported |
| ladder/02-booleans/006-tangent-along-line-no-overlap | a cylinder r10 along X lying on the top face (tangent along a line), cut | analytic | pass | 0.031 | – | status was unsupported |
| ladder/02-booleans/008-near-tangent-gap-1e-6 | a cylinder r10 along X 1e-6 mm above the top face, cut | analytic | pass | 0.032 | – | status was unsupported |
| ladder/02-booleans/007-near-tangent-gap-1e-3 | a cylinder r10 along X 1e-3 mm above the top face, cut | analytic | pass | 0.032 | – | status was unsupported |
| ladder/02-booleans/017-cylinder-tangent-top-and-bottom | a cylinder r10 along X tangent to both the top and bottom faces, cut: two pieces with zero-angle cusps | analytic | pass | 0.060 | – | status was unsupported |
| ladder/02-booleans/011-tangent-along-circle-through-hole | a sphere r10 sitting in a through hole r10 at the top edge (tangent along the hole's top circle), cut | analytic | pass | 0.094 | – | status was unsupported |
| ladder/02-booleans/014-cut-through-sphere-pole | a 4x4 square post cut off the top of a sphere r10 through its pole | analytic | pass | 0.024 | – | status was unsupported |
| ladder/02-booleans/012-tangent-along-circle-bowl | a blind hole r10 10 deep, then a sphere r10 centred on its floor: the floor disk vanishes exactly | analytic | pass | 0.103 | – | status was unsupported |
| ladder/03-analytic-profiles/001-extrude-rect-with-arc-end | a 60x40 profile with a semicircular end r20, extruded 20 | analytic | pass | 0.016 | – | status was unsupported |
| ladder/03-analytic-profiles/003-extrude-tapered-circle | a circle r10 extruded 20 with a -5 deg taper (inward): a cone frustum | analytic | pass | 0.043 | – | status was unsupported |
| ladder/03-analytic-profiles/007-revolve-180-touching-axis | a 15x20 rectangle on the axis revolved 180 deg: a half cylinder | analytic | pass | 0.017 | – | status was unsupported |
| ladder/03-analytic-profiles/008-extrude-slot | a slot (centres 40 apart, width 20) extruded 10 | analytic | pass | 0.020 | – | status was unsupported |
| ladder/03-analytic-profiles/002-extrude-annulus | an annulus r20/r10 extruded 15 | analytic | pass | 0.057 | – | status was unsupported |
| ladder/03-analytic-profiles/004-revolve-full-off-axis | a 10x30 rectangle 10 mm off the Z axis revolved 360 deg: a tube | analytic | pass | 0.055 | – | status was unsupported |
| ladder/03-analytic-profiles/006-revolve-partial-90 | a 10x10 rectangle 10 mm off the axis revolved 90 deg | analytic | pass | 0.013 | – | status was unsupported |
| ladder/03-analytic-profiles/005-revolve-touching-axis-hemisphere | a quarter disk r20 with an edge on the Z axis revolved 360 deg: a hemisphere | analytic | pass | 0.085 | – | status was unsupported |
| ladder/03-analytic-profiles/009-part-boss-and-slot | the running part: a revolved boss r8 h10 joined on the top, a slot 15x8 cut through the base | analytic | pass | 0.148 | – | status was unsupported |
| ladder/04-spline-profiles/001-extrude-bezier-arch | a profile closed by a cubic Bezier arch (control-point spline, 4 points), extruded 10 | analytic | pass | 0.010 | – | status was unsupported |
| ladder/04-spline-profiles/008-loft-square-to-circle | a loft from a 40 square at z=0 to a circle r10 at z=30 | invariants | pass | 0.018 | – | status was unsupported |
| ladder/04-spline-profiles/006-loft-circle-frustum | a loft between circles r20 at z=0 and r10 at z=30 | analytic | pass | 0.039 | – | status was unsupported |
| ladder/04-spline-profiles/007-loft-three-circles | a smooth loft through circles r20, r10, r20 at z = 0, 20, 40 | invariants | pass | 0.059 | – | status was unsupported |
| ladder/04-spline-profiles/005-loft-square-frustum | a loft between a 40 square at z=0 and a 20 square at z=30 | analytic | pass | 0.005 | – | status was unsupported |
| ladder/04-spline-profiles/009-extrude-periodic-fit-spline | a closed periodic fit-point spline through 6 points, extruded 10 | invariants | pass | 0.021 | – | status was unsupported |
| ladder/04-spline-profiles/004-sweep-square-along-bezier | a 4x4 square swept along the same Bezier path | analytic | pass | 0.034 | – | status was unsupported |
| ladder/04-spline-profiles/002-revolve-bezier-profile | a profile with a Bezier side (r from 20 to 15 over z 0..30) revolved 360 deg about Z | analytic | pass | 0.092 | – | status was unsupported |
| ladder/04-spline-profiles/003-pipe-along-bezier | a pipe d4 along a planar Bezier path | analytic | pass | 0.115 | – | status was unsupported |
| ladder/04-spline-profiles/010-part-bezier-window | the running part: a Bezier-arched window cut through the back wall | analytic | pass | 0.212 | – | status was unsupported |
| ladder/05-holes-and-taps/010-hole-tangent-to-end-face | a d10 through hole tangent to the end face x=0 | analytic | **FAIL**: measure Part: the operation failed: not supported yet: tessellation: face 4 (plane): triangulation does not (want measurable); body_count 0 (want 1); volume_mm3 0 (want 46429.203673) | 0.055 | – | status was unsupported |
| ladder/05-holes-and-taps/002-simple-blind-flat | a d10 blind hole 10 deep, flat bottom | analytic | pass | 0.062 | – | status was unsupported |
| ladder/05-holes-and-taps/009-hole-0.5-from-edge | a d10 through hole whose wall is 0.5 mm from the end face | analytic | pass | 0.045 | – | status was unsupported |
| ladder/05-holes-and-taps/001-simple-through | a d10 through hole in the stock's top | analytic | pass | 0.045 | – | status was unsupported |
| ladder/05-holes-and-taps/006-tapped-m6-through | an M6 tapped hole through: the tap drill d5 (major - pitch), cosmetic thread | analytic | pass | 0.038 | – | status was unsupported |
| ladder/05-holes-and-taps/004-counterbore | a counterbored hole: d6.6 through, d11 x 6.4 counterbore | analytic | pass | 0.121 | – | status was unsupported |
| ladder/05-holes-and-taps/007-tapped-m8-blind | an M8 tapped blind hole 12 deep with a 118 deg drill point | analytic | pass | 0.064 | – | status was unsupported |
| ladder/05-holes-and-taps/003-drilled-blind-118 | a d10 drilled hole 10 deep to the shoulder with a 118 deg point | analytic | pass | 0.073 | – | status was unsupported |
| ladder/05-holes-and-taps/005-countersink | a countersunk hole: d6.6 through, d12 x 90 deg countersink | analytic | pass | 0.140 | – | status was unsupported |
| ladder/05-holes-and-taps/008-tapped-m5-into-curved-face | an M5 tapped hole drilled radially through a cylinder r20 lying along X | analytic | pass | 0.134 | – | status was unsupported |
| ladder/05-holes-and-taps/011-crossing-holes-steinmetz | two d10 through holes whose axes cross: vertical and along Y at z=10 | analytic | pass | 0.244 | – | status was unsupported |
| ladder/05-holes-and-taps/012-crossing-tapped-holes-offset | two M6 tapped holes (d5) crossing with axes 2 mm apart | analytic | pass | 0.128 | – | status was unsupported |
| ladder/05-holes-and-taps/013-part-holes | the running part: an M6 tapped through hole, an M5 tapped blind hole in the boss, a d3.3 hole down through wall and base | analytic | pass | 0.604 | – | status was unsupported |
| ladder/06-threads/003-external-m10-partial-length | a modelled M10 thread over 15 of the 30 mm: it stops square in the middle of the face | invariants | pass | 1.146 | – | status was unsupported |
| ladder/06-threads/005-internal-m10-through | a modelled internal M10 thread in a d8.5 (tap drill) hole through a 30x30x20 block | analytic | pass | 1.392 | – | status was unsupported |
| ladder/06-threads/004-external-m10-to-shoulder | a modelled M10 thread on a d10 shaft running down to a d16 shoulder | invariants | pass | 2.444 | – | status was unsupported |
| ladder/06-threads/001-external-m10-full | a modelled M10 thread over the whole of a d10 x 30 cylinder | analytic | pass | 2.593 | – | status was unsupported |
| ladder/06-threads/006-external-m10-into-chamfer | a d10 x 30 cylinder with a 1 mm chamfer on top, then a modelled M10 thread over its cylinder face, running out through the chamfer | analytic | **FAIL**: record_valid geometry: portable B-rep: face 25 loop 0 use 1: pcurve middle lifts off its edge's curve by 0.000045 (want ok) | 2.764 | – | status was unsupported |
| ladder/06-threads/002-external-m10x1-fine | a modelled fine M10x1 thread over a d10 x 30 cylinder | analytic | pass | 4.590 | – | status was unsupported |
| ladder/06-threads/010-part-threaded-boss | the running part with a modelled M16 thread on its d16 boss | invariants | pass | 1.482 | – | status was unsupported |
| ladder/06-threads/007-external-m10-at-filleted-shoulder | a modelled M10 thread on a d10 shaft whose root at the d16 shoulder has an r1 fillet | invariants | pass | 2.568 | – | status was unsupported |
| ladder/01-primitives/001-box | a 60x40x20 box: the stock every later tier starts from | analytic | pass | 0.002 | 0.002 | |
| ladder/01-primitives/005-sphere | a sphere r10 | analytic | pass | 0.005 | 0.005 | |
| ladder/01-primitives/003-cone | a cone r10 h30 (no cone primitive: a revolved right triangle, its axis a sketch line) | analytic | pass | 0.014 | 0.014 | |
| ladder/01-primitives/004-frustum | a cone frustum r10 -> r5, h20 (revolved trapezoid) | analytic | pass | 0.016 | 0.016 | |
| ladder/01-primitives/002-cylinder | a cylinder r10 h30 | analytic | pass | 0.028 | 0.028 | |
| ladder/01-primitives/006-torus | a torus R20 r5 | analytic | pass | 0.463 | 0.463 | |
| ladder/02-booleans/004-edge-on-edge-no-overlap | a cut tool that shares only the top front edge of the stock | analytic | pass | 0.006 | 0.006 | |
| ladder/02-booleans/016-v-groove-pinches-bottom-to-line | a V groove whose apex touches the bottom face along a line, cut through: two pieces | analytic | pass | 0.007 | 0.007 | |
| ladder/02-booleans/015-knife-edge-wedge-cut | a triangular prism cut whose slope meets the bottom face along one line (a knife edge), its other faces on the stock's | analytic | pass | 0.011 | 0.011 | |
| ladder/02-booleans/001-coincident-face-join | a 60x40x10 box joined exactly on the stock's top face: one 60x40x30 box | analytic | pass | 0.012 | 0.012 | |
| ladder/02-booleans/014-cut-through-sphere-pole | a 4x4 square post cut off the top of a sphere r10 through its pole | analytic | pass | 0.012 | 0.012 | |
| ladder/02-booleans/020-part-back-wall | the running part: a 60x10x15 back wall joined on the stock's top, flush with its back and ends | analytic | pass | 0.013 | 0.013 | |
| ladder/02-booleans/003-pocket-flush-with-top | a 20x20x10 pocket whose tool's top is the stock's top face | analytic | pass | 0.013 | 0.013 | |
| ladder/02-booleans/019-notch-flush-with-end-face | a notch 40x20 through the height, its end flush with the stock's end face: a U | analytic | pass | 0.013 | 0.013 | |
| ladder/02-booleans/002-coplanar-overlap-join | two 60x40x20 boxes overlapping 30x20 in plan, tops and bottoms coplanar | analytic | pass | 0.013 | 0.013 | |
| ladder/02-booleans/008-near-tangent-gap-1e-6 | a cylinder r10 along X 1e-6 mm above the top face, cut | analytic | pass | 0.016 | 0.016 | |
| ladder/02-booleans/010-near-tangent-overlap-1e-6 | a cylinder r10 along X dipping 1e-6 mm into the top face, cut | invariants | pass | 0.016 | 0.016 | |
| ladder/02-booleans/007-near-tangent-gap-1e-3 | a cylinder r10 along X 1e-3 mm above the top face, cut | analytic | pass | 0.019 | 0.019 | |
| ladder/02-booleans/017-cylinder-tangent-top-and-bottom | a cylinder r10 along X tangent to both the top and bottom faces, cut: two pieces with zero-angle cusps | analytic | pass | 0.023 | 0.023 | |
| ladder/02-booleans/006-tangent-along-line-no-overlap | a cylinder r10 along X lying on the top face (tangent along a line), cut | analytic | pass | 0.026 | 0.026 | |
| ladder/02-booleans/018-hole-tangent-to-side-face | a through hole r10 tangent to the front face: the front face pinched to a line | analytic | pass | 0.026 | 0.026 | |
| ladder/02-booleans/009-near-tangent-overlap-1e-3 | a cylinder r10 along X dipping 1e-3 mm into the top face, cut: a groove 1e-3 deep | analytic | pass | 0.030 | 0.030 | |
| ladder/02-booleans/005-vertex-on-face-no-overlap | an inverted cone whose apex touches the middle of the top face, cut | analytic | pass | 0.035 | 0.035 | |
| ladder/02-booleans/011-tangent-along-circle-through-hole | a sphere r10 sitting in a through hole r10 at the top edge (tangent along the hole's top circle), cut | analytic | pass | 0.035 | 0.035 | |
| ladder/02-booleans/013-cut-across-cylinder-seam | a 10x4 notch through a cylinder r10 across its +X side (where the seam lies) | analytic | pass | 0.039 | 0.039 | |
| ladder/02-booleans/012-tangent-along-circle-bowl | a blind hole r10 10 deep, then a sphere r10 centred on its floor: the floor disk vanishes exactly | analytic | pass | 0.043 | 0.043 | |
| ladder/02-booleans/022-cylinder-grazing-a-hole-edge | a corner piece (square column minus a quarter disc r1.5, 0.0003 off the axis) cut out of a part with a blind r1.6 hole on the same axis: the tool's r1.5 face sits 0.1 mm inside the hole wall; 'no result' | analytic | pass | 0.060 | 0.060 | |
| ladder/02-booleans/021-holes-touching-at-a-point | two through holes r5 whose circles touch at one point (30, 20) | analytic | pass | 0.067 | 0.067 | |
| ladder/02-booleans/023-lips-1e-4-off-the-walls-joined | two half-annulus lips (r 4..5, from z=2 to 20) joined onto a stadium-ring base (z 0..2, r 3..5 arcs, centres 20 apart) with their cylinder walls 0.0001 mm off the base's: the lip cap touches the base top, leaving a 0.0001 mm crescent overhang. Layout is a hand-built variant of the PR's public reproduction | analytic | pass | 0.108 | 0.108 | |
| ladder/02-booleans/024-wall-halves-merged-into-a-flange | the flange top annulus of a freshly revolved hub (z = 6, r 18..30) picked by a point and extruded 5 mm (the pick found a third of the face: "the selected planar face no longer exists") | analytic | pass | 0.176 | 0.176 | |
| ladder/02-booleans/025-flush-chord-layers-joined | a join of flush layers: a disc r37 (z -1.2..0) carrying 15 of the 19 regions of a sketch of 18 chords (z -3.6..-1.2; four bands left out), on an annulus r35..37 (z -5.6..-3.6) joined to a disc of all the chord regions (z -8..-5.6): SMLib's result came back with 'loop encloses no (u, v) area' though both operands are valid | analytic | pass | 1.036 | 1.036 | |
| ladder/03-analytic-profiles/006-revolve-partial-90 | a 10x10 rectangle 10 mm off the axis revolved 90 deg | analytic | pass | 0.009 | 0.009 | |
| ladder/03-analytic-profiles/008-extrude-slot | a slot (centres 40 apart, width 20) extruded 10 | analytic | pass | 0.012 | 0.012 | |
| ladder/03-analytic-profiles/001-extrude-rect-with-arc-end | a 60x40 profile with a semicircular end r20, extruded 20 | analytic | pass | 0.014 | 0.014 | |
| ladder/03-analytic-profiles/007-revolve-180-touching-axis | a 15x20 rectangle on the axis revolved 180 deg: a half cylinder | analytic | pass | 0.016 | 0.016 | |
| ladder/03-analytic-profiles/002-extrude-annulus | an annulus r20/r10 extruded 15 | analytic | pass | 0.033 | 0.033 | |
| ladder/03-analytic-profiles/004-revolve-full-off-axis | a 10x30 rectangle 10 mm off the Z axis revolved 360 deg: a tube | analytic | pass | 0.034 | 0.034 | |
| ladder/03-analytic-profiles/003-extrude-tapered-circle | a circle r10 extruded 20 with a -5 deg taper (inward): a cone frustum | analytic | pass | 0.039 | 0.039 | |
| ladder/03-analytic-profiles/009-part-boss-and-slot | the running part: a revolved boss r8 h10 joined on the top, a slot 15x8 cut through the base | analytic | pass | 0.065 | 0.065 | |
| ladder/03-analytic-profiles/005-revolve-touching-axis-hemisphere | a quarter disk r20 with an edge on the Z axis revolved 360 deg: a hemisphere | analytic | pass | 0.072 | 0.072 | |
| ladder/03-analytic-profiles/010-revolve-horn-torus-270 | the half disc of radius 14 on the far side of a diameter 14 mm from the axis (the full circle would touch the axis: a horn torus) revolved 270 degrees | analytic | pass | 0.074 | 0.074 | |
| ladder/04-spline-profiles/001-extrude-bezier-arch | a profile closed by a cubic Bezier arch (control-point spline, 4 points), extruded 10 | analytic | pass | 0.008 | 0.008 | |
| ladder/04-spline-profiles/005-loft-square-frustum | a loft between a 40 square at z=0 and a 20 square at z=30 | analytic | pass | 0.009 | 0.009 | |
| ladder/04-spline-profiles/008-loft-square-to-circle | a loft from a 40 square at z=0 to a circle r10 at z=30 | invariants | pass | 0.014 | 0.014 | |
| ladder/04-spline-profiles/009-extrude-periodic-fit-spline | a closed periodic fit-point spline through 6 points, extruded 10 | invariants | pass | 0.029 | 0.029 | |
| ladder/04-spline-profiles/006-loft-circle-frustum | a loft between circles r20 at z=0 and r10 at z=30 | analytic | pass | 0.031 | 0.031 | |
| ladder/04-spline-profiles/004-sweep-square-along-bezier | a 4x4 square swept along the same Bezier path | analytic | pass | 0.037 | 0.037 | |
| ladder/04-spline-profiles/007-loft-three-circles | a smooth loft through circles r20, r10, r20 at z = 0, 20, 40 | invariants | pass | 0.039 | 0.039 | |
| ladder/04-spline-profiles/003-pipe-along-bezier | a pipe d4 along a planar Bezier path | analytic | pass | 0.079 | 0.079 | |
| ladder/04-spline-profiles/002-revolve-bezier-profile | a profile with a Bezier side (r from 20 to 15 over z 0..30) revolved 360 deg about Z | analytic | pass | 0.081 | 0.081 | |
| ladder/04-spline-profiles/010-part-bezier-window | the running part: a Bezier-arched window cut through the back wall | analytic | pass | 0.095 | 0.095 | |
| ladder/04-spline-profiles/012-loft-ribs-joined-to-a-rounded-pad | the same without the top flange: the join fails with 'boolean Union: no result' | invariants | pass | 0.499 | 0.499 | |
| ladder/04-spline-profiles/011-crossing-pleated-loft-skins-joined | a join of two pleated skins (lofts between 24-pleat star outlines, less the same loft moved in 1.1 mm) that cross along a ring near their bottoms: truck panicked ('tolerance must be no less than 1e-6') or gave no result | invariants | pass | 1.130 | 1.130 | |
| ladder/05-holes-and-taps/006-tapped-m6-through | an M6 tapped hole through: the tap drill d5 (major - pitch), cosmetic thread | analytic | pass | 0.017 | 0.017 | |
| ladder/05-holes-and-taps/009-hole-0.5-from-edge | a d10 through hole whose wall is 0.5 mm from the end face | analytic | pass | 0.018 | 0.018 | |
| ladder/05-holes-and-taps/010-hole-tangent-to-end-face | a d10 through hole tangent to the end face x=0 | analytic | pass | 0.019 | 0.019 | |
| ladder/05-holes-and-taps/003-drilled-blind-118 | a d10 drilled hole 10 deep to the shoulder with a 118 deg point | analytic | pass | 0.023 | 0.023 | |
| ladder/05-holes-and-taps/007-tapped-m8-blind | an M8 tapped blind hole 12 deep with a 118 deg drill point | analytic | pass | 0.024 | 0.024 | |
| ladder/05-holes-and-taps/002-simple-blind-flat | a d10 blind hole 10 deep, flat bottom | analytic | pass | 0.025 | 0.025 | |
| ladder/05-holes-and-taps/001-simple-through | a d10 through hole in the stock's top | analytic | pass | 0.030 | 0.030 | |
| ladder/05-holes-and-taps/004-counterbore | a counterbored hole: d6.6 through, d11 x 6.4 counterbore | analytic | pass | 0.049 | 0.049 | |
| ladder/05-holes-and-taps/005-countersink | a countersunk hole: d6.6 through, d12 x 90 deg countersink | analytic | pass | 0.061 | 0.061 | |
| ladder/05-holes-and-taps/011-crossing-holes-steinmetz | two d10 through holes whose axes cross: vertical and along Y at z=10 | analytic | pass | 0.064 | 0.064 | |
| ladder/05-holes-and-taps/008-tapped-m5-into-curved-face | an M5 tapped hole drilled radially through a cylinder r20 lying along X | analytic | pass | 0.068 | 0.068 | |
| ladder/05-holes-and-taps/012-crossing-tapped-holes-offset | two M6 tapped holes (d5) crossing with axes 2 mm apart | analytic | pass | 0.072 | 0.072 | |
| ladder/05-holes-and-taps/013-part-holes | the running part: an M6 tapped through hole, an M5 tapped blind hole in the boss, a d3.3 hole down through wall and base | analytic | pass | 0.235 | 0.235 | |
| ladder/06-threads/003-external-m10-partial-length | a modelled M10 thread over 15 of the 30 mm: it stops square in the middle of the face | invariants | pass | 0.622 | 0.622 | |
| ladder/06-threads/010-part-threaded-boss | the running part with a modelled M16 thread on its d16 boss | invariants | pass | 0.660 | 0.660 | |
| ladder/06-threads/005-internal-m10-through | a modelled internal M10 thread in a d8.5 (tap drill) hole through a 30x30x20 block | analytic | pass | 0.726 | 0.726 | |
| ladder/06-threads/004-external-m10-to-shoulder | a modelled M10 thread on a d10 shaft running down to a d16 shoulder | invariants | pass | 1.219 | 1.219 | |
| ladder/06-threads/007-external-m10-at-filleted-shoulder | a modelled M10 thread on a d10 shaft whose root at the d16 shoulder has an r1 fillet | invariants | pass | 1.231 | 1.231 | |
| ladder/06-threads/001-external-m10-full | a modelled M10 thread over the whole of a d10 x 30 cylinder | analytic | pass | 1.337 | 1.337 | |
| ladder/06-threads/006-external-m10-into-chamfer | a d10 x 30 cylinder with a 1 mm chamfer on top, then a modelled M10 thread over its cylinder face, running out through the chamfer | analytic | pass | 1.390 | 1.390 | |
| ladder/06-threads/002-external-m10x1-fine | a modelled fine M10x1 thread over a d10 x 30 cylinder | analytic | pass | 2.362 | 2.362 | |
| ladder/06-threads/008-multi-start-thread | a two-start M10 thread (lead 3, pitch 1.5) | invariants | not supported yet: solid.thread has no start count: multi-start threads | – | – | |
| ladder/06-threads/009-thread-runout-length | an M10 thread that vanishes over a 2-pitch runout before a shoulder | invariants | not supported yet: solid.thread has no runout (vanishing thread) length | – | – | |
| ladder/07-fillets/006-variable-r5-to-zero | a variable round on the top front edge, r5 at x=0 down to 0 at the x=60 vertex | analytic | pass | 0.018 | – | status was unsupported |
| ladder/07-fillets/005-variable-r5-to-r1 | a variable round on the top front edge, r5 at x=0 to r1 at x=60 | analytic | pass | 0.018 | – | status was unsupported |
| ladder/07-fillets/007-variable-r5-to-1e-3 | a variable round on the top front edge, r5 down to 1e-3 mm | analytic | pass | 0.018 | – | status was unsupported |
| ladder/07-fillets/015-corner-g2-patch | three r5 rounds at a corner with the g2 corner patch | invariants | not supported yet: step 2 (solid.fillet): invalid input: not supported yet: a fillet with G2 corner patches with the SMLib kernel | 0.005 | – | |
| ladder/07-fillets/008-constant-r1e-3 | a constant 1e-3 mm round on the top front edge | analytic | pass | 0.012 | – | status was unsupported |
| ladder/07-fillets/004-convex-and-concave-r5 | an L block: r5 on its inner (concave) vertical edge and on an outer (convex) one | analytic | pass | 0.025 | – | status was unsupported |
| ladder/07-fillets/001-single-edge-r5 | an r5 round on the stock's top front edge | analytic | pass | 0.012 | – | status was unsupported |
| ladder/07-fillets/012-variable-into-rounded-corner | a vertical r5 round, then a variable round r1 -> r5 along the top back edge into it | invariants | **FAIL**: step 3 (solid.fillet): SMLib variable fillet: operation: SMLib failed (status 1001) | 0.020 | – | status was unsupported |
| ladder/07-fillets/014-curved-edge-r2 | an r2 round on the top edge of a cylinder r10 h20 | analytic | pass | 0.113 | – | status was unsupported |
| ladder/07-fillets/011-chain-ending-at-corner | r5 rounds on two top edges meeting at a corner whose vertical edge stays sharp | invariants | pass | 0.017 | – | status was unsupported |
| ladder/07-fillets/002-four-vertical-edges-r5 | r5 rounds on the four vertical edges | analytic | pass | 0.028 | – | status was unsupported |
| ladder/07-fillets/009-corner-three-equal-r5 | r5 rounds on the three edges meeting at the corner (60,40,20): a sphere corner | analytic | pass | 0.025 | – | status was unsupported |
| ladder/07-fillets/010-corner-unequal-r7-r3 | an r7 vertical round at a corner, then r3 along a top edge, which runs on round the r7 arc to the other top edge | invariants | pass | 0.042 | – | status was unsupported |
| ladder/07-fillets/003-tangent-chain-r3 | an r3 round all round the top of the box with r5 vertical rounds: a tangent chain of lines and arcs | analytic | pass | 0.090 | – | status was unsupported |
| ladder/07-fillets/016-corner-three-sequential-r5-r3-r7 | rounds r5 and r3 on the two top edges at a corner, then r7 on the vertical edge under them | invariants | **FAIL**: step 4 (solid.fillet): SMLib fillet: operation: SMLib rejected the input (SM_ERR_INVALID_INPUT) | 0.051 | – | status was unsupported |
| ladder/07-fillets/017-part-rounds | the running part: r5 on the front vertical edges, r3 on the back wall's top front edge, r1 where the boss meets the top | analytic | **FAIL**: step 21 (solid.fillet): SMLib fillet: operation: SMLib rejected the input (SM_ERR_INVALID_INPUT) | 0.986 | – | status was unsupported |
| ladder/07-fillets/015-corner-g2-patch | three r5 rounds at a corner with the g2 corner patch | invariants | not supported yet: step 2 (solid.fillet): invalid input: not supported yet: a fillet with G2 corner patches with the SMLib kernel | 0.003 | 0.003 | |
| ladder/07-fillets/001-single-edge-r5 | an r5 round on the stock's top front edge | analytic | pass | 0.007 | 0.007 | |
| ladder/07-fillets/006-variable-r5-to-zero | a variable round on the top front edge, r5 at x=0 down to 0 at the x=60 vertex | analytic | pass | 0.009 | 0.009 | |
| ladder/07-fillets/011-chain-ending-at-corner | r5 rounds on two top edges meeting at a corner whose vertical edge stays sharp | invariants | pass | 0.010 | 0.010 | |
| ladder/07-fillets/005-variable-r5-to-r1 | a variable round on the top front edge, r5 at x=0 to r1 at x=60 | analytic | pass | 0.011 | 0.011 | |
| ladder/07-fillets/009-corner-three-equal-r5 | r5 rounds on the three edges meeting at the corner (60,40,20): a sphere corner | analytic | pass | 0.012 | 0.012 | |
| ladder/07-fillets/008-constant-r1e-3 | a constant 1e-3 mm round on the top front edge | analytic | pass | 0.012 | 0.012 | |
| ladder/07-fillets/002-four-vertical-edges-r5 | r5 rounds on the four vertical edges | analytic | pass | 0.014 | 0.014 | |
| ladder/07-fillets/007-variable-r5-to-1e-3 | a variable round on the top front edge, r5 down to 1e-3 mm | analytic | pass | 0.018 | 0.018 | |
| ladder/07-fillets/010-corner-unequal-r7-r3 | an r7 vertical round at a corner, then r3 along a top edge, which runs on round the r7 arc to the other top edge | invariants | pass | 0.019 | 0.019 | |
| ladder/07-fillets/004-convex-and-concave-r5 | an L block: r5 on its inner (concave) vertical edge and on an outer (convex) one | analytic | pass | 0.020 | 0.020 | |
| ladder/07-fillets/016-corner-three-sequential-r5-r3-r7 | rounds r5 and r3 on the two top edges at a corner, then r7 on the vertical edge under them | invariants | **FAIL**: step 4 (solid.fillet): SMLib fillet: operation: SMLib failed (status 1001) | 0.026 | 0.026 | |
| ladder/07-fillets/012-variable-into-rounded-corner | a vertical r5 round, then a variable round r1 -> r5 along the top back edge into it | invariants | pass | 0.030 | 0.030 | |
| ladder/07-fillets/014-curved-edge-r2 | an r2 round on the top edge of a cylinder r10 h20 | analytic | pass | 0.040 | 0.040 | |
| ladder/07-fillets/003-tangent-chain-r3 | an r3 round all round the top of the box with r5 vertical rounds: a tangent chain of lines and arcs | analytic | pass | 0.044 | 0.044 | |
| ladder/07-fillets/017-part-rounds | the running part: r5 on the front vertical edges, r3 on the back wall's top front edge, r1 where the boss meets the top | analytic | pass | 0.389 | 0.389 | |
| ladder/07-fillets/013-corner-setback | three r5 rounds at a corner with setbacks of 8 mm along each edge | invariants | not supported yet: solid.fillet has no corner setback distances | – | – | |
| ladder/08-chamfers/002-two-distances-5-3 | a 5 x 3 chamfer on the top front edge | analytic | pass | 0.009 | – | status was unsupported |
| ladder/08-chamfers/001-equal-5 | a 5 mm chamfer on the top front edge | analytic | pass | 0.010 | – | status was unsupported |
| ladder/08-chamfers/003-distance-angle-5-30 | a chamfer 5 mm at 30 deg on the top front edge | analytic | pass | 0.010 | – | status was unsupported |
| ladder/08-chamfers/005-corner-two-mitred-3 | 3 mm chamfers on two top edges meeting at a corner (mitred) | analytic | pass | 0.014 | – | status was unsupported |
| ladder/08-chamfers/004-corner-three-equal-3 | 3 mm chamfers on the three edges meeting at a corner | analytic | pass | 0.015 | – | status was unsupported |
| ladder/08-chamfers/007-chamfer-then-fillets | a 3 mm chamfer on the top front edge, then r2 rounds on the front vertical edges that meet it | invariants | pass | 0.029 | – | status was unsupported |
| ladder/08-chamfers/006-curved-edge-2 | a 2 mm chamfer on the top edge of a cylinder r10 h20 | analytic | pass | 0.117 | – | status was unsupported |
| ladder/08-chamfers/008-part-chamfers | the running part: 1 mm on the boss top edge, 2 mm on the back wall's top back edge | analytic | **FAIL**: step 21 (solid.fillet): SMLib fillet: operation: SMLib rejected the input (SM_ERR_INVALID_INPUT) | 0.999 | – | status was unsupported |
| ladder/09-shells-and-offsets/007-offset-top-face-5 | the stock's top face offset 5 mm | analytic | pass | 0.016 | – | status was unsupported |
| ladder/09-shells-and-offsets/003-tube-two-open-faces | the stock shelled 2 mm, open top and bottom | analytic | pass | 0.017 | – | status was unsupported |
| ladder/09-shells-and-offsets/001-box-open-top-t2 | the stock shelled 2 mm, open at the top | analytic | pass | 0.021 | – | status was unsupported |
| ladder/09-shells-and-offsets/004-thin-wall-0.2 | the stock shelled 0.2 mm, open at the top | analytic | pass | 0.015 | – | status was unsupported |
| ladder/09-shells-and-offsets/009-shell-outside-t2 | the stock shelled 2 mm outward, open at the top | analytic | pass | 0.044 | – | status was unsupported |
| ladder/09-shells-and-offsets/008-offset-cylinder-wall-2 | a cylinder r10 h20 with its side face offset 2 mm | analytic | pass | 0.155 | – | status was unsupported |
| ladder/09-shells-and-offsets/002-cylinder-open-top-t1 | a cylinder r10 h30 shelled 1 mm, open at the top | analytic | pass | 0.160 | – | status was unsupported |
| ladder/09-shells-and-offsets/006-shell-rounds-r1-thinner-than-t2 | the box with r1 vertical rounds shelled 2 mm: the inner corners close sharp | analytic | pass | 0.063 | – | status was unsupported |
| ladder/09-shells-and-offsets/005-shell-rounds-r5-t2 | the box with r5 vertical rounds shelled 2 mm open at the top: the inner corners r3 | analytic | pass | 0.164 | – | status was unsupported |
| ladder/09-shells-and-offsets/010-shell-under-rounded-top | the stock with r3 rounds on its four top edges, shelled 2 mm open at the bottom | invariants | **FAIL**: step 3 (solid.shell): SMLib shell: SMLib's check refuses the result: 1 failed tests: SmBSplineCurve::Test #13 Bad CurveCusp: 2D BSplineCurve Warning: Extremely | 0.179 | – | status was unsupported |
| ladder/09-shells-and-offsets/011-part-shell | the running part shelled 1.5 mm open at the bottom | invariants | **FAIL**: step 21 (solid.fillet): SMLib fillet: operation: SMLib rejected the input (SM_ERR_INVALID_INPUT) | 0.998 | – | status was unsupported |
| ladder/10-patterns-and-mirrors/007-pattern-bodies | a pin r3 h10 patterned 4 times at 10 mm as bodies | analytic | pass | 0.037 | – | status was unsupported |
| ladder/10-patterns-and-mirrors/005-mirror-feature | a d10 hole in the stock mirrored about x=30 as a feature | analytic | pass | 0.126 | – | status was unsupported |
| ladder/10-patterns-and-mirrors/004-mirror-body-joined | a 30x40x20 half with a d10 hole mirrored about x=30 and joined: the faces at x=30 coincide | analytic | pass | 0.138 | – | status was unsupported |
| ladder/10-patterns-and-mirrors/001-rect-pattern-holes | a d5 hole patterned 3 x 2 at 20 mm in a 60x40x10 plate | analytic | pass | 0.572 | – | status was unsupported |
| ladder/10-patterns-and-mirrors/003-overlapping-pattern-leaves-core | six r5 cuts patterned round a circle r6 in a disk r20: they overlap and cut a core free | analytic | pass | 0.836 | – | status was unsupported |
| ladder/10-patterns-and-mirrors/002-circular-pattern-holes | a d6 hole patterned 8 times round a disk r30 h10 | analytic | pass | 1.322 | – | status was unsupported |
| ladder/10-patterns-and-mirrors/006-circular-pattern-counterbores | a counterbored hole (d5, d9 x 3) patterned 6 times round a disk r30 h10 | analytic | pass | 2.310 | – | status was unsupported |
| ladder/10-patterns-and-mirrors/008-part-vents | the running part with a d3 vent hole in its top patterned 4 times at 5 mm | invariants | **FAIL**: step 21 (solid.fillet): SMLib fillet: operation: SMLib rejected the input (SM_ERR_INVALID_INPUT) | 0.978 | – | status was unsupported |
| ladder/11-cumulative-parts/002-flange | a revolved flange and hub with a bore, six bolt holes, a hub chamfer and a hub-root round | analytic | **FAIL**: step 7 (solid.chamfer): SMLib chamfer: operation: SMLib rejected the input (SM_ERR_INVALID_INPUT) | 1.244 | – | status was unsupported |
| ladder/11-cumulative-parts/001-bracket | an L bracket: concave r5 round, 5 mm outer chamfer, a hole in each leg | analytic | pass | 0.153 | – | status was unsupported |
| ladder/11-cumulative-parts/003-threaded-flange | the flange with a modelled M30 thread on its hub, between the round and the chamfer, and M8 tapped holes in the disk | invariants | **FAIL**: step 7 (solid.chamfer): SMLib chamfer: operation: SMLib rejected the input (SM_ERR_INVALID_INPUT) | 1.171 | – | status was unsupported |
| ladder/11-cumulative-parts/004-housing | the running part with every tier: back wall, boss, slot, spline window, tapped holes, rounds, chamfers, shell, vents, and a modelled M16 thread on the boss | invariants | **FAIL**: step 21 (solid.fillet): SMLib fillet: operation: SMLib rejected the input (SM_ERR_INVALID_INPUT) | 0.913 | – | status was unsupported |
| ladder/08-chamfers/003-distance-angle-5-30 | a chamfer 5 mm at 30 deg on the top front edge | analytic | pass | 0.006 | 0.006 | |
| ladder/08-chamfers/002-two-distances-5-3 | a 5 x 3 chamfer on the top front edge | analytic | pass | 0.007 | 0.007 | |
| ladder/08-chamfers/005-corner-two-mitred-3 | 3 mm chamfers on two top edges meeting at a corner (mitred) | analytic | pass | 0.008 | 0.008 | |
| ladder/08-chamfers/004-corner-three-equal-3 | 3 mm chamfers on the three edges meeting at a corner | analytic | pass | 0.010 | 0.010 | |
| ladder/08-chamfers/001-equal-5 | a 5 mm chamfer on the top front edge | analytic | pass | 0.012 | 0.012 | |
| ladder/08-chamfers/007-chamfer-then-fillets | a 3 mm chamfer on the top front edge, then r2 rounds on the front vertical edges that meet it | invariants | pass | 0.027 | 0.027 | |
| ladder/08-chamfers/006-curved-edge-2 | a 2 mm chamfer on the top edge of a cylinder r10 h20 | analytic | pass | 0.040 | 0.040 | |
| ladder/08-chamfers/008-part-chamfers | the running part: 1 mm on the boss top edge, 2 mm on the back wall's top back edge | analytic | pass | 0.519 | 0.519 | |
| ladder/09-shells-and-offsets/012-closed-shell-sealed-void | the stock shelled 2 mm with no face open: a closed body with a sealed void | analytic | pass | 0.009 | 0.009 | |
| ladder/09-shells-and-offsets/001-box-open-top-t2 | the stock shelled 2 mm, open at the top | analytic | pass | 0.009 | 0.009 | |
| ladder/09-shells-and-offsets/003-tube-two-open-faces | the stock shelled 2 mm, open top and bottom | analytic | pass | 0.009 | 0.009 | |
| ladder/09-shells-and-offsets/004-thin-wall-0.2 | the stock shelled 0.2 mm, open at the top | analytic | pass | 0.017 | 0.017 | |
| ladder/09-shells-and-offsets/007-offset-top-face-5 | the stock's top face offset 5 mm | analytic | pass | 0.017 | 0.017 | |
| ladder/09-shells-and-offsets/009-shell-outside-t2 | the stock shelled 2 mm outward, open at the top | analytic | pass | 0.031 | 0.031 | |
| ladder/09-shells-and-offsets/008-offset-cylinder-wall-2 | a cylinder r10 h20 with its side face offset 2 mm | analytic | pass | 0.040 | 0.040 | |
| ladder/09-shells-and-offsets/006-shell-rounds-r1-thinner-than-t2 | the box with r1 vertical rounds shelled 2 mm: the inner corners close sharp | analytic | pass | 0.042 | 0.042 | |
| ladder/09-shells-and-offsets/002-cylinder-open-top-t1 | a cylinder r10 h30 shelled 1 mm, open at the top | analytic | pass | 0.054 | 0.054 | |
| ladder/09-shells-and-offsets/014-drafted-box-with-rounds-shelled | a 120x80x40 box drafted 5 degrees with 4 mm rounds on the sloping corners, shelled 2 mm open at the top: the inner rounds' edges must lie on their faces (#3573 reports the same design) | invariants | pass | 0.090 | 0.090 | |
| ladder/09-shells-and-offsets/010-shell-under-rounded-top | the stock with r3 rounds on its four top edges, shelled 2 mm open at the bottom | invariants | pass | 0.090 | 0.090 | |
| ladder/09-shells-and-offsets/005-shell-rounds-r5-t2 | the box with r5 vertical rounds shelled 2 mm open at the top: the inner corners r3 | analytic | pass | 0.098 | 0.098 | |
| ladder/09-shells-and-offsets/013-dome-shelled-from-base | a dome r20 shelled 2 mm, open at its flat base: the rim is the circle r18 where the inner sphere meets the base plane | analytic | pass | 0.123 | 0.123 | |
| ladder/09-shells-and-offsets/015-shelled-dome-ring-joined-back | a dome (a quarter disc r20 revolved) shelled 2 mm from its flat base, then the base ring (r 18..20) face-extruded 10 mm back into the dome as a join: ~120 s, then 'boolean Union: no result' | analytic | pass | 0.692 | 0.692 | |
| ladder/09-shells-and-offsets/011-part-shell | the running part shelled 1.5 mm open at the bottom | invariants | pass | 0.868 | 0.868 | |
| ladder/10-patterns-and-mirrors/007-pattern-bodies | a pin r3 h10 patterned 4 times at 10 mm as bodies | analytic | pass | 0.017 | 0.017 | |
| ladder/10-patterns-and-mirrors/004-mirror-body-joined | a 30x40x20 half with a d10 hole mirrored about x=30 and joined: the faces at x=30 coincide | analytic | pass | 0.036 | 0.036 | |
| ladder/10-patterns-and-mirrors/005-mirror-feature | a d10 hole in the stock mirrored about x=30 as a feature | analytic | pass | 0.039 | 0.039 | |
| ladder/10-patterns-and-mirrors/001-rect-pattern-holes | a d5 hole patterned 3 x 2 at 20 mm in a 60x40x10 plate | analytic | pass | 0.155 | 0.155 | |
| ladder/10-patterns-and-mirrors/003-overlapping-pattern-leaves-core | six r5 cuts patterned round a circle r6 in a disk r20: they overlap and cut a core free | analytic | pass | 0.244 | 0.244 | |
| ladder/10-patterns-and-mirrors/002-circular-pattern-holes | a d6 hole patterned 8 times round a disk r30 h10 | analytic | pass | 0.353 | 0.353 | |
| ladder/10-patterns-and-mirrors/006-circular-pattern-counterbores | a counterbored hole (d5, d9 x 3) patterned 6 times round a disk r30 h10 | analytic | pass | 0.670 | 0.670 | |
| ladder/10-patterns-and-mirrors/008-part-vents | the running part with a d3 vent hole in its top patterned 4 times at 5 mm | invariants | pass | 1.469 | 1.469 | |
| ladder/11-cumulative-parts/001-bracket | an L bracket: concave r5 round, 5 mm outer chamfer, a hole in each leg | analytic | pass | 0.071 | 0.071 | |
| ladder/11-cumulative-parts/002-flange | a revolved flange and hub with a bore, six bolt holes, a hub chamfer and a hub-root round | analytic | pass | 0.503 | 0.503 | |
| ladder/11-cumulative-parts/003-threaded-flange | the flange with a modelled M30 thread on its hub, between the round and the chamfer, and M8 tapped holes in the disk | invariants | pass | 1.769 | 1.769 | |
| ladder/11-cumulative-parts/004-housing | the running part with every tier: back wall, boss, slot, spline window, tapped holes, rounds, chamfers, shell, vents, and a modelled M16 thread on the boss | invariants | pass | 2.096 | 2.096 | |
@@ -0,0 +1,9 @@
{
"sources": [],
"what": "two through holes r5 whose circles touch at one point (30, 20)",
"source": "analytic",
"method": "V = 60 40 20 - 2 pi 5^2 20; faces: 6 of the box + 2 bores (top and bottom each one loop round both holes, through their common vertex twice)",
"body_count": 1,
"volume_mm3": 44858.407346410204,
"faces": 8
}
@@ -0,0 +1,31 @@
{
"base": "../../01-primitives/001-box",
"commands": [
{
"command": "solid.cylinder",
"params": {
"base": [
25,
20,
-1
],
"radius": 5,
"height": 22,
"operation": "cut"
}
},
{
"command": "solid.cylinder",
"params": {
"base": [
35,
20,
-1
],
"radius": 5,
"height": 22,
"operation": "cut"
}
}
]
}
@@ -0,0 +1,10 @@
{
"sources": [
"tangency-labs/solidcraft#1279"
],
"what": "a corner piece (square column minus a quarter disc r1.5, 0.0003 off the axis) cut out of a part with a blind r1.6 hole on the same axis: the tool's r1.5 face sits 0.1 mm inside the hole wall; 'no result'",
"source": "analytic",
"method": "part 12x12x5.1 = 734.4 minus the hole pi*1.6^2*4.1 = 32.97 (hole z -4..0.1, part top z 0.1). The tool (z -3.9..3.2, the square 1.5x1.5 where r >= 1.5) overlaps solid only where r >= 1.6: area A1 = integral_0^1.5 (1.5 - min(1.5, sqrt(2.56-x^2))) dx = 0.31409, over the 4.0 mm of shared z: 1.25638 mm3 (the 0.0003 offset moves this by about 3e-3). V = 734.4 - 32.9662 - 1.2564 = 700.1695. Reduced from the report's STEP geometry (no pocket or rotation); the answer is for this geometry",
"body_count": 1,
"volume_mm3": 700.1694662079215
}
@@ -0,0 +1,72 @@
{
"commands": [
{
"command": "solid.box",
"params": {
"corner": [
-6,
-6,
-5
],
"length": 12,
"width": 12,
"height": 5.1,
"body_name": "Part"
}
},
{
"command": "solid.cylinder",
"params": {
"base": [
0,
0,
-4
],
"radius": 1.6,
"height": 4.1,
"operation": "cut"
}
},
{
"command": "solid.box",
"params": {
"corner": [
0,
0,
-3.9
],
"length": 1.5,
"width": 1.5,
"height": 7.1,
"operation": "new",
"body_name": "Tool"
}
},
{
"command": "solid.cylinder",
"params": {
"base": [
0.0003,
0,
-4
],
"radius": 1.5,
"height": 7.5,
"operation": "cut",
"targets": [
"Tool"
]
}
},
{
"command": "solid.combine",
"params": {
"target": "Part",
"tools": [
"Tool"
],
"operation": "cut"
}
}
]
}
@@ -0,0 +1,10 @@
{
"sources": [
"tangency-labs/solidcraft#2928"
],
"what": "two half-annulus lips (r 4..5, from z=2 to 20) joined onto a stadium-ring base (z 0..2, r 3..5 arcs, centres 20 apart) with their cylinder walls 0.0001 mm off the base's: the lip cap touches the base top, leaving a 0.0001 mm crescent overhang. Layout is a hand-built variant of the PR's public reproduction",
"source": "analytic",
"method": "base area = 2 straight rails (2 x 20) x 2 + full annulus pi(25-9) = 80 + 16 pi, times 2 mm = 160 + 32 pi. Each lip is a half annulus pi(25-16)/2 = 4.5 pi, two lips x 18 mm = 162 pi. The lips sit above z=2, the base is below, so nothing overlaps (the crescent overhang is above z=2 too): V = 160 + 194 pi = 769.469. One body",
"body_count": 1,
"volume_mm3": 769.4689747964198
}
@@ -0,0 +1,285 @@
{
"commands": [
{
"command": "sketch.create",
"params": {
"plane": "XY",
"name": "Base"
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
5,
-10
],
[
5,
10
]
]
}
},
{
"command": "sketch.arc.center_point",
"params": {
"center": [
0,
10
],
"start": [
5,
10
],
"sweep": 180
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-5,
10
],
[
-5,
-10
]
]
}
},
{
"command": "sketch.arc.center_point",
"params": {
"center": [
0,
-10
],
"start": [
-5,
-10
],
"sweep": 180
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
3,
-10
],
[
3,
10
]
]
}
},
{
"command": "sketch.arc.center_point",
"params": {
"center": [
0,
10
],
"start": [
3,
10
],
"sweep": 180
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-3,
10
],
[
-3,
-10
]
]
}
},
{
"command": "sketch.arc.center_point",
"params": {
"center": [
0,
-10
],
"start": [
-3,
-10
],
"sweep": 180
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"sketch": "Base",
"profiles": [
{
"point": [
4,
0
]
}
],
"distance": 2,
"operation": "new",
"body_name": "Base"
}
},
{
"command": "sketch.create",
"params": {
"plane": "XY",
"offset": 2,
"name": "Lips"
}
},
{
"command": "sketch.arc.center_point",
"params": {
"center": [
0.0001,
10
],
"start": [
5.0001,
10
],
"sweep": 180
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-4.9999,
10
],
[
-3.9999,
10
]
]
}
},
{
"command": "sketch.arc.center_point",
"params": {
"center": [
0.0001,
10
],
"start": [
-3.9999,
10
],
"sweep": -180
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
4.0001,
10
],
[
5.0001,
10
]
]
}
},
{
"command": "sketch.arc.center_point",
"params": {
"center": [
-0.0001,
-10
],
"start": [
-5.0001,
-10
],
"sweep": 180
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
4.9999,
-10
],
[
3.9999,
-10
]
]
}
},
{
"command": "sketch.arc.center_point",
"params": {
"center": [
-0.0001,
-10
],
"start": [
3.9999,
-10
],
"sweep": -180
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-4.0001,
-10
],
[
-5.0001,
-10
]
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"sketch": "Lips",
"distance": 18,
"operation": "join",
"profiles": "all"
}
}
]
}
@@ -0,0 +1,12 @@
{
"sources": [
"tangency-labs/solidcraft#726",
"tangency-labs/solidcraft#494",
"tangency-labs/solidcraft#2114"
],
"what": "the flange top annulus of a freshly revolved hub (z = 6, r 18..30) picked by a point and extruded 5 mm (the pick found a third of the face: \"the selected planar face no longer exists\")",
"source": "analytic",
"method": "hub = revolve of (8,0) (30,0) (30,6) (18,6) (18,22) (8,22) about Z: V = pi [(30^2 - 8^2) 6 + (18^2 - 8^2) 16] = 28826.6. Extruding the whole annulus z = 6, r 18..30 outward (upward) 5 mm adds pi (30^2 - 18^2) 5 = 9047.8 (the new ring sits on the flange and touches the hub wall r = 18).",
"body_count": 1,
"volume_mm3": 37875.04103167855
}
@@ -0,0 +1,85 @@
{
"commands": [
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0.0,
0.0,
0.0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
0,
1
]
},
"name": "P"
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
8,
0
],
[
30,
0
],
[
30,
6
],
[
18,
6
],
[
18,
22
],
[
8,
22
]
],
"infer": false,
"closed": true
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.revolve",
"params": {
"axis": "Z",
"angle": "360 deg",
"operation": "new",
"body_name": "Hub"
}
},
{
"command": "solid.extrude",
"params": {
"face": [
12,
20.784609690826528,
6
],
"distance": 5,
"operation": "join"
}
}
]
}
@@ -0,0 +1,12 @@
{
"sources": [
"tangency-labs/solidcraft#5197",
"tangency-labs/solidcraft#3396"
],
"what": "a join of flush layers: a disc r37 (z -1.2..0) carrying 15 of the 19 regions of a sketch of 18 chords (z -3.6..-1.2; four bands left out), on an annulus r35..37 (z -5.6..-3.6) joined to a disc of all the chord regions (z -8..-5.6): SMLib's result came back with 'loop encloses no (u, v) area' though both operands are valid",
"source": "analytic",
"method": "the layers only meet face to face, so V is their sum: Body1 = pi 37^2 1.2 + (pi 37^2 - the four bands y -29..-24, -13..-8, 8..11, 24..27 of the disc, Int 2 sqrt(37^2 - y^2) dy) 2.4; Body2 = pi (37^2-35^2) 2; Body3 = pi 37^2 2.4. The bands run out to the rim, so the space inside r35 under Body1 opens to the outside: one shell (the reporter's 52-command script, generic dimensions)",
"body_count": 1,
"shells": 1,
"volume_mm3": 24340.9358
}
@@ -0,0 +1,792 @@
{
"commands": [
{
"command": "sketch.create",
"params": {
"plane": "XY",
"name": "S1"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 37
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-18.57417562100671,
-32
],
[
18.57417562100671,
-32
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-22.978250586152114,
-29
],
[
22.978250586152114,
-29
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-28.160255680657446,
-24
],
[
28.160255680657446,
-24
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-30.463092423455635,
-21
],
[
30.463092423455635,
-21
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-33.36165463522455,
-16
],
[
33.36165463522455,
-16
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-34.64101615137755,
-13
],
[
34.64101615137755,
-13
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-36.124783736376884,
-8
],
[
36.124783736376884,
-8
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-36.66060555964672,
-5
],
[
36.66060555964672,
-5
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-37.0,
0
],
[
37.0,
0
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-36.87817782917155,
3
],
[
36.87817782917155,
3
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-36.124783736376884,
8
],
[
36.124783736376884,
8
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-35.32704346531139,
11
],
[
35.32704346531139,
11
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-33.36165463522455,
16
],
[
33.36165463522455,
16
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-31.74901573277509,
19
],
[
31.74901573277509,
19
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-28.160255680657446,
24
],
[
28.160255680657446,
24
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-25.298221281347036,
27
],
[
25.298221281347036,
27
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-18.57417562100671,
32
],
[
18.57417562100671,
32
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-12.0,
35
],
[
12.0,
35
]
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": "XY",
"name": "S3"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 37
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-18.57417562100671,
-32
],
[
18.57417562100671,
-32
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-22.978250586152114,
-29
],
[
22.978250586152114,
-29
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-28.160255680657446,
-24
],
[
28.160255680657446,
-24
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-30.463092423455635,
-21
],
[
30.463092423455635,
-21
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-33.36165463522455,
-16
],
[
33.36165463522455,
-16
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-34.64101615137755,
-13
],
[
34.64101615137755,
-13
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-36.124783736376884,
-8
],
[
36.124783736376884,
-8
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-36.66060555964672,
-5
],
[
36.66060555964672,
-5
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-37.0,
0
],
[
37.0,
0
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-36.87817782917155,
3
],
[
36.87817782917155,
3
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-36.124783736376884,
8
],
[
36.124783736376884,
8
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-35.32704346531139,
11
],
[
35.32704346531139,
11
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-33.36165463522455,
16
],
[
33.36165463522455,
16
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-31.74901573277509,
19
],
[
31.74901573277509,
19
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-28.160255680657446,
24
],
[
28.160255680657446,
24
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-25.298221281347036,
27
],
[
25.298221281347036,
27
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-18.57417562100671,
32
],
[
18.57417562100671,
32
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-12.0,
35
],
[
12.0,
35
]
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": "XY",
"name": "Rings"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 37
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 35
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"sketch": "Rings",
"profiles": "all",
"distance": 1.2,
"direction": "negative",
"body_name": "Body1"
}
},
{
"command": "solid.extrude",
"params": {
"sketch": "S1",
"profiles": [
{
"point": [
0,
-34.5
]
},
{
"point": [
0,
-30.5
]
},
{
"point": [
0,
-22.5
]
},
{
"point": [
0,
-18.5
]
},
{
"point": [
0,
-14.5
]
},
{
"point": [
0,
-6.5
]
},
{
"point": [
0,
-2.5
]
},
{
"point": [
0,
1.5
]
},
{
"point": [
0,
5.5
]
},
{
"point": [
0,
13.5
]
},
{
"point": [
0,
17.5
]
},
{
"point": [
0,
21.5
]
},
{
"point": [
0,
29.5
]
},
{
"point": [
0,
33.5
]
},
{
"point": [
0,
36.0
]
}
],
"distance": 2.4,
"direction": "negative",
"from": [
0,
0,
-1.2
],
"operation": "join"
}
},
{
"command": "solid.extrude",
"params": {
"sketch": "Rings",
"profiles": [
{
"point": [
36,
0
]
}
],
"distance": 2,
"direction": "negative",
"from": [
36,
0,
-3.6
],
"operation": "new",
"body_name": "Body2"
}
},
{
"command": "solid.extrude",
"params": {
"sketch": "S3",
"profiles": "all",
"distance": 2.4,
"direction": "negative",
"from": [
36,
0,
-5.6
],
"operation": "new",
"body_name": "Body3"
}
},
{
"command": "solid.combine",
"params": {
"target": "Body2",
"tools": [
"Body3"
],
"operation": "join"
}
},
{
"command": "solid.combine",
"params": {
"target": "Body1",
"tools": [
"Body2"
],
"operation": "join"
}
}
]
}
@@ -0,0 +1,10 @@
{
"sources": [
"tangency-labs/solidcraft#4007"
],
"what": "the half disc of radius 14 on the far side of a diameter 14 mm from the axis (the full circle would touch the axis: a horn torus) revolved 270 degrees",
"source": "analytic",
"method": "Pappus: the half disc (the side away from the axis) has area pi 14^2 / 2 and centroid at 14 + 4 * 14 / (3 pi) from the axis: V = (270/360) 2 pi (14 + 4*14/(3 pi)) pi 14^2 / 2 = 28932.2 (the design measures 28930.7).",
"body_count": 1,
"volume_mm3": 28932.17609889229
}
@@ -0,0 +1,72 @@
{
"commands": [
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0.0,
0.0,
0.0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
0,
1
]
},
"name": "P"
}
},
{
"command": "sketch.arc.center_point",
"params": {
"center": [
14,
0
],
"start": [
14,
-14
],
"end": [
14,
14
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
14,
14
],
[
14,
-14
]
],
"infer": false
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.revolve",
"params": {
"axis": "Z",
"angle": "270 deg",
"operation": "new"
}
}
]
}
@@ -0,0 +1,11 @@
{
"sources": [
"tangency-labs/solidcraft#4623",
"tangency-labs/solidcraft#4180",
"tangency-labs/solidcraft#4881"
],
"what": "a join of two pleated skins (lofts between 24-pleat star outlines, less the same loft moved in 1.1 mm) that cross along a ring near their bottoms: truck panicked ('tolerance must be no less than 1e-6') or gave no result",
"source": "invariants",
"method": "the narrowing cone skin and the flaring lip skin cross at z = -0.3, so their union is one connected solid: one valid closed body, no panic. The reporter's own script (pleated_union.py, 24 pleats)",
"body_count": 1
}
@@ -0,0 +1,9 @@
{
"sources": [
"tangency-labs/solidcraft#4092"
],
"what": "the same without the top flange: the join fails with 'boolean Union: no result'",
"source": "invariants",
"method": "the pad (X -8..8, Y 18..25, Z 36..59) overlaps the body, ribs and ring, so the join is one connected solid; the join must succeed with one valid closed solid and no panic",
"body_count": 1
}
@@ -0,0 +1,508 @@
{
"commands": [
{
"command": "file.new",
"params": {
"name": "Native_loft_pad_union_repro"
}
},
{
"command": "document.units",
"params": {
"units": "mm"
}
},
{
"command": "solid.cylinder",
"params": {
"diameter": "36 mm",
"height": "21 mm",
"base": [
0,
0,
0
],
"operation": "new",
"name": "01_Neck_outer_D36_H21",
"body_name": "NATIVE_CAP_BODY"
}
},
{
"command": "sketch.create",
"params": {
"name": "02_Outer_transition_round",
"plane": "XY",
"offset": "21 mm"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"diameter": 36
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"name": "03_Outer_transition_ellipse",
"plane": "XY",
"offset": "38 mm"
}
},
{
"command": "sketch.ellipse",
"params": {
"center": [
0,
0
],
"major": [
30.0,
0
],
"minor_radius": 20.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.loft",
"params": {
"sections": [
{
"sketch": "02_Outer_transition_round"
},
{
"sketch": "03_Outer_transition_ellipse"
}
],
"operation": "join",
"targets": [
"NATIVE_CAP_BODY"
],
"name": "04_Outer_round_to_oval_transition"
}
},
{
"command": "sketch.create",
"params": {
"name": "05_Upper_chamber_60x40",
"plane": "XY",
"offset": "38 mm"
}
},
{
"command": "sketch.ellipse",
"params": {
"center": [
0,
0
],
"major": [
30.0,
0
],
"minor_radius": 20.0
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"sketch": "05_Upper_chamber_60x40",
"distance": 26,
"operation": "join",
"targets": [
"NATIVE_CAP_BODY"
],
"name": "06_Upper_chamber_blank"
}
},
{
"command": "sketch.create",
"params": {
"name": "Handle_outer_D24",
"plane": {
"origin": [
-5,
0,
0
],
"x_dir": [
0,
1,
0
],
"y_dir": [
0,
0,
1
]
}
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
30,
47
],
"diameter": 24
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"sketch": "Handle_outer_D24",
"distance": 10,
"operation": "join",
"targets": [
"NATIVE_CAP_BODY"
],
"name": "Handle_outer_D24_thickness10"
}
},
{
"command": "sketch.create",
"params": {
"name": "Handle_lower_rib_X-8",
"plane": {
"origin": [
-8,
0,
0
],
"x_dir": [
0,
1,
0
],
"y_dir": [
0,
0,
1
]
}
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
18.0,
37.5
],
"end": [
19.5,
36.0
],
"through": [
18.439339828220177,
36.43933982822018
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
19.5,
36.0
],
[
24.4516191451179,
36.0
]
]
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
24.4516191451179,
36.0
],
"end": [
25.20742568340403,
38.79566835134765
],
"through": [
25.89963546529897,
37.10853003117829
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
25.20742568340403,
38.79566835134765
],
[
20.25580653828613,
41.68411285266642
]
]
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
20.25580653828613,
41.68411285266642
],
"end": [
18.0,
40.38844450131877
],
"through": [
18.75290891031588,
41.68915773017231
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
18.0,
40.38844450131877
],
[
18.0,
37.5
]
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"sketch": "Handle_lower_rib_X-8",
"distance": 4,
"operation": "join",
"targets": [
"NATIVE_CAP_BODY"
],
"name": "Handle_lower_rib_X-8_R1p5_thickness4"
}
},
{
"command": "sketch.create",
"params": {
"name": "Handle_lower_rib_X4",
"plane": {
"origin": [
4,
0,
0
],
"x_dir": [
0,
1,
0
],
"y_dir": [
0,
0,
1
]
}
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
18.0,
37.5
],
"end": [
19.5,
36.0
],
"through": [
18.439339828220177,
36.43933982822018
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
19.5,
36.0
],
[
24.4516191451179,
36.0
]
]
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
24.4516191451179,
36.0
],
"end": [
25.20742568340403,
38.79566835134765
],
"through": [
25.89963546529897,
37.10853003117829
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
25.20742568340403,
38.79566835134765
],
[
20.25580653828613,
41.68411285266642
]
]
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
20.25580653828613,
41.68411285266642
],
"end": [
18.0,
40.38844450131877
],
"through": [
18.75290891031588,
41.68915773017231
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
18.0,
40.38844450131877
],
[
18.0,
37.5
]
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"sketch": "Handle_lower_rib_X4",
"distance": 4,
"operation": "join",
"targets": [
"NATIVE_CAP_BODY"
],
"name": "Handle_lower_rib_X4_R1p5_thickness4"
}
},
{
"command": "sketch.create",
"params": {
"name": "Handle_root_pad_R3",
"plane": {
"origin": [
0,
18,
0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
0,
1
]
}
}
},
{
"command": "sketch.rectangle.rounded",
"params": {
"p0": [
-8,
36
],
"p1": [
8,
59
],
"radius": 3
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"sketch": "Handle_root_pad_R3",
"distance": 7,
"direction": "negative",
"operation": "join",
"targets": [
"NATIVE_CAP_BODY"
],
"name": "Native_root_pad_R3"
}
}
]
}
@@ -0,0 +1,10 @@
{
"sources": [],
"what": "the stock shelled 2 mm with no face open: a closed body with a sealed void",
"source": "analytic",
"method": "void 56x36x16: V = 48000 - 32256; faces 6 outer + 6 inner; one body, an outer and an inner shell",
"body_count": 1,
"shells": 2,
"volume_mm3": 15744,
"faces": 12
}
@@ -0,0 +1,12 @@
{
"base": "../../01-primitives/001-box",
"commands": [
{
"command": "solid.shell",
"params": {
"faces": [],
"thickness": 2
}
}
]
}
@@ -0,0 +1,9 @@
{
"sources": [],
"what": "a dome r20 shelled 2 mm, open at its flat base: the rim is the circle r18 where the inner sphere meets the base plane",
"source": "analytic",
"method": "V = (2/3) pi (20^3 - 18^3); faces: outer sphere, inner sphere, base ring",
"body_count": 1,
"volume_mm3": 4540.648581988447,
"faces": 3
}
@@ -0,0 +1,98 @@
{
"commands": [
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0,
0,
0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
0,
1
]
}
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
0
],
[
20,
0
]
]
}
},
{
"command": "sketch.arc.center_point",
"params": {
"center": [
0,
0
],
"start": [
20,
0
],
"end": [
0,
20
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
20
],
[
0,
0
]
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.revolve",
"params": {
"axis": "Z",
"angle": "360 deg",
"operation": "new"
}
},
{
"command": "solid.shell",
"params": {
"faces": [
[
10,
0,
0
]
],
"thickness": 2
}
}
]
}
@@ -0,0 +1,10 @@
{
"sources": [
"tangency-labs/solidcraft#3576",
"tangency-labs/solidcraft#3573"
],
"what": "a 120x80x40 box drafted 5 degrees with 4 mm rounds on the sloping corners, shelled 2 mm open at the top: the inner rounds' edges must lie on their faces (#3573 reports the same design)",
"source": "invariants",
"method": "no closed-form volume (tilted rounds). Invariants: the shell succeeds, one closed body, and the record's geometry check holds (every edge of the four inner rounds lies on its faces; the old offset left them up to 0.02 mm off, which other STEP readers reject)",
"body_count": 1
}
@@ -0,0 +1,76 @@
{
"commands": [
{
"command": "sketch.create",
"params": {
"plane": "XY"
}
},
{
"command": "sketch.rectangle.center",
"params": {
"center": [
0,
0
],
"corner": [
60,
40
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"distance": 40,
"taper": "-5 deg",
"operation": "new"
}
},
{
"command": "solid.fillet",
"params": {
"edges": [
[
58.25022672948152,
38.25022672948152,
20
],
[
58.25022672948152,
-38.25022672948152,
20
],
[
-58.25022672948152,
38.25022672948152,
20
],
[
-58.25022672948152,
-38.25022672948152,
20
]
],
"radius": 4
}
},
{
"command": "solid.shell",
"params": {
"faces": [
[
0,
0,
40
]
],
"thickness": 2
}
}
]
}
@@ -0,0 +1,10 @@
{
"sources": [
"tangency-labs/solidcraft#4847"
],
"what": "a dome (a quarter disc r20 revolved) shelled 2 mm from its flat base, then the base ring (r 18..20) face-extruded 10 mm back into the dome as a join: ~120 s, then 'boolean Union: no result'",
"source": "analytic",
"method": "shell: (2/3) pi (20^3 - 18^3). The ring's prism r 18..20, z 0..10 lies inside the dome's wall where r^2 + z^2 <= 20^2 (r >= 18 keeps it outside the cavity) and pokes out elsewhere: it adds 760 pi - Int_18^20 2 pi r sqrt(400 - r^2) dr = 760 pi - (2 pi/3) 76^1.5",
"body_count": 1,
"volume_mm3": 5540.612
}
@@ -0,0 +1,113 @@
{
"commands": [
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0,
0,
0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
0,
1
]
},
"name": "Quarter"
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
0
],
[
20,
0
]
]
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
20,
0
],
"through": [
14.142136,
14.142136
],
"end": [
0,
20
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
20
],
[
0,
0
]
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.revolve",
"params": {
"sketch": "Quarter",
"axis": "y",
"body_name": "Dome"
}
},
{
"command": "solid.shell",
"params": {
"faces": [
[
0,
0,
0
]
],
"thickness": 2
}
},
{
"command": "solid.extrude",
"params": {
"face": [
19,
0,
0
],
"face_body": "Dome",
"distance": 10,
"direction": "negative",
"operation": "join"
}
}
]
}
File diff suppressed because it is too large Load Diff
+64 -52
View File
@@ -3,10 +3,10 @@
{
"cases": [
"ladder/01-primitives/001-box",
"ladder/01-primitives/002-cylinder",
"ladder/01-primitives/004-frustum",
"ladder/01-primitives/003-cone",
"ladder/01-primitives/005-sphere",
"ladder/01-primitives/003-cone",
"ladder/01-primitives/004-frustum",
"ladder/01-primitives/002-cylinder",
"ladder/01-primitives/006-torus"
],
"tier": "01-primitives",
@@ -15,40 +15,46 @@
{
"cases": [
"ladder/02-booleans/004-edge-on-edge-no-overlap",
"ladder/02-booleans/003-pocket-flush-with-top",
"ladder/02-booleans/015-knife-edge-wedge-cut",
"ladder/02-booleans/002-coplanar-overlap-join",
"ladder/02-booleans/019-notch-flush-with-end-face",
"ladder/02-booleans/016-v-groove-pinches-bottom-to-line",
"ladder/02-booleans/013-cut-across-cylinder-seam",
"ladder/02-booleans/015-knife-edge-wedge-cut",
"ladder/02-booleans/001-coincident-face-join",
"ladder/02-booleans/009-near-tangent-overlap-1e-3",
"ladder/02-booleans/014-cut-through-sphere-pole",
"ladder/02-booleans/020-part-back-wall",
"ladder/02-booleans/005-vertex-on-face-no-overlap",
"ladder/02-booleans/018-hole-tangent-to-side-face",
"ladder/02-booleans/010-near-tangent-overlap-1e-6",
"ladder/02-booleans/006-tangent-along-line-no-overlap",
"ladder/02-booleans/003-pocket-flush-with-top",
"ladder/02-booleans/019-notch-flush-with-end-face",
"ladder/02-booleans/002-coplanar-overlap-join",
"ladder/02-booleans/008-near-tangent-gap-1e-6",
"ladder/02-booleans/010-near-tangent-overlap-1e-6",
"ladder/02-booleans/007-near-tangent-gap-1e-3",
"ladder/02-booleans/017-cylinder-tangent-top-and-bottom",
"ladder/02-booleans/006-tangent-along-line-no-overlap",
"ladder/02-booleans/018-hole-tangent-to-side-face",
"ladder/02-booleans/009-near-tangent-overlap-1e-3",
"ladder/02-booleans/005-vertex-on-face-no-overlap",
"ladder/02-booleans/011-tangent-along-circle-through-hole",
"ladder/02-booleans/014-cut-through-sphere-pole",
"ladder/02-booleans/012-tangent-along-circle-bowl"
"ladder/02-booleans/013-cut-across-cylinder-seam",
"ladder/02-booleans/012-tangent-along-circle-bowl",
"ladder/02-booleans/022-cylinder-grazing-a-hole-edge",
"ladder/02-booleans/021-holes-touching-at-a-point",
"ladder/02-booleans/023-lips-1e-4-off-the-walls-joined",
"ladder/02-booleans/024-wall-halves-merged-into-a-flange",
"ladder/02-booleans/025-flush-chord-layers-joined"
],
"tier": "02-booleans",
"what": "booleans in the degeneracy classes, and cuts that end in a single line"
},
{
"cases": [
"ladder/03-analytic-profiles/001-extrude-rect-with-arc-end",
"ladder/03-analytic-profiles/003-extrude-tapered-circle",
"ladder/03-analytic-profiles/007-revolve-180-touching-axis",
"ladder/03-analytic-profiles/006-revolve-partial-90",
"ladder/03-analytic-profiles/008-extrude-slot",
"ladder/03-analytic-profiles/001-extrude-rect-with-arc-end",
"ladder/03-analytic-profiles/007-revolve-180-touching-axis",
"ladder/03-analytic-profiles/002-extrude-annulus",
"ladder/03-analytic-profiles/004-revolve-full-off-axis",
"ladder/03-analytic-profiles/006-revolve-partial-90",
"ladder/03-analytic-profiles/003-extrude-tapered-circle",
"ladder/03-analytic-profiles/009-part-boss-and-slot",
"ladder/03-analytic-profiles/005-revolve-touching-axis-hemisphere",
"ladder/03-analytic-profiles/009-part-boss-and-slot"
"ladder/03-analytic-profiles/010-revolve-horn-torus-270"
],
"tier": "03-analytic-profiles",
"what": "extrudes and revolves of line-and-arc profiles"
@@ -56,32 +62,34 @@
{
"cases": [
"ladder/04-spline-profiles/001-extrude-bezier-arch",
"ladder/04-spline-profiles/008-loft-square-to-circle",
"ladder/04-spline-profiles/006-loft-circle-frustum",
"ladder/04-spline-profiles/007-loft-three-circles",
"ladder/04-spline-profiles/005-loft-square-frustum",
"ladder/04-spline-profiles/008-loft-square-to-circle",
"ladder/04-spline-profiles/009-extrude-periodic-fit-spline",
"ladder/04-spline-profiles/006-loft-circle-frustum",
"ladder/04-spline-profiles/004-sweep-square-along-bezier",
"ladder/04-spline-profiles/002-revolve-bezier-profile",
"ladder/04-spline-profiles/007-loft-three-circles",
"ladder/04-spline-profiles/003-pipe-along-bezier",
"ladder/04-spline-profiles/010-part-bezier-window"
"ladder/04-spline-profiles/002-revolve-bezier-profile",
"ladder/04-spline-profiles/010-part-bezier-window",
"ladder/04-spline-profiles/012-loft-ribs-joined-to-a-rounded-pad",
"ladder/04-spline-profiles/011-crossing-pleated-loft-skins-joined"
],
"tier": "04-spline-profiles",
"what": "spline profiles, sweeps and lofts"
},
{
"cases": [
"ladder/05-holes-and-taps/010-hole-tangent-to-end-face",
"ladder/05-holes-and-taps/002-simple-blind-flat",
"ladder/05-holes-and-taps/009-hole-0.5-from-edge",
"ladder/05-holes-and-taps/001-simple-through",
"ladder/05-holes-and-taps/006-tapped-m6-through",
"ladder/05-holes-and-taps/004-counterbore",
"ladder/05-holes-and-taps/007-tapped-m8-blind",
"ladder/05-holes-and-taps/009-hole-0.5-from-edge",
"ladder/05-holes-and-taps/010-hole-tangent-to-end-face",
"ladder/05-holes-and-taps/003-drilled-blind-118",
"ladder/05-holes-and-taps/007-tapped-m8-blind",
"ladder/05-holes-and-taps/002-simple-blind-flat",
"ladder/05-holes-and-taps/001-simple-through",
"ladder/05-holes-and-taps/004-counterbore",
"ladder/05-holes-and-taps/005-countersink",
"ladder/05-holes-and-taps/008-tapped-m5-into-curved-face",
"ladder/05-holes-and-taps/011-crossing-holes-steinmetz",
"ladder/05-holes-and-taps/008-tapped-m5-into-curved-face",
"ladder/05-holes-and-taps/012-crossing-tapped-holes-offset",
"ladder/05-holes-and-taps/013-part-holes"
],
@@ -91,13 +99,13 @@
{
"cases": [
"ladder/06-threads/003-external-m10-partial-length",
"ladder/06-threads/010-part-threaded-boss",
"ladder/06-threads/005-internal-m10-through",
"ladder/06-threads/004-external-m10-to-shoulder",
"ladder/06-threads/007-external-m10-at-filleted-shoulder",
"ladder/06-threads/001-external-m10-full",
"ladder/06-threads/006-external-m10-into-chamfer",
"ladder/06-threads/002-external-m10x1-fine",
"ladder/06-threads/010-part-threaded-boss",
"ladder/06-threads/007-external-m10-at-filleted-shoulder",
"ladder/06-threads/008-multi-start-thread",
"ladder/06-threads/009-thread-runout-length"
],
@@ -106,21 +114,21 @@
},
{
"cases": [
"ladder/07-fillets/006-variable-r5-to-zero",
"ladder/07-fillets/005-variable-r5-to-r1",
"ladder/07-fillets/007-variable-r5-to-1e-3",
"ladder/07-fillets/015-corner-g2-patch",
"ladder/07-fillets/008-constant-r1e-3",
"ladder/07-fillets/004-convex-and-concave-r5",
"ladder/07-fillets/001-single-edge-r5",
"ladder/07-fillets/006-variable-r5-to-zero",
"ladder/07-fillets/011-chain-ending-at-corner",
"ladder/07-fillets/005-variable-r5-to-r1",
"ladder/07-fillets/009-corner-three-equal-r5",
"ladder/07-fillets/008-constant-r1e-3",
"ladder/07-fillets/002-four-vertical-edges-r5",
"ladder/07-fillets/007-variable-r5-to-1e-3",
"ladder/07-fillets/010-corner-unequal-r7-r3",
"ladder/07-fillets/004-convex-and-concave-r5",
"ladder/07-fillets/016-corner-three-sequential-r5-r3-r7",
"ladder/07-fillets/012-variable-into-rounded-corner",
"ladder/07-fillets/014-curved-edge-r2",
"ladder/07-fillets/011-chain-ending-at-corner",
"ladder/07-fillets/002-four-vertical-edges-r5",
"ladder/07-fillets/009-corner-three-equal-r5",
"ladder/07-fillets/010-corner-unequal-r7-r3",
"ladder/07-fillets/003-tangent-chain-r3",
"ladder/07-fillets/016-corner-three-sequential-r5-r3-r7",
"ladder/07-fillets/017-part-rounds",
"ladder/07-fillets/013-corner-setback"
],
@@ -129,11 +137,11 @@
},
{
"cases": [
"ladder/08-chamfers/002-two-distances-5-3",
"ladder/08-chamfers/001-equal-5",
"ladder/08-chamfers/003-distance-angle-5-30",
"ladder/08-chamfers/002-two-distances-5-3",
"ladder/08-chamfers/005-corner-two-mitred-3",
"ladder/08-chamfers/004-corner-three-equal-3",
"ladder/08-chamfers/001-equal-5",
"ladder/08-chamfers/007-chamfer-then-fillets",
"ladder/08-chamfers/006-curved-edge-2",
"ladder/08-chamfers/008-part-chamfers"
@@ -143,16 +151,20 @@
},
{
"cases": [
"ladder/09-shells-and-offsets/007-offset-top-face-5",
"ladder/09-shells-and-offsets/003-tube-two-open-faces",
"ladder/09-shells-and-offsets/012-closed-shell-sealed-void",
"ladder/09-shells-and-offsets/001-box-open-top-t2",
"ladder/09-shells-and-offsets/003-tube-two-open-faces",
"ladder/09-shells-and-offsets/004-thin-wall-0.2",
"ladder/09-shells-and-offsets/007-offset-top-face-5",
"ladder/09-shells-and-offsets/009-shell-outside-t2",
"ladder/09-shells-and-offsets/008-offset-cylinder-wall-2",
"ladder/09-shells-and-offsets/002-cylinder-open-top-t1",
"ladder/09-shells-and-offsets/006-shell-rounds-r1-thinner-than-t2",
"ladder/09-shells-and-offsets/005-shell-rounds-r5-t2",
"ladder/09-shells-and-offsets/002-cylinder-open-top-t1",
"ladder/09-shells-and-offsets/014-drafted-box-with-rounds-shelled",
"ladder/09-shells-and-offsets/010-shell-under-rounded-top",
"ladder/09-shells-and-offsets/005-shell-rounds-r5-t2",
"ladder/09-shells-and-offsets/013-dome-shelled-from-base",
"ladder/09-shells-and-offsets/015-shelled-dome-ring-joined-back",
"ladder/09-shells-and-offsets/011-part-shell"
],
"tier": "09-shells-and-offsets",
@@ -161,8 +173,8 @@
{
"cases": [
"ladder/10-patterns-and-mirrors/007-pattern-bodies",
"ladder/10-patterns-and-mirrors/005-mirror-feature",
"ladder/10-patterns-and-mirrors/004-mirror-body-joined",
"ladder/10-patterns-and-mirrors/005-mirror-feature",
"ladder/10-patterns-and-mirrors/001-rect-pattern-holes",
"ladder/10-patterns-and-mirrors/003-overlapping-pattern-leaves-core",
"ladder/10-patterns-and-mirrors/002-circular-pattern-holes",
@@ -174,8 +186,8 @@
},
{
"cases": [
"ladder/11-cumulative-parts/002-flange",
"ladder/11-cumulative-parts/001-bracket",
"ladder/11-cumulative-parts/002-flange",
"ladder/11-cumulative-parts/003-threaded-flange",
"ladder/11-cumulative-parts/004-housing"
],