diff --git a/docs/kernel-ladder.md b/docs/kernel-ladder.md index ea1595273f..6d939489d9 100644 --- a/docs/kernel-ladder.md +++ b/docs/kernel-ladder.md @@ -12,13 +12,14 @@ The **frontier** is the first case of a tier, in ladder order, that fails (fail, | 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 | 19 | 19 pass | – | -| 07-fillets | constant, variable and corner fillets | 18 | 17 pass, 1 unsupported | – | +| 05-holes-and-taps | holes and tapped holes | 17 | 17 pass | – | +| 06-threads | modelled threads | 30 | 1 fail, 29 pass | 023-external-1-2-npt | +| 07-fillets | constant, variable and corner fillets | 19 | 19 pass | – | | 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 | – | +| 12-sheet-metal | sheet metal: flanges, closed corners, reliefs, hems, folds and the flat pattern | 14 | 14 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,141 +29,171 @@ 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/005-sphere | a sphere r10 | analytic | pass | 0.003 | 0.003 | | | ladder/01-primitives/001-box | a 60x40x20 box: the stock every later tier starts from | analytic | pass | 0.004 | 0.004 | | -| ladder/01-primitives/004-frustum | a cone frustum r10 -> r5, h20 (revolved trapezoid) | analytic | pass | 0.017 | 0.017 | | -| ladder/01-primitives/003-cone | a cone r10 h30 (no cone primitive: a revolved right triangle, its axis a sketch line) | analytic | pass | 0.025 | 0.025 | | -| ladder/01-primitives/002-cylinder | a cylinder r10 h30 | analytic | pass | 0.032 | 0.032 | | -| ladder/01-primitives/006-torus | a torus R20 r5 | analytic | pass | 0.575 | 0.575 | | -| ladder/02-booleans/001-coincident-face-join | a 60x40x10 box joined exactly on the stock's top face: one 60x40x30 box | analytic | pass | 0.006 | 0.006 | | -| 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 | 0.007 | | -| 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 | 0.010 | | -| 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/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/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.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/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.037 | 0.037 | | +| ladder/01-primitives/004-frustum | a cone frustum r10 -> r5, h20 (revolved trapezoid) | analytic | pass | 0.041 | 0.041 | | +| ladder/01-primitives/002-cylinder | a cylinder r10 h30 | analytic | pass | 0.043 | 0.043 | | +| ladder/01-primitives/006-torus | a torus R20 r5 | analytic | pass | 0.172 | 0.172 | | +| 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.011 | 0.011 | | +| 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.012 | 0.012 | | +| 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/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.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/002-coplanar-overlap-join | two 60x40x20 boxes overlapping 30x20 in plan, tops and bottoms coplanar | analytic | pass | 0.013 | 0.013 | | -| 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.016 | 0.016 | | -| 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/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/008-near-tangent-gap-1e-6 | a cylinder r10 along X 1e-6 mm above the top face, cut | analytic | pass | 0.028 | 0.028 | | -| 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.029 | 0.029 | | -| 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/005-vertex-on-face-no-overlap | an inverted cone whose apex touches the middle of the top face, cut | analytic | pass | 0.043 | 0.043 | | -| 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.044 | 0.044 | | -| 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.048 | 0.048 | | -| 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.050 | 0.050 | | -| ladder/02-booleans/021-holes-touching-at-a-point | two through holes r5 whose circles touch at one point (30, 20) | analytic | pass | 0.055 | 0.055 | | -| 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.060 | 0.060 | | -| 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.061 | 0.061 | | -| 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.132 | 0.132 | | -| 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.237 | 0.237 | | -| 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.355 | 1.355 | | -| ladder/03-analytic-profiles/001-extrude-rect-with-arc-end | a 60x40 profile with a semicircular end r20, extruded 20 | analytic | pass | 0.013 | 0.013 | | -| ladder/03-analytic-profiles/007-revolve-180-touching-axis | a 15x20 rectangle on the axis revolved 180 deg: a half cylinder | analytic | pass | 0.014 | 0.014 | | -| ladder/03-analytic-profiles/006-revolve-partial-90 | a 10x10 rectangle 10 mm off the axis revolved 90 deg | analytic | pass | 0.016 | 0.016 | | -| ladder/03-analytic-profiles/008-extrude-slot | a slot (centres 40 apart, width 20) extruded 10 | analytic | pass | 0.023 | 0.023 | | -| 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.050 | 0.050 | | -| ladder/03-analytic-profiles/002-extrude-annulus | an annulus r20/r10 extruded 15 | analytic | pass | 0.059 | 0.059 | | -| 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.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.070 | 0.070 | | -| 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.124 | 0.124 | | -| 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.136 | 0.136 | | -| 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.011 | 0.011 | | -| 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.015 | 0.015 | | -| 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 | analytic | pass | 0.027 | 0.027 | | -| ladder/04-spline-profiles/009-extrude-periodic-fit-spline | a closed periodic fit-point spline through 6 points, extruded 10 | analytic | pass | 0.035 | 0.035 | | -| ladder/04-spline-profiles/004-sweep-square-along-bezier | a 4x4 square swept along the same Bezier path | analytic | pass | 0.042 | 0.042 | | -| ladder/04-spline-profiles/006-loft-circle-frustum | a loft between circles r20 at z=0 and r10 at z=30 | analytic | pass | 0.059 | 0.059 | | -| ladder/04-spline-profiles/007-loft-three-circles | a smooth loft through circles r20, r10, r20 at z = 0, 20, 40 | analytic | pass | 0.072 | 0.072 | | -| 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.084 | 0.084 | | -| ladder/04-spline-profiles/010-part-bezier-window | the running part: a Bezier-arched window cut through the back wall | analytic | pass | 0.131 | 0.131 | | -| ladder/04-spline-profiles/003-pipe-along-bezier | a pipe d4 along a planar Bezier path | analytic | pass | 0.141 | 0.141 | | -| 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' | analytic | pass | 0.681 | 0.681 | | -| 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 | analytic | pass | 1.376 | 1.376 | | -| 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/001-simple-through | a d10 through hole in the stock's top | analytic | pass | 0.033 | 0.033 | | -| 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.034 | 0.034 | | -| 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.036 | 0.036 | | -| 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.044 | 0.044 | | -| 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.045 | 0.045 | | -| ladder/05-holes-and-taps/002-simple-blind-flat | a d10 blind hole 10 deep, flat bottom | analytic | pass | 0.046 | 0.046 | | -| ladder/05-holes-and-taps/004-counterbore | a counterbored hole: d6.6 through, d11 x 6.4 counterbore | analytic | pass | 0.051 | 0.051 | | -| ladder/05-holes-and-taps/005-countersink | a countersunk hole: d6.6 through, d12 x 90 deg countersink | analytic | pass | 0.089 | 0.089 | | -| 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.102 | 0.102 | | -| ladder/05-holes-and-taps/012-crossing-tapped-holes-offset | two M6 tapped holes (d5) crossing with axes 2 mm apart | analytic | pass | 0.113 | 0.113 | | -| 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.130 | 0.130 | | -| 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.280 | 0.280 | | -| ladder/06-threads/012-external-acme-3-4-6 | a modelled 3/4-6 ACME thread (ASME B1.5, general purpose) on a 3/4 in shaft, six turns | analytic | pass | 0.839 | 0.839 | | -| ladder/06-threads/013-external-s20x4 | a modelled metric buttress S20x4 thread (DIN 513, 3/30 deg) on a d20 shaft, six turns | analytic | pass | 0.945 | 0.945 | | -| ladder/06-threads/011-external-tr20x4 | a modelled trapezoidal Tr20x4 thread (ISO 2904) on a d20 shaft, six turns | analytic | pass | 0.956 | 0.956 | | -| ladder/06-threads/003-external-m10-partial-length | a modelled M10 thread over 15 of the 30 mm from the top end (`from`): it stops square in the middle of the face | analytic | pass | 1.088 | 1.088 | | -| ladder/06-threads/015-internal-tr20x4-nut | a modelled internal Tr20x4 thread in a d16 (D1 = d - P) bore through a 40x40x24 block | analytic | pass | 1.200 | 1.200 | | -| ladder/06-threads/014-external-buttress-asme-1.5-8 | a modelled 1.5-8 buttress thread (ASME B1.9 basic profile, 7/45 deg) on a 1.5 in shaft, six turns | analytic | pass | 1.347 | 1.347 | | -| ladder/06-threads/010-part-threaded-boss | the running part with a modelled M16 thread on its d16 boss | analytic | pass | 1.462 | 1.462 | | -| ladder/06-threads/016-external-m10-left-hand | 001's modelled M10 thread, left-handed: the same volume, turning the other way | analytic | pass | 1.690 | 1.690 | | -| ladder/06-threads/019-external-tr40x14-p7-two-start | a modelled two-start trapezoidal Tr40x14(P7) thread (ISO 2904, ISO 2903) on a d40 shaft, three leads long | analytic | pass | 1.831 | 1.831 | | -| 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.872 | 1.872 | | -| 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.920 | 1.920 | | -| 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: it stops clear of the fillet | analytic | pass | 1.964 | 1.964 | | -| ladder/06-threads/001-external-m10-full | a modelled M10 thread over the whole of a d10 x 30 cylinder | analytic | pass | 2.128 | 2.128 | | -| ladder/06-threads/004-external-m10-to-shoulder | a modelled M10 thread on a d10 shaft running down to a d16 shoulder: it stops clear of it, the collar whole | analytic | pass | 2.144 | 2.144 | | -| ladder/06-threads/009-thread-runout-length | 004's M10 thread run from the free top end, vanishing over a 3 mm (2 P) runout before the d16 shoulder | analytic | pass | 2.203 | 2.203 | | -| ladder/06-threads/002-external-m10x1-fine | a modelled fine M10x1 thread over a d10 x 30 cylinder | analytic | pass | 2.626 | 2.626 | | -| ladder/06-threads/017-external-m10-chamfered-tip | 001's modelled M10 thread with ISO 4753's chamfered end at both free ends: a 45 deg cone down to the minor diameter, cut after the groove | analytic | pass | 3.485 | 3.485 | | -| ladder/06-threads/008-multi-start-thread | a two-start M10 thread (lead 3, pitch 1.5) over a d10 x 30 cylinder | analytic | pass | 3.706 | 3.706 | | -| ladder/06-threads/018-external-m10-both-hands | 001's modelled M10 thread cut both ways: a right- and a left-handed groove crossing on a d10 x 30 cylinder | analytic | pass | 7.756 | 7.756 | | -| 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/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/001-single-edge-r5 | an r5 round on the stock's top front edge | analytic | pass | 0.016 | 0.016 | | -| 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/011-chain-ending-at-corner | r5 rounds on two top edges meeting at a corner whose vertical edge stays sharp | analytic | pass | 0.019 | 0.019 | | +| 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/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.014 | 0.014 | | +| ladder/02-booleans/002-coplanar-overlap-join | two 60x40x20 boxes overlapping 30x20 in plan, tops and bottoms coplanar | analytic | pass | 0.014 | 0.014 | | +| 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.025 | 0.025 | | +| 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.033 | 0.033 | | +| 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.036 | 0.036 | | +| 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.037 | 0.037 | | +| 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.037 | 0.037 | | +| 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.041 | 0.041 | | +| 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.045 | 0.045 | | +| 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.052 | 0.052 | | +| 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.059 | 0.059 | | +| 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.059 | 0.059 | | +| 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.069 | 0.069 | | +| 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.076 | 0.076 | | +| 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.087 | 0.087 | | +| ladder/02-booleans/021-holes-touching-at-a-point | two through holes r5 whose circles touch at one point (30, 20) | analytic | pass | 0.131 | 0.131 | | +| 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.182 | 0.182 | | +| 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.201 | 0.201 | | +| 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.559 | 1.559 | | +| ladder/03-analytic-profiles/006-revolve-partial-90 | a 10x10 rectangle 10 mm off the axis revolved 90 deg | analytic | pass | 0.010 | 0.010 | | +| ladder/03-analytic-profiles/007-revolve-180-touching-axis | a 15x20 rectangle on the axis revolved 180 deg: a half cylinder | analytic | pass | 0.010 | 0.010 | | +| ladder/03-analytic-profiles/008-extrude-slot | a slot (centres 40 apart, width 20) extruded 10 | analytic | pass | 0.011 | 0.011 | | +| ladder/03-analytic-profiles/001-extrude-rect-with-arc-end | a 60x40 profile with a semicircular end r20, extruded 20 | analytic | pass | 0.015 | 0.015 | | +| 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.024 | 0.024 | | +| ladder/03-analytic-profiles/002-extrude-annulus | an annulus r20/r10 extruded 15 | analytic | pass | 0.024 | 0.024 | | +| 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.031 | 0.031 | | +| 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.042 | 0.042 | | +| 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.060 | 0.060 | | +| 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.060 | 0.060 | | +| 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.010 | 0.010 | | +| 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.020 | 0.020 | | +| 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 | analytic | pass | 0.021 | 0.021 | | +| ladder/04-spline-profiles/009-extrude-periodic-fit-spline | a closed periodic fit-point spline through 6 points, extruded 10 | analytic | pass | 0.031 | 0.031 | | +| ladder/04-spline-profiles/006-loft-circle-frustum | a loft between circles r20 at z=0 and r10 at z=30 | analytic | pass | 0.036 | 0.036 | | +| ladder/04-spline-profiles/007-loft-three-circles | a smooth loft through circles r20, r10, r20 at z = 0, 20, 40 | analytic | pass | 0.037 | 0.037 | | +| ladder/04-spline-profiles/004-sweep-square-along-bezier | a 4x4 square swept along the same Bezier path | analytic | pass | 0.039 | 0.039 | | +| 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.069 | 0.069 | | +| ladder/04-spline-profiles/010-part-bezier-window | the running part: a Bezier-arched window cut through the back wall | analytic | pass | 0.099 | 0.099 | | +| ladder/04-spline-profiles/003-pipe-along-bezier | a pipe d4 along a planar Bezier path | analytic | pass | 0.110 | 0.110 | | +| 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' | analytic | pass | 0.463 | 0.463 | | +| 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 | analytic | pass | 1.323 | 1.323 | | +| ladder/05-holes-and-taps/001-simple-through | a d10 through hole in the stock's top | analytic | pass | 0.023 | 0.023 | | +| 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.024 | 0.024 | | +| 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.026 | 0.026 | | +| ladder/05-holes-and-taps/017-tapped-1-4-npt-through | a 1/4-18 NPT tapped hole through the stock (ASME B1.20.1): a straight hole at the tap maker's 10.85 mm, cosmetic thread | analytic | pass | 0.028 | 0.028 | | +| ladder/05-holes-and-taps/016-tapped-rc-1-2-through | an Rc 1/2 tapped hole through the stock (ISO 7-1 internal taper): a straight hole at the tap maker's 17.6 mm, cosmetic thread | analytic | pass | 0.028 | 0.028 | | +| ladder/05-holes-and-taps/002-simple-blind-flat | a d10 blind hole 10 deep, flat bottom | analytic | pass | 0.029 | 0.029 | | +| 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.030 | 0.030 | | +| 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.032 | 0.032 | | +| ladder/05-holes-and-taps/015-tapped-1-4-28-unf-blind | a 1/4-28 UNF tapped blind hole 10 deep, flat bottom: drilled 5.45 mm, cosmetic thread | analytic | pass | 0.034 | 0.034 | | +| 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.036 | 0.036 | | +| ladder/05-holes-and-taps/014-tapped-1-4-20-unc-through | a 1/4-20 UNC tapped hole through the stock: drilled #7 (0.201 in), cosmetic thread | analytic | pass | 0.041 | 0.041 | | +| 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.059 | 0.059 | | +| 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.078 | 0.078 | | +| ladder/05-holes-and-taps/012-crossing-tapped-holes-offset | two M6 tapped holes (d5) crossing with axes 2 mm apart | analytic | pass | 0.127 | 0.127 | | +| 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 | 0.134 | | +| 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.256 | 0.256 | | +| ladder/06-threads/030-square-thread-refused | a square thread on a d10 x 30 cylinder: refused, no current standard defines one | invariants | pass | 0.018 | 0.018 | | +| ladder/06-threads/012-external-acme-3-4-6 | a modelled 3/4-6 ACME thread (ASME B1.5, general purpose) on a 3/4 in shaft, six turns | analytic | pass | 0.634 | 0.634 | | +| ladder/06-threads/011-external-tr20x4 | a modelled trapezoidal Tr20x4 thread (ISO 2904) on a d20 shaft, six turns | analytic | pass | 0.648 | 0.648 | | +| ladder/06-threads/029-external-tr20x4-chamfer-needs-depth | 011's Tr20x4 thread with a chamfered tip and no depth: refused, ISO 4753 is for metric threads | invariants | pass | 0.657 | 0.657 | | +| ladder/06-threads/013-external-s20x4 | a modelled metric buttress S20x4 thread (DIN 513, 3/30 deg) on a d20 shaft, six turns | analytic | pass | 0.665 | 0.665 | | +| ladder/06-threads/021-internal-rp-1-2 | a modelled Rp 1/2 parallel internal pipe thread (ISO 7-1) in a d18.631 (its minor) bore through a 40x40 block six turns thick | analytic | pass | 0.685 | 0.685 | | +| ladder/06-threads/020-external-g-1-2 | a modelled G 1/2 parallel pipe thread (ISO 228-1, 55 deg) on a d20.955 shaft, six turns | analytic | pass | 0.695 | 0.695 | | +| ladder/06-threads/015-internal-tr20x4-nut | a modelled internal Tr20x4 thread in a d16 (D1 = d - P) bore through a 40x40x24 block | analytic | pass | 0.695 | 0.695 | | +| ladder/06-threads/014-external-buttress-asme-1.5-8 | a modelled 1.5-8 buttress thread (ASME B1.9 basic profile, 7/45 deg) on a 1.5 in shaft, six turns | analytic | pass | 0.716 | 0.716 | | +| ladder/06-threads/026-external-s20x4-steep-flank-start-to-shoulder | a modelled S20x4 buttress thread on a d20 shaft down to a d30 shoulder, the steep flank toward the thread's start (down): the 30 deg wall faces the shoulder | analytic | pass | 0.746 | 0.746 | | +| ladder/06-threads/010-part-threaded-boss | the running part with a modelled M16 thread on its d16 boss | analytic | pass | 0.774 | 0.774 | | +| ladder/06-threads/025-external-s20x4-steep-flank-end-to-shoulder | a modelled S20x4 buttress thread on a d20 shaft down to a d30 shoulder, the steep flank toward the thread's end (up, the default): the 3 deg wall faces the shoulder | analytic | pass | 0.776 | 0.776 | | +| ladder/06-threads/003-external-m10-partial-length | a modelled M10 thread over 15 of the 30 mm from the top end (`from`): it stops square in the middle of the face | analytic | pass | 0.855 | 0.855 | | +| 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.161 | 1.161 | | +| ladder/06-threads/019-external-tr40x14-p7-two-start | a modelled two-start trapezoidal Tr40x14(P7) thread (ISO 2904, ISO 2903) on a d40 shaft, three leads long | analytic | pass | 1.196 | 1.196 | | +| ladder/06-threads/028-external-tr20x4-chamfer-30-deg-2.5-deep | 011's modelled Tr20x4 thread with chamfered ends at its own angle and depth: 30 deg to the axis, 2.5 mm in from the major diameter | analytic | pass | 1.311 | 1.311 | | +| ladder/06-threads/022-external-r-1-2-taper | a modelled R 1/2 taper pipe thread (ISO 7-1, 55 deg, 1 in 16) on a 21.3 mm pipe (ISO 65), its standard 13.2 mm from the pipe's end | analytic | pass | 1.344 | 1.344 | | +| ladder/06-threads/024-internal-rc-1-2-taper | a modelled Rc 1/2 internal taper pipe thread (ISO 7-1) in a d17.6 hole (the tap maker's) through a 13.2 mm plate, from its top face | analytic | pass | 1.383 | 1.383 | | +| ladder/06-threads/004-external-m10-to-shoulder | a modelled M10 thread on a d10 shaft running down to a d16 shoulder: it stops clear of it, the collar whole | analytic | pass | 1.403 | 1.403 | | +| 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: it stops clear of the fillet | analytic | pass | 1.437 | 1.437 | | +| ladder/06-threads/009-thread-runout-length | 004's M10 thread run from the free top end, vanishing over a 3 mm (2 P) runout before the d16 shoulder | analytic | pass | 1.439 | 1.439 | | +| ladder/06-threads/023-external-1-2-npt | a modelled 1/2-14 NPT taper pipe thread (ASME B1.20.1, 60 deg, 1 in 16) on its 0.840 in pipe, its effective thread L2 from the end | analytic | **FAIL**: volume_mm3 8227.346353 (want 8226.404942) | 1.619 | 1.619 | | +| ladder/06-threads/016-external-m10-left-hand | 001's modelled M10 thread, left-handed: the same volume, turning the other way | analytic | pass | 1.626 | 1.626 | | +| ladder/06-threads/001-external-m10-full | a modelled M10 thread over the whole of a d10 x 30 cylinder | analytic | pass | 1.690 | 1.690 | | +| 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.713 | 1.713 | | +| ladder/06-threads/027-external-m10-chamfered-start | 001's modelled M10 thread with ISO 4753's chamfered end at the end it starts from only (`tip: start`, from the top) | analytic | pass | 2.526 | 2.526 | | +| ladder/06-threads/002-external-m10x1-fine | a modelled fine M10x1 thread over a d10 x 30 cylinder | analytic | pass | 2.534 | 2.534 | | +| ladder/06-threads/008-multi-start-thread | a two-start M10 thread (lead 3, pitch 1.5) over a d10 x 30 cylinder | analytic | pass | 3.074 | 3.074 | | +| ladder/06-threads/017-external-m10-chamfered-tip | 001's modelled M10 thread with ISO 4753's chamfered end at both free ends: a 45 deg cone down to the external minor diameter d3, cut after the groove | analytic | pass | 3.340 | 3.340 | | +| ladder/06-threads/018-external-m10-both-hands | 001's modelled M10 thread cut both ways: a right- and a left-handed groove crossing on a d10 x 30 cylinder | analytic | pass | 6.515 | 6.515 | | +| ladder/07-fillets/001-single-edge-r5 | an r5 round on the stock's top front edge | analytic | pass | 0.008 | 0.008 | | +| 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.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 | analytic | pass | 0.011 | 0.011 | | +| ladder/07-fillets/002-four-vertical-edges-r5 | r5 rounds on the four vertical edges | analytic | pass | 0.017 | 0.017 | | +| 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.017 | 0.017 | | +| ladder/07-fillets/008-constant-r1e-3 | a constant 1e-3 mm round on the top front edge | analytic | pass | 0.019 | 0.019 | | | 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.020 | 0.020 | | -| 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.021 | 0.021 | | -| 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.023 | 0.023 | | -| ladder/07-fillets/008-constant-r1e-3 | a constant 1e-3 mm round on the top front edge | analytic | pass | 0.024 | 0.024 | | -| ladder/07-fillets/002-four-vertical-edges-r5 | r5 rounds on the four vertical edges | analytic | pass | 0.027 | 0.027 | | -| 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 | analytic | pass | 0.037 | 0.037 | | -| 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: refused, the r7 cannot exist | invariants | pass | 0.046 | 0.046 | | -| 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 | analytic | pass | 0.060 | 0.060 | | -| ladder/07-fillets/014-curved-edge-r2 | an r2 round on the top edge of a cylinder r10 h20 | analytic | pass | 0.078 | 0.078 | | -| ladder/07-fillets/018-corner-three-sequential-r5-r3-r2 | rounds r5 and r3 on the two top edges at a corner, then r2 on the vertical edge under them, run on up into the corner | invariants | pass | 0.080 | 0.080 | | -| 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.080 | 0.080 | | -| ladder/07-fillets/013-corner-setback | three r5 rounds at the corner (60,40,20) with setbacks of 8 mm along each edge | invariants | pass | 0.117 | 0.117 | | -| 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.690 | 0.690 | | -| 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.009 | 0.009 | | -| ladder/08-chamfers/003-distance-angle-5-30 | a chamfer 5 mm at 30 deg on the top front edge | analytic | pass | 0.012 | 0.012 | | +| 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 | analytic | pass | 0.024 | 0.024 | | +| 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 | 0.025 | | +| 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.032 | 0.032 | | +| ladder/07-fillets/014-curved-edge-r2 | an r2 round on the top edge of a cylinder r10 h20 | analytic | pass | 0.048 | 0.048 | | +| 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 | analytic | pass | 0.051 | 0.051 | | +| 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: refused, the r7 cannot exist | invariants | pass | 0.053 | 0.053 | | +| ladder/07-fillets/018-corner-three-sequential-r5-r3-r2 | rounds r5 and r3 on the two top edges at a corner, then r2 on the vertical edge under them, run on up into the corner | invariants | pass | 0.061 | 0.061 | | +| ladder/07-fillets/013-corner-setback | three r5 rounds at the corner (60,40,20) with setbacks of 8 mm along each edge | invariants | pass | 0.062 | 0.062 | | +| 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.075 | 0.075 | | +| 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.480 | 0.480 | | +| ladder/07-fillets/019-concave-corner-g2-patch | three concave r5 rounds at the inner corner of a 20x20x10 notch, with the g2 corner patch | invariants | pass | 2.084 | 2.084 | | +| ladder/07-fillets/015-corner-g2-patch | three r5 rounds at a corner with the g2 corner patch | invariants | pass | 2.173 | 2.173 | | | ladder/08-chamfers/001-equal-5 | a 5 mm chamfer on the top front edge | analytic | pass | 0.012 | 0.012 | | -| ladder/08-chamfers/002-two-distances-5-3 | a 5 x 3 chamfer on the top front edge | analytic | pass | 0.024 | 0.024 | | -| 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 | analytic | pass | 0.029 | 0.029 | | -| ladder/08-chamfers/006-curved-edge-2 | a 2 mm chamfer on the top edge of a cylinder r10 h20 | analytic | pass | 0.070 | 0.070 | | -| 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.749 | 0.749 | | -| ladder/09-shells-and-offsets/007-offset-top-face-5 | the stock's top face offset 5 mm | analytic | pass | 0.016 | 0.016 | | -| ladder/09-shells-and-offsets/001-box-open-top-t2 | the stock shelled 2 mm, open at the top | analytic | pass | 0.017 | 0.017 | | +| ladder/08-chamfers/003-distance-angle-5-30 | a chamfer 5 mm at 30 deg on the top front edge | analytic | pass | 0.012 | 0.012 | | +| ladder/08-chamfers/002-two-distances-5-3 | a 5 x 3 chamfer on the top front edge | analytic | pass | 0.012 | 0.012 | | +| ladder/08-chamfers/005-corner-two-mitred-3 | 3 mm chamfers on two top edges meeting at a corner (mitred) | analytic | pass | 0.015 | 0.015 | | +| ladder/08-chamfers/004-corner-three-equal-3 | 3 mm chamfers on the three edges meeting at a corner | analytic | pass | 0.018 | 0.018 | | +| 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 | analytic | pass | 0.031 | 0.031 | | +| ladder/08-chamfers/006-curved-edge-2 | a 2 mm chamfer on the top edge of a cylinder r10 h20 | analytic | pass | 0.060 | 0.060 | | +| 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.681 | 0.681 | | +| 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/007-offset-top-face-5 | the stock's top face offset 5 mm | analytic | pass | 0.017 | 0.017 | | | 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/003-tube-two-open-faces | the stock shelled 2 mm, open top and bottom | analytic | pass | 0.018 | 0.018 | | -| 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.018 | 0.018 | | -| ladder/09-shells-and-offsets/009-shell-outside-t2 | the stock shelled 2 mm outward, open at the top | analytic | pass | 0.038 | 0.038 | | -| 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.060 | 0.060 | | -| ladder/09-shells-and-offsets/008-offset-cylinder-wall-2 | a cylinder r10 h20 with its side face offset 2 mm | analytic | pass | 0.075 | 0.075 | | -| ladder/09-shells-and-offsets/002-cylinder-open-top-t1 | a cylinder r10 h30 shelled 1 mm, open at the top | analytic | pass | 0.102 | 0.102 | | -| 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 | analytic | pass | 0.105 | 0.105 | | -| 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) | analytic | pass | 0.124 | 0.124 | | -| 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.174 | 0.174 | | -| 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.236 | 0.236 | | -| 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.922 | 0.922 | | -| ladder/09-shells-and-offsets/011-part-shell | the running part shelled 1.5 mm open at the bottom | analytic | pass | 1.078 | 1.078 | | -| ladder/10-patterns-and-mirrors/007-pattern-bodies | a pin r3 h10 patterned 4 times at 10 mm as bodies | analytic | pass | 0.031 | 0.031 | | -| 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.067 | 0.067 | | +| 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.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.017 | 0.017 | | +| 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.040 | 0.040 | | +| ladder/09-shells-and-offsets/008-offset-cylinder-wall-2 | a cylinder r10 h20 with its side face offset 2 mm | analytic | pass | 0.057 | 0.057 | | +| 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.071 | 0.071 | | +| ladder/09-shells-and-offsets/002-cylinder-open-top-t1 | a cylinder r10 h30 shelled 1 mm, open at the top | analytic | pass | 0.077 | 0.077 | | +| 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) | analytic | pass | 0.077 | 0.077 | | +| 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 | analytic | pass | 0.079 | 0.079 | | +| 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.112 | 0.112 | | +| 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.696 | 0.696 | | +| ladder/09-shells-and-offsets/011-part-shell | the running part shelled 1.5 mm open at the bottom | analytic | pass | 0.965 | 0.965 | | +| ladder/10-patterns-and-mirrors/007-pattern-bodies | a pin r3 h10 patterned 4 times at 10 mm as bodies | analytic | pass | 0.035 | 0.035 | | +| 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.047 | 0.047 | | | ladder/10-patterns-and-mirrors/005-mirror-feature | a d10 hole in the stock mirrored about x=30 as a feature | analytic | pass | 0.074 | 0.074 | | -| 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.175 | 0.175 | | -| 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.315 | 0.315 | | -| ladder/10-patterns-and-mirrors/002-circular-pattern-holes | a d6 hole patterned 8 times round a disk r30 h10 | analytic | pass | 0.351 | 0.351 | | -| 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.855 | 0.855 | | -| 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 | analytic | pass | 1.765 | 1.765 | | -| ladder/11-cumulative-parts/001-bracket | an L bracket: concave r5 round, 5 mm outer chamfer, a hole in each leg | analytic | pass | 0.088 | 0.088 | | -| 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.618 | 0.618 | | -| 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 | analytic | pass | 1.821 | 1.821 | | -| 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 | analytic | pass | 2.307 | 2.307 | | +| 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.239 | 0.239 | | +| 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.299 | 0.299 | | +| ladder/10-patterns-and-mirrors/002-circular-pattern-holes | a d6 hole patterned 8 times round a disk r30 h10 | analytic | pass | 0.484 | 0.484 | | +| 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.758 | 0.758 | | +| 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 | analytic | pass | 1.590 | 1.590 | | +| ladder/11-cumulative-parts/001-bracket | an L bracket: concave r5 round, 5 mm outer chamfer, a hole in each leg | analytic | pass | 0.089 | 0.089 | | +| 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.673 | 0.673 | | +| 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 | analytic | pass | 2.166 | 2.166 | | +| 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 | analytic | pass | 2.313 | 2.313 | | +| ladder/12-sheet-metal/001-base-flange | a 100 x 60 base flange, 2 mm sheet | analytic | pass | 0.002 | 0.002 | | +| ladder/12-sheet-metal/002-edge-flange-90 | a 20 mm 90 deg edge flange along the base's front edge | analytic | pass | 0.005 | 0.005 | | +| ladder/12-sheet-metal/010-fold-90 | 001's base folded 90 deg up along a sketch line across it at x = 70 | analytic | pass | 0.005 | 0.005 | | +| ladder/12-sheet-metal/009-hem-on-the-back-edge | 002's L with an 8 mm hem on the base's back edge, folded under it with a 1 mm inner radius | analytic | pass | 0.006 | 0.006 | | +| ladder/12-sheet-metal/012-fold-refolded | 011's flat refolded: 010's part again | analytic | pass | 0.008 | 0.008 | | +| ladder/12-sheet-metal/007-corner-relief-rectangular | 003's tray with a rectangular corner relief 4 mm across at each corner | analytic | pass | 0.008 | 0.008 | | +| ladder/12-sheet-metal/011-fold-unfolded | 010's fold unfolded: the flat 100 x 60 plate again | analytic | pass | 0.010 | 0.010 | | +| ladder/12-sheet-metal/004-four-flanges-72-leaning-out | 20 mm flanges at 72 deg on all four edges, made together and closed at the corners, leaning out: the panel ends run on along a slant | analytic | pass | 0.014 | 0.014 | | +| ladder/12-sheet-metal/003-four-flanges-90-closed-corners | 20 mm 90 deg flanges on all four edges, made together: the corners close with the rule's gap, notch relief | analytic | pass | 0.014 | 0.014 | | +| ladder/12-sheet-metal/005-four-flanges-108-leaning-in | 20 mm flanges at 108 deg on all four edges, made together and closed at the corners, leaning in over the base: the panel ends are cut back along a slant where they would overlap | analytic | pass | 0.014 | 0.014 | | +| ladder/12-sheet-metal/006-corner-relief-round | 003's tray with a round corner relief 4 mm across at each corner | analytic | pass | 0.017 | 0.017 | | +| ladder/12-sheet-metal/013-flat-pattern | the flat pattern of 003's tray: its outline's size and area, and its four bend lines | analytic | pass | 0.032 | 0.032 | | +| ladder/12-sheet-metal/008-corner-relief-tear | 003's tray with torn corners: the bends run to the corner and each end is cut straight, in the flat, to where its panel's end starts | analytic | pass | 0.071 | 0.071 | | +| ladder/12-sheet-metal/014-bracket | a bracket: a 30 mm flange on the front edge, a 10 mm lip turned out on its far edge, a d10 hole through the base | analytic | pass | 0.092 | 0.092 | | diff --git a/tests/kernel-cases/ladder/golden.json b/tests/kernel-cases/ladder/golden.json index b102ff3cae..13c200d8bc 100644 --- a/tests/kernel-cases/ladder/golden.json +++ b/tests/kernel-cases/ladder/golden.json @@ -9,67 +9,67 @@ "vertices": 8, "volume_mm3": 48000.0 }, - "seconds": 0.003599988, + "seconds": 0.004062439, "status": "pass" }, "ladder/01-primitives/002-cylinder": { "measured": { - "area_mm2": 2513.27408091628, + "area_mm2": 2513.2741228740038, "body_count": 1, "edges": 3, "faces": 3, "vertices": 2, - "volume_mm3": 9424.777353639352 + "volume_mm3": 9424.777960803078 }, - "seconds": 0.031665293, + "seconds": 0.043371433, "status": "pass" }, "ladder/01-primitives/003-cone": { "measured": { - "area_mm2": 1307.6181023117074, + "area_mm2": 1307.6180919431065, "body_count": 1, "edges": 3, "faces": 2, "vertices": 3, - "volume_mm3": 3141.59242697122 + "volume_mm3": 3141.592653566665 }, - "seconds": 0.024871256, + "seconds": 0.03683274, "status": "pass" }, "ladder/01-primitives/004-frustum": { "measured": { - "area_mm2": 1364.1829847648855, + "area_mm2": 1364.1829574594403, "body_count": 1, "edges": 3, "faces": 3, "vertices": 2, - "volume_mm3": 3665.191341582638 + "volume_mm3": 3665.1914291694306 }, - "seconds": 0.016772876, + "seconds": 0.040579849, "status": "pass" }, "ladder/01-primitives/005-sphere": { "measured": { - "area_mm2": 1256.6371531595494, + "area_mm2": 1256.6370614485081, "body_count": 1, "edges": 1, "faces": 1, "vertices": 2, - "volume_mm3": 4188.791896913583 + "volume_mm3": 4188.790205011419 }, - "seconds": 0.002894944, + "seconds": 0.005130222, "status": "pass" }, "ladder/01-primitives/006-torus": { "measured": { - "area_mm2": 3947.8419806693646, + "area_mm2": 3947.841760474683, "body_count": 1, "edges": 1, "faces": 1, "vertices": 1, - "volume_mm3": 9869.61010099745 + "volume_mm3": 9869.604401217126 }, - "seconds": 0.57458714, + "seconds": 0.172193392, "status": "pass" }, "ladder/02-booleans/001-coincident-face-join": { @@ -81,7 +81,7 @@ "vertices": 8, "volume_mm3": 72000.0 }, - "seconds": 0.006455716, + "seconds": 0.012248454, "status": "pass" }, "ladder/02-booleans/002-coplanar-overlap-join": { @@ -93,19 +93,19 @@ "vertices": 16, "volume_mm3": 84000.0 }, - "seconds": 0.013407577, + "seconds": 0.01398496, "status": "pass" }, "ladder/02-booleans/003-pocket-flush-with-top": { "measured": { - "area_mm2": 9600.000000000002, + "area_mm2": 9600.0, "body_count": 1, "edges": 24, "faces": 11, "vertices": 16, "volume_mm3": 44000.0 }, - "seconds": 0.012900423, + "seconds": 0.013073515, "status": "pass" }, "ladder/02-booleans/004-edge-on-edge-no-overlap": { @@ -117,7 +117,7 @@ "vertices": 8, "volume_mm3": 48000.0 }, - "seconds": 0.010369929, + "seconds": 0.010931311, "status": "pass" }, "ladder/02-booleans/005-vertex-on-face-no-overlap": { @@ -129,7 +129,7 @@ "vertices": 8, "volume_mm3": 48000.0 }, - "seconds": 0.043089276, + "seconds": 0.044740497, "status": "pass" }, "ladder/02-booleans/006-tangent-along-line-no-overlap": { @@ -141,7 +141,7 @@ "vertices": 8, "volume_mm3": 48000.0 }, - "seconds": 0.015702342, + "seconds": 0.03648693, "status": "pass" }, "ladder/02-booleans/007-near-tangent-gap-1e-3": { @@ -153,7 +153,7 @@ "vertices": 8, "volume_mm3": 48000.0 }, - "seconds": 0.044085553, + "seconds": 0.032671004, "status": "pass" }, "ladder/02-booleans/008-near-tangent-gap-1e-6": { @@ -165,19 +165,19 @@ "vertices": 8, "volume_mm3": 48000.0 }, - "seconds": 0.028412443, + "seconds": 0.037264262, "status": "pass" }, "ladder/02-booleans/009-near-tangent-overlap-1e-3": { "measured": { - "area_mm2": 8800.00018857595, + "area_mm2": 8800.000188575948, "body_count": 1, "edges": 18, "faces": 8, "vertices": 12, - "volume_mm3": 47999.9886864612 + "volume_mm3": 47999.98868646121 }, - "seconds": 0.0481886, + "seconds": 0.041053197, "status": "pass" }, "ladder/02-booleans/010-near-tangent-overlap-1e-6": { @@ -189,67 +189,67 @@ "vertices": 8, "volume_mm3": 48000.0 }, - "seconds": 0.029025343, + "seconds": 0.037161622, "status": "pass" }, "ladder/02-booleans/011-tangent-along-circle-through-hole": { "measured": { - "area_mm2": 9428.318515408751, + "area_mm2": 9428.318530719811, "body_count": 1, "edges": 15, "faces": 7, "vertices": 10, - "volume_mm3": 41716.81450698026 + "volume_mm3": 41716.814692852844 }, - "seconds": 0.034977279, + "seconds": 0.076309047, "status": "pass" }, "ladder/02-booleans/012-tangent-along-circle-bowl": { "measured": { - "area_mm2": 9742.477897359224, + "area_mm2": 9742.477796081346, "body_count": 1, "edges": 17, "faces": 8, "vertices": 12, - "volume_mm3": 42764.01195654861 + "volume_mm3": 42764.01224382856 }, - "seconds": 0.059898023, + "seconds": 0.068907004, "status": "pass" }, "ladder/02-booleans/013-cut-across-cylinder-seam": { "measured": { - "area_mm2": 2036.8673139138011, + "area_mm2": 2036.867362638954, "body_count": 1, "edges": 12, "faces": 6, "vertices": 8, - "volume_mm3": 5888.550569284607 + "volume_mm3": 5888.551106723224 }, - "seconds": 0.049629232, + "seconds": 0.059478055, "status": "pass" }, "ladder/02-booleans/014-cut-through-sphere-pole": { "measured": { - "area_mm2": 1332.0893143869712, + "area_mm2": 1332.0892833422135, "body_count": 1, "edges": 14, "faces": 6, "vertices": 10, - "volume_mm3": 4110.944533826848 + "volume_mm3": 4110.943748776394 }, - "seconds": 0.011976898, + "seconds": 0.024782143, "status": "pass" }, "ladder/02-booleans/015-knife-edge-wedge-cut": { "measured": { - "area_mm2": 6929.822128134708, + "area_mm2": 6929.822128134705, "body_count": 1, "edges": 9, "faces": 5, "vertices": 6, - "volume_mm3": 24000.000000000007 + "volume_mm3": 24000.000000000015 }, - "seconds": 0.011093645, + "seconds": 0.011570083, "status": "pass" }, "ladder/02-booleans/016-v-groove-pinches-bottom-to-line": { @@ -259,45 +259,45 @@ "edges": 24, "faces": 12, "vertices": 16, - "volume_mm3": 38400.000000000015 + "volume_mm3": 38400.00000000002 }, - "seconds": 0.012047634, + "seconds": 0.012730153, "status": "pass" }, "ladder/02-booleans/017-cylinder-tangent-top-and-bottom": { "measured": { - "area_mm2": 11941.592611921053, + "area_mm2": 11941.59265358626, "body_count": 2, "edges": 24, "faces": 12, "vertices": 16, - "volume_mm3": 29150.438046445848 + "volume_mm3": 29150.444078121756 }, - "seconds": 0.023171327, + "seconds": 0.051785514, "status": "pass" }, "ladder/02-booleans/018-hole-tangent-to-side-face": { "measured": { - "area_mm2": 9428.31829497222, + "area_mm2": 9428.31853067088, "body_count": 1, "edges": 17, "faces": 7, "vertices": 10, - "volume_mm3": 41716.81209239218 + "volume_mm3": 41716.814692298256 }, - "seconds": 0.026474081, + "seconds": 0.058955827, "status": "pass" }, "ladder/02-booleans/019-notch-flush-with-end-face": { "measured": { - "area_mm2": 8800.000000000002, + "area_mm2": 8800.0, "body_count": 1, "edges": 24, "faces": 10, "vertices": 16, - "volume_mm3": 32000.000000000015 + "volume_mm3": 32000.000000000007 }, - "seconds": 0.007169783, + "seconds": 0.013683135, "status": "pass" }, "ladder/02-booleans/020-part-back-wall": { @@ -307,973 +307,1137 @@ "edges": 18, "faces": 8, "vertices": 12, - "volume_mm3": 57000.0 + "volume_mm3": 57000.000000000015 }, - "seconds": 0.012571045, + "seconds": 0.013224396, "status": "pass" }, "ladder/02-booleans/021-holes-touching-at-a-point": { "measured": { - "area_mm2": 9742.477564676688, + "area_mm2": 9742.477796064206, "body_count": 1, "edges": 17, "faces": 8, "vertices": 10, - "volume_mm3": 44858.40494270982 + "volume_mm3": 44858.40734615085 }, - "seconds": 0.0549919, + "seconds": 0.131438324, "status": "pass" }, "ladder/02-booleans/022-cylinder-grazing-a-hole-edge": { "measured": { - "area_mm2": 576.0597799448259, + "area_mm2": 576.0597790152967, "body_count": 1, "edges": 24, "faces": 11, "vertices": 16, - "volume_mm3": 700.1694600993085 + "volume_mm3": 700.1694662123119 }, - "seconds": 0.060724347, + "seconds": 0.087311782, "status": "pass" }, "ladder/02-booleans/023-lips-1e-4-off-the-walls-joined": { "measured": { - "area_mm2": 1610.939957683726, + "area_mm2": 1610.9399495961893, "body_count": 1, "edges": 54, "faces": 22, "vertices": 34, - "volume_mm3": 769.4693261952389 + "volume_mm3": 769.4689746947504 }, - "seconds": 0.132173954, + "seconds": 0.201061748, "status": "pass" }, "ladder/02-booleans/024-wall-halves-merged-into-a-flange": { "measured": { - "area_mm2": 9676.104640800102, + "area_mm2": 9676.105373078572, "body_count": 1, "edges": 9, "faces": 6, "vertices": 6, - "volume_mm3": 37875.03682260403 + "volume_mm3": 37875.04103167573 }, - "seconds": 0.236700862, + "seconds": 0.18248673, "status": "pass" }, "ladder/02-booleans/025-flush-chord-layers-joined": { "measured": { - "area_mm2": 19848.963867303115, + "area_mm2": 19848.964251059107, "body_count": 1, "edges": 86, "faces": 30, "vertices": 52, - "volume_mm3": 24340.93465191528 + "volume_mm3": 24340.93580402055 }, - "seconds": 1.355214364, + "seconds": 1.558780498, "status": "pass" }, "ladder/03-analytic-profiles/001-extrude-rect-with-arc-end": { "measured": { - "area_mm2": 10513.274682103463, + "area_mm2": 10513.274122905643, "body_count": 1, "edges": 12, "faces": 6, "vertices": 8, - "volume_mm3": 60566.37574264513 + "volume_mm3": 60566.37061462199 }, - "seconds": 0.013373513, + "seconds": 0.014670293, "status": "pass" }, "ladder/03-analytic-profiles/002-extrude-annulus": { "measured": { - "area_mm2": 4712.3888135105635, + "area_mm2": 4712.388980399636, "body_count": 1, "edges": 6, "faces": 4, "vertices": 4, - "volume_mm3": 14137.165496409769 + "volume_mm3": 14137.166941179268 }, - "seconds": 0.05877949, + "seconds": 0.024407565, "status": "pass" }, "ladder/03-analytic-profiles/003-extrude-tapered-circle": { "measured": { - "area_mm2": 1679.0714571133199, + "area_mm2": 1679.071423483643, "body_count": 1, "edges": 3, "faces": 3, "vertices": 2, - "volume_mm3": 5247.894417424099 + "volume_mm3": 5247.894567674972 }, - "seconds": 0.050194162, + "seconds": 0.024023754, "status": "pass" }, "ladder/03-analytic-profiles/004-revolve-full-off-axis": { "measured": { - "area_mm2": 7539.82227780291, + "area_mm2": 7539.822368642646, "body_count": 1, "edges": 6, "faces": 4, "vertices": 4, - "volume_mm3": 28274.33099281954 + "volume_mm3": 28274.333882357845 }, - "seconds": 0.064997043, + "seconds": 0.041726832, "status": "pass" }, "ladder/03-analytic-profiles/005-revolve-touching-axis-hemisphere": { "measured": { - "area_mm2": 3769.911189319725, + "area_mm2": 3769.9111843164546, "body_count": 1, "edges": 2, "faces": 2, "vertices": 2, - "volume_mm3": 16755.16137194915 + "volume_mm3": 16755.160819221863 }, - "seconds": 0.069528252, + "seconds": 0.030852929, "status": "pass" }, "ladder/03-analytic-profiles/006-revolve-partial-90": { "measured": { - "area_mm2": 1142.4774823972846, + "area_mm2": 1142.4777960589026, "body_count": 1, "edges": 12, "faces": 6, "vertices": 8, - "volume_mm3": 2356.1929112075295 + "volume_mm3": 2356.1944900996414 }, - "seconds": 0.015891639, + "seconds": 0.010035898, "status": "pass" }, "ladder/03-analytic-profiles/007-revolve-180-touching-axis": { "measured": { - "area_mm2": 2249.3361006094165, + "area_mm2": 2249.336143135075, "body_count": 1, "edges": 6, "faces": 4, "vertices": 4, - "volume_mm3": 7068.582941859537 + "volume_mm3": 7068.583470572731 }, - "seconds": 0.014438734, + "seconds": 0.010468652, "status": "pass" }, "ladder/03-analytic-profiles/008-extrude-slot": { "measured": { - "area_mm2": 3656.63741233849, + "area_mm2": 3656.6370614755815, "body_count": 1, "edges": 12, "faces": 6, "vertices": 8, - "volume_mm3": 11141.594404248584 + "volume_mm3": 11141.592653770153 }, - "seconds": 0.023430736, + "seconds": 0.011493074, "status": "pass" }, "ladder/03-analytic-profiles/009-part-boss-and-slot": { "measured": { - "area_mm2": 12164.778448487314, + "area_mm2": 12164.778684210796, "body_count": 1, "edges": 33, "faces": 14, "vertices": 22, - "volume_mm3": 55605.309277598055 + "volume_mm3": 55605.309649084316 }, - "seconds": 0.123637859, + "seconds": 0.060111465, "status": "pass" }, "ladder/03-analytic-profiles/010-revolve-horn-torus-270": { "measured": { - "area_mm2": 7211.92921002673, + "area_mm2": 7211.928814696445, "body_count": 1, "edges": 6, "faces": 4, "vertices": 4, - "volume_mm3": 28932.185072957283 + "volume_mm3": 28932.17610036333 }, - "seconds": 0.136088136, + "seconds": 0.060332475, "status": "pass" }, "ladder/04-spline-profiles/001-extrude-bezier-arch": { "measured": { - "area_mm2": 2766.836543476887, + "area_mm2": 2766.836554300913, "body_count": 1, "edges": 12, "faces": 6, "vertices": 8, - "volume_mm3": 8200.0 + "volume_mm3": 8200.000000000002 }, - "seconds": 0.015382084, + "seconds": 0.019786321, "status": "pass" }, "ladder/04-spline-profiles/002-revolve-bezier-profile": { "measured": { - "area_mm2": 5856.9826422553115, + "area_mm2": 5856.982454483079, "body_count": 1, "edges": 3, "faces": 3, "vertices": 2, - "volume_mm3": 34131.153548347604 + "volume_mm3": 34131.16018617699 }, - "seconds": 0.083683818, + "seconds": 0.069129293, "status": "pass" }, "ladder/04-spline-profiles/003-pipe-along-bezier": { "measured": { - "area_mm2": 605.9576565517693, + "area_mm2": 605.9576227938425, "body_count": 1, "edges": 3, "faces": 3, "vertices": 2, - "volume_mm3": 580.8255293341258 + "volume_mm3": 580.8248814439473 }, - "seconds": 0.141310005, + "seconds": 0.110451419, "status": "pass" }, "ladder/04-spline-profiles/004-sweep-square-along-bezier": { "measured": { - "area_mm2": 771.5291970478809, + "area_mm2": 771.529196914377, "body_count": 1, "edges": 12, "faces": 6, "vertices": 8, - "volume_mm3": 739.5292097504819 + "volume_mm3": 739.5292098648478 }, - "seconds": 0.041785332, + "seconds": 0.038770414, "status": "pass" }, "ladder/04-spline-profiles/005-loft-square-frustum": { "measured": { - "area_mm2": 5794.733192202055, + "area_mm2": 5794.733192202057, "body_count": 1, "edges": 12, "faces": 6, "vertices": 8, - "volume_mm3": 28000.000000000007 + "volume_mm3": 28000.0 }, - "seconds": 0.01135179, + "seconds": 0.010337564, "status": "pass" }, "ladder/04-spline-profiles/006-loft-circle-frustum": { "measured": { - "area_mm2": 4551.172885600089, + "area_mm2": 4551.172806545445, "body_count": 1, "edges": 3, "faces": 3, "vertices": 2, - "volume_mm3": 21991.14802951055 + "volume_mm3": 21991.148575014995 }, - "seconds": 0.058913074, + "seconds": 0.036088144, "status": "pass" }, "ladder/04-spline-profiles/007-loft-three-circles": { "measured": { - "area_mm2": 6453.967221806411, + "area_mm2": 6453.967215410327, "body_count": 1, "edges": 3, "faces": 3, "vertices": 2, - "volume_mm3": 23457.221256199402 + "volume_mm3": 23457.225146359866 }, - "seconds": 0.072000761, + "seconds": 0.036542851, "status": "pass" }, "ladder/04-spline-profiles/008-loft-square-to-circle": { "measured": { - "area_mm2": 5454.34068438542, + "area_mm2": 5454.34057365124, "body_count": 1, "edges": 12, "faces": 6, "vertices": 8, - "volume_mm3": 26310.54362092466 + "volume_mm3": 26310.543837045305 }, - "seconds": 0.027190644, + "seconds": 0.021237898, "status": "pass" }, "ladder/04-spline-profiles/009-extrude-periodic-fit-spline": { "measured": { - "area_mm2": 3698.6023993383496, + "area_mm2": 3698.6024347856, "body_count": 1, "edges": 18, "faces": 8, "vertices": 12, - "volume_mm3": 12281.011858436344 + "volume_mm3": 12281.012021749822 }, - "seconds": 0.035405874, + "seconds": 0.030974162, "status": "pass" }, "ladder/04-spline-profiles/010-part-bezier-window": { "measured": { - "area_mm2": 12389.018284526814, + "area_mm2": 12389.018511230937, "body_count": 1, "edges": 39, "faces": 16, "vertices": 26, - "volume_mm3": 54273.309277598055 + "volume_mm3": 54273.309649084316 }, - "seconds": 0.130843499, + "seconds": 0.09852879, "status": "pass" }, "ladder/04-spline-profiles/011-crossing-pleated-loft-skins-joined": { "measured": { - "area_mm2": 121420.35300591686, + "area_mm2": 121420.3527659641, "body_count": 1, "edges": 1096, "faces": 388, "vertices": 584, - "volume_mm3": 44443.494125231206 + "volume_mm3": 44443.49783386934 }, - "seconds": 1.375785917, + "seconds": 1.323453666, "status": "pass" }, "ladder/04-spline-profiles/012-loft-ribs-joined-to-a-rounded-pad": { "measured": { - "area_mm2": 13275.843011957519, + "area_mm2": 13275.842713594542, "body_count": 1, "edges": 86, "faces": 31, "vertices": 57, - "volume_mm3": 100193.008857701 + "volume_mm3": 100193.003036287 }, - "seconds": 0.681137226, + "seconds": 0.462630738, "status": "pass" }, "ladder/05-holes-and-taps/001-simple-through": { "measured": { - "area_mm2": 9271.23888918968, + "area_mm2": 9271.238898031577, "body_count": 1, "edges": 15, "faces": 7, "vertices": 10, - "volume_mm3": 46429.20345247036 + "volume_mm3": 46429.203673141754 }, - "seconds": 0.032915588, + "seconds": 0.023289285, "status": "pass" }, "ladder/05-holes-and-taps/002-simple-blind-flat": { "measured": { - "area_mm2": 9114.159273842968, + "area_mm2": 9114.159265368047, "body_count": 1, "edges": 15, "faces": 8, "vertices": 10, - "volume_mm3": 47214.60167821204 + "volume_mm3": 47214.60183659343 }, - "seconds": 0.045874139, + "seconds": 0.028718021, "status": "pass" }, "ladder/05-holes-and-taps/003-drilled-blind-118": { "measured": { - "area_mm2": 9127.246594228827, + "area_mm2": 9127.24662177053, "body_count": 1, "edges": 17, "faces": 8, "vertices": 12, - "volume_mm3": 47135.94953558977 + "volume_mm3": 47135.94936549673 }, - "seconds": 0.044029664, + "seconds": 0.029737147, "status": "pass" }, "ladder/05-holes-and-taps/004-counterbore": { "measured": { - "area_mm2": 9234.733473850809, + "area_mm2": 9234.733591415143, "body_count": 1, "edges": 18, "faces": 9, "vertices": 12, - "volume_mm3": 46926.50439234107 + "volume_mm3": 46926.50522394999 }, - "seconds": 0.050545684, + "seconds": 0.048951001, "status": "pass" }, "ladder/05-holes-and-taps/005-countersink": { "measured": { - "area_mm2": 9122.958530910642, + "area_mm2": 9122.958560242205, "body_count": 1, "edges": 18, "faces": 8, "vertices": 12, - "volume_mm3": 47219.57154291447 + "volume_mm3": 47219.57183623009 }, - "seconds": 0.088605524, + "seconds": 0.058968434, "status": "pass" }, "ladder/05-holes-and-taps/006-tapped-m6-through": { "measured": { - "area_mm2": 9074.889289958897, + "area_mm2": 9074.889357183944, "body_count": 1, "edges": 15, "faces": 7, "vertices": 10, - "volume_mm3": 47607.30072936878 + "volume_mm3": 47607.30091826685 }, - "seconds": 0.017341919, + "seconds": 0.025773972, "status": "pass" }, "ladder/05-holes-and-taps/007-tapped-m8-blind": { "measured": { - "area_mm2": 9062.405544647674, + "area_mm2": 9062.405554141464, "body_count": 1, "edges": 17, "faces": 8, "vertices": 12, - "volume_mm3": 47539.467162202374 + "volume_mm3": 47539.467413300634 }, - "seconds": 0.057993293, + "seconds": 0.031634357, "status": "pass" }, "ladder/05-holes-and-taps/008-tapped-m5-into-curved-face": { "measured": { - "area_mm2": 10551.678983923912, + "area_mm2": 10551.679156127118, "body_count": 1, "edges": 6, "faces": 4, "vertices": 4, - "volume_mm3": 74844.80869901458 + "volume_mm3": 74844.81205246755 }, - "seconds": 0.130425609, + "seconds": 0.134095986, "status": "pass" }, "ladder/05-holes-and-taps/009-hole-0.5-from-edge": { "measured": { - "area_mm2": 9271.238661980013, + "area_mm2": 9271.238898086272, "body_count": 1, "edges": 15, "faces": 7, "vertices": 10, - "volume_mm3": 46429.20147858148 + "volume_mm3": 46429.203673578886 }, - "seconds": 0.034376012, + "seconds": 0.036219136, "status": "pass" }, "ladder/05-holes-and-taps/010-hole-tangent-to-end-face": { "measured": { - "area_mm2": 9271.238824131646, + "area_mm2": 9271.238898072632, "body_count": 1, "edges": 17, "faces": 7, "vertices": 10, - "volume_mm3": 46429.202650315056 + "volume_mm3": 46429.20367342494 }, - "seconds": 0.035765667, + "seconds": 0.024374668, "status": "pass" }, "ladder/05-holes-and-taps/011-crossing-holes-steinmetz": { "measured": { - "area_mm2": 9970.796002655847, + "area_mm2": 9970.796457943112, "body_count": 1, "edges": 27, "faces": 10, "vertices": 17, - "volume_mm3": 43954.275881084504 + "volume_mm3": 43954.27736739679 }, - "seconds": 0.102376271, + "seconds": 0.078283505, "status": "pass" }, "ladder/05-holes-and-taps/012-crossing-tapped-holes-offset": { "measured": { - "area_mm2": 9586.62063280522, + "area_mm2": 9586.620653596627, "body_count": 1, "edges": 21, "faces": 8, "vertices": 14, - "volume_mm3": 46870.21851307568 + "volume_mm3": 46870.21907684049 }, - "seconds": 0.112783624, + "seconds": 0.127043113, "status": "pass" }, "ladder/05-holes-and-taps/013-part-holes": { "measured": { - "area_mm2": 13115.21289450834, + "area_mm2": 13115.213361131606, "body_count": 1, "edges": 48, "faces": 20, "vertices": 32, - "volume_mm3": 53470.419311175334 + "volume_mm3": 53470.420668720755 }, - "seconds": 0.279797849, + "seconds": 0.256105118, + "status": "pass" + }, + "ladder/05-holes-and-taps/014-tapped-1-4-20-unc-through": { + "measured": { + "area_mm2": 9079.83876494227, + "body_count": 1, + "edges": 15, + "faces": 7, + "vertices": 10, + "volume_mm3": 47590.57022271537 + }, + "seconds": 0.040846202, + "status": "pass" + }, + "ladder/05-holes-and-taps/015-tapped-1-4-28-unf-blind": { + "measured": { + "area_mm2": 8971.216799624277, + "body_count": 1, + "edges": 15, + "faces": 8, + "vertices": 10, + "volume_mm3": 47766.71711050138 + }, + "seconds": 0.033597905, + "status": "pass" + }, + "ladder/05-holes-and-taps/016-tapped-rc-1-2-through": { + "measured": { + "area_mm2": 9419.270743873743, + "body_count": 1, + "edges": 15, + "faces": 7, + "vertices": 10, + "volume_mm3": 43134.30129811671 + }, + "seconds": 0.028470867, + "status": "pass" + }, + "ladder/05-holes-and-taps/017-tapped-1-4-npt-through": { + "measured": { + "area_mm2": 9296.807535241649, + "body_count": 1, + "edges": 15, + "faces": 7, + "vertices": 10, + "volume_mm3": 46150.81929413248 + }, + "seconds": 0.027692751, "status": "pass" }, "ladder/06-threads/001-external-m10-full": { "measured": { - "area_mm2": 1528.998539117189, + "area_mm2": 1528.9985505873308, "body_count": 1, "edges": 252, "faces": 86, "vertices": 168, - "volume_mm3": 1954.2449542776249 + "volume_mm3": 1954.2452430647338 }, - "seconds": 2.12811212, + "seconds": 1.689697866, "status": "pass" }, "ladder/06-threads/002-external-m10x1-fine": { "measured": { - "area_mm2": 1581.5205208524822, + "area_mm2": 1581.5205078417318, "body_count": 1, "edges": 372, "faces": 126, "vertices": 248, - "volume_mm3": 2081.899948214229 + "volume_mm3": 2081.9002076225224 }, - "seconds": 2.625646547, + "seconds": 2.534402291, "status": "pass" }, "ladder/06-threads/003-external-m10-partial-length": { "measured": { - "area_mm2": 1314.9630494174853, + "area_mm2": 1314.9630292496186, "body_count": 1, "edges": 132, "faces": 46, "vertices": 88, - "volume_mm3": 2155.2201253347134 + "volume_mm3": 2155.219871329352 }, - "seconds": 1.088309306, + "seconds": 0.85471988, "status": "pass" }, "ladder/06-threads/004-external-m10-to-shoulder": { "measured": { - "area_mm2": 2047.0228358498966, + "area_mm2": 2047.0229459058442, "body_count": 1, "edges": 213, "faces": 74, "vertices": 142, - "volume_mm3": 3648.5291584977404 + "volume_mm3": 3648.5299273785768 }, - "seconds": 2.143927615, + "seconds": 1.403150704, "status": "pass" }, "ladder/06-threads/005-internal-m10-through": { "measured": { - "area_mm2": 4978.101312600045, + "area_mm2": 4978.101312130874, "body_count": 1, "edges": 186, "faces": 64, "vertices": 124, - "volume_mm3": 16688.181727949996 + "volume_mm3": 16688.18167960171 }, - "seconds": 1.871629553, + "seconds": 1.161250254, "status": "pass" }, "ladder/06-threads/006-external-m10-into-chamfer": { "measured": { - "area_mm2": 1508.108891537519, + "area_mm2": 1508.108885047644, "body_count": 1, "edges": 252, "faces": 86, "vertices": 168, - "volume_mm3": 1948.6927071991595 + "volume_mm3": 1948.6927173387744 }, - "seconds": 1.919749317, + "seconds": 1.712647333, "status": "pass" }, "ladder/06-threads/007-external-m10-at-filleted-shoulder": { "measured": { - "area_mm2": 2018.7759360368239, + "area_mm2": 2018.7759934430132, "body_count": 1, "edges": 203, "faces": 71, "vertices": 135, - "volume_mm3": 3668.9704031534766 + "volume_mm3": 3668.971306096839 }, - "seconds": 1.964063929, + "seconds": 1.437495352, "status": "pass" }, "ladder/06-threads/008-multi-start-thread": { "measured": { - "area_mm2": 1532.2853732955155, + "area_mm2": 1532.2853638958047, "body_count": 1, "edges": 264, "faces": 90, "vertices": 176, - "volume_mm3": 1954.245227235153 + "volume_mm3": 1954.2452070488298 }, - "seconds": 3.706373342, + "seconds": 3.07364605, "status": "pass" }, "ladder/06-threads/009-thread-runout-length": { "measured": { - "area_mm2": 2023.0564304737718, + "area_mm2": 2023.0586516883154, "body_count": 1, "edges": 214, "faces": 77, "vertices": 140, - "volume_mm3": 3673.436434421382 + "volume_mm3": 3673.4420095262312 }, - "seconds": 2.202591408, + "seconds": 1.43947478, "status": "pass" }, "ladder/06-threads/010-part-threaded-boss": { "measured": { - "area_mm2": 13318.76579174848, + "area_mm2": 13318.766396825838, "body_count": 1, "edges": 111, "faces": 41, "vertices": 74, - "volume_mm3": 53208.187629619366 + "volume_mm3": 53208.19063020747 }, - "seconds": 1.462190101, + "seconds": 0.774176125, "status": "pass" }, "ladder/06-threads/011-external-tr20x4": { "measured": { - "area_mm2": 3008.5109289311276, + "area_mm2": 3008.510981905842, "body_count": 1, "edges": 84, "faces": 30, "vertices": 56, - "volume_mm3": 6065.464162834598 + "volume_mm3": 6065.464859905014 }, - "seconds": 0.955700965, + "seconds": 0.647622949, "status": "pass" }, "ladder/06-threads/012-external-acme-3-4-6": { "measured": { - "area_mm2": 2943.7315602592976, + "area_mm2": 2943.7315979562527, "body_count": 1, "edges": 84, "faces": 30, "vertices": 56, - "volume_mm3": 5689.271052485101 + "volume_mm3": 5689.271646531861 }, - "seconds": 0.83862527, + "seconds": 0.634242439, "status": "pass" }, "ladder/06-threads/013-external-s20x4": { "measured": { - "area_mm2": 3376.925753383339, + "area_mm2": 3376.925747881656, "body_count": 1, "edges": 87, "faces": 31, "vertices": 58, - "volume_mm3": 5454.578654614414 + "volume_mm3": 5454.5786474564175 }, - "seconds": 0.945493006, + "seconds": 0.664539235, "status": "pass" }, "ladder/06-threads/014-external-buttress-asme-1.5-8": { "measured": { - "area_mm2": 5916.2769083388575, + "area_mm2": 5916.276939068178, "body_count": 1, "edges": 87, "faces": 31, "vertices": 58, - "volume_mm3": 19631.080967830752 + "volume_mm3": 19631.08121878226 }, - "seconds": 1.347177632, + "seconds": 0.715733395, "status": "pass" }, "ladder/06-threads/015-internal-tr20x4-nut": { "measured": { - "area_mm2": 9076.623586009078, + "area_mm2": 9076.623628295467, "body_count": 1, "edges": 96, "faces": 34, "vertices": 64, - "volume_mm3": 32097.519799715614 + "volume_mm3": 32097.52028280751 }, - "seconds": 1.199732826, + "seconds": 0.69492115, "status": "pass" }, "ladder/06-threads/016-external-m10-left-hand": { "measured": { - "area_mm2": 1528.998538562401, + "area_mm2": 1528.9985498697533, "body_count": 1, "edges": 252, "faces": 86, "vertices": 168, - "volume_mm3": 1954.2449602433921 + "volume_mm3": 1954.2452430252965 }, - "seconds": 1.689990672, + "seconds": 1.625940272, "status": "pass" }, "ladder/06-threads/017-external-m10-chamfered-tip": { "measured": { - "area_mm2": 1492.9858770288445, + "area_mm2": 1492.9858778452715, "body_count": 1, "edges": 258, "faces": 88, "vertices": 172, - "volume_mm3": 1945.3543465077544 + "volume_mm3": 1945.3544847128642 }, - "seconds": 3.048846709, + "seconds": 3.340196035, "status": "pass" }, "ladder/06-threads/018-external-m10-both-hands": { "measured": { - "area_mm2": 1418.5862919067272, + "area_mm2": 1418.5863348764333, "body_count": 1, "edges": 486, "faces": 204, "vertices": 324, - "volume_mm3": 1804.9238443319966 + "volume_mm3": 1804.9241321476034 }, - "seconds": 7.75550865, + "seconds": 6.515191917, "status": "pass" }, "ladder/06-threads/019-external-tr40x14-p7-two-start": { "measured": { - "area_mm2": 11049.102083229865, + "area_mm2": 11049.102020992848, "body_count": 1, "edges": 96, "faces": 34, "vertices": 64, - "volume_mm3": 43534.483316522135 + "volume_mm3": 43534.4823482271 }, - "seconds": 1.830871199, + "seconds": 1.195948426, + "status": "pass" + }, + "ladder/06-threads/020-external-g-1-2": { + "measured": { + "area_mm2": 1819.8329652683872, + "body_count": 1, + "edges": 84, + "faces": 30, + "vertices": 56, + "volume_mm3": 3355.922715408856 + }, + "seconds": 0.694554731, + "status": "pass" + }, + "ladder/06-threads/021-internal-rp-1-2": { + "measured": { + "area_mm2": 5528.399867579505, + "body_count": 1, + "edges": 96, + "faces": 34, + "vertices": 64, + "volume_mm3": 14061.220084540242 + }, + "seconds": 0.684860518, + "status": "pass" + }, + "ladder/06-threads/022-external-r-1-2-taper": { + "measured": { + "area_mm2": 2892.93092831753, + "body_count": 1, + "edges": 122, + "faces": 52, + "vertices": 72, + "volume_mm3": 8233.025967847225 + }, + "seconds": 1.3442539230000001, + "status": "pass" + }, + "ladder/06-threads/023-external-1-2-npt": { + "measured": { + "area_mm2": 3317.0130177354845, + "body_count": 1, + "edges": 144, + "faces": 63, + "vertices": 83, + "volume_mm3": 8227.34635260655 + }, + "seconds": 1.619294352, + "status": "fail" + }, + "ladder/06-threads/024-internal-rc-1-2-taper": { + "measured": { + "area_mm2": 6149.480584088805, + "body_count": 1, + "edges": 130, + "faces": 55, + "vertices": 77, + "volume_mm3": 17217.301948586937 + }, + "seconds": 1.382961955, + "status": "pass" + }, + "ladder/06-threads/025-external-s20x4-steep-flank-end-to-shoulder": { + "measured": { + "area_mm2": 5883.04322341494, + "body_count": 1, + "edges": 102, + "faces": 37, + "vertices": 68, + "volume_mm3": 13986.200402957777 + }, + "seconds": 0.776015625, + "status": "pass" + }, + "ladder/06-threads/026-external-s20x4-steep-flank-start-to-shoulder": { + "measured": { + "area_mm2": 5793.40788472209, + "body_count": 1, + "edges": 99, + "faces": 36, + "vertices": 66, + "volume_mm3": 14054.201948388452 + }, + "seconds": 0.745645116, + "status": "pass" + }, + "ladder/06-threads/027-external-m10-chamfered-start": { + "measured": { + "area_mm2": 1510.9922210921723, + "body_count": 1, + "edges": 255, + "faces": 87, + "vertices": 170, + "volume_mm3": 1949.7999227857772 + }, + "seconds": 2.525970287, + "status": "pass" + }, + "ladder/06-threads/028-external-tr20x4-chamfer-30-deg-2.5-deep": { + "measured": { + "area_mm2": 2626.5766115173265, + "body_count": 1, + "edges": 90, + "faces": 32, + "vertices": 60, + "volume_mm3": 5769.1287901433325 + }, + "seconds": 1.310968707, + "status": "pass" + }, + "ladder/06-threads/029-external-tr20x4-chamfer-needs-depth": { + "seconds": 0.656914247, + "status": "pass" + }, + "ladder/06-threads/030-square-thread-refused": { + "seconds": 0.017698501, "status": "pass" }, "ladder/07-fillets/001-single-edge-r5": { "measured": { - "area_mm2": 8660.508890351646, + "area_mm2": 8660.508806219164, "body_count": 1, "edges": 15, "faces": 7, "vertices": 10, - "volume_mm3": 47678.09530101598 + "volume_mm3": 47678.09724513767 }, - "seconds": 0.016262088, + "seconds": 0.008276702, "status": "pass" }, "ladder/07-fillets/002-four-vertical-edges-r5": { "measured": { - "area_mm2": 8585.398552475748, + "area_mm2": 8585.398163537797, "body_count": 1, "edges": 24, "faces": 10, "vertices": 16, - "volume_mm3": 47570.79943563683 + "volume_mm3": 47570.796327937685 }, - "seconds": 0.026656146, + "seconds": 0.016656302, "status": "pass" }, "ladder/07-fillets/003-tangent-chain-r3": { "measured": { - "area_mm2": 8334.925890321756, + "area_mm2": 8334.925469219002, "body_count": 1, "edges": 40, "faces": 18, "vertices": 24, - "volume_mm3": 47209.22370148293 + "volume_mm3": 47209.224453421455 }, - "seconds": 0.080296774, + "seconds": 0.075259768, "status": "pass" }, "ladder/07-fillets/004-convex-and-concave-r5": { "measured": { - "area_mm2": 4514.159503196192, + "area_mm2": 4514.159265383247, "body_count": 1, "edges": 24, "faces": 10, "vertices": 16, - "volume_mm3": 14000.002049410516 + "volume_mm3": 14000.000000143285 }, - "seconds": 0.020970963, + "seconds": 0.025016285, "status": "pass" }, "ladder/07-fillets/005-variable-r5-to-r1": { "measured": { - "area_mm2": 8717.217924043853, + "area_mm2": 8717.217924050128, "body_count": 1, "edges": 15, "faces": 7, "vertices": 10, - "volume_mm3": 47866.93985730924 + "volume_mm3": 47866.939865273875 }, - "seconds": 0.020180862, + "seconds": 0.020330867, "status": "pass" }, "ladder/07-fillets/006-variable-r5-to-zero": { "measured": { - "area_mm2": 8730.326099374339, + "area_mm2": 8730.326099306438, "body_count": 1, "edges": 14, "faces": 7, "vertices": 9, - "volume_mm3": 47892.693434961286 + "volume_mm3": 47892.69344121365 }, - "seconds": 0.009438084, + "seconds": 0.01733797, "status": "pass" }, "ladder/07-fillets/007-variable-r5-to-1e-3": { "measured": { - "area_mm2": 8730.313207916415, + "area_mm2": 8730.313207922401, "body_count": 1, "edges": 15, "faces": 7, "vertices": 10, - "volume_mm3": 47892.67196922709 + "volume_mm3": 47892.671975647136 }, - "seconds": 0.018291972, + "seconds": 0.009474805, "status": "pass" }, "ladder/07-fillets/008-constant-r1e-3": { "measured": { - "area_mm2": 8799.9742473454, + "area_mm2": 8799.974247350745, "body_count": 1, "edges": 15, "faces": 7, "vertices": 10, - "volume_mm3": 47999.99997963964 + "volume_mm3": 47999.99998708315 }, - "seconds": 0.023888675, + "seconds": 0.018851642, "status": "pass" }, "ladder/07-fillets/009-corner-three-equal-r5": { "measured": { - "area_mm2": 8522.843213284448, + "area_mm2": 8522.842842060318, "body_count": 1, "edges": 21, "faces": 10, "vertices": 13, - "volume_mm3": 47377.122731304844 + "volume_mm3": 47377.12002653465 }, - "seconds": 0.022659899, + "seconds": 0.031523042, "status": "pass" }, "ladder/07-fillets/010-corner-unequal-r7-r3": { "measured": { - "area_mm2": 8589.124659133073, + "area_mm2": 8589.124242980084, "body_count": 1, "edges": 22, "faces": 10, "vertices": 14, - "volume_mm3": 47604.38618238413 + "volume_mm3": 47604.38434765742 }, - "seconds": 0.037027754, + "seconds": 0.024238201, "status": "pass" }, "ladder/07-fillets/011-chain-ending-at-corner": { "measured": { - "area_mm2": 8571.128308024523, + "area_mm2": 8571.12825048213, "body_count": 1, "edges": 17, "faces": 8, "vertices": 11, - "volume_mm3": 47475.477375283306 + "volume_mm3": 47475.4793194927 }, - "seconds": 0.018757607, + "seconds": 0.011257216, "status": "pass" }, "ladder/07-fillets/012-variable-into-rounded-corner": { "measured": { - "area_mm2": 8665.870632567001, + "area_mm2": 8665.870097489847, "body_count": 1, "edges": 18, "faces": 8, "vertices": 12, - "volume_mm3": 47754.87775109653 + "volume_mm3": 47754.87240844197 }, - "seconds": 0.059642694, + "seconds": 0.050985104, "status": "pass" }, "ladder/07-fillets/013-corner-setback": { "measured": { - "area_mm2": 8509.311157473603, + "area_mm2": 8509.310862681297, "body_count": 1, "edges": 36, "faces": 15, "vertices": 23, - "volume_mm3": 47325.93695835596 + "volume_mm3": 47325.93514010273 }, - "seconds": 0.116555677, + "seconds": 0.062429472, "status": "pass" }, "ladder/07-fillets/014-curved-edge-r2": { "measured": { - "area_mm2": 1829.240960227803, + "area_mm2": 1829.2409621331146, "body_count": 1, "edges": 5, "faces": 4, "vertices": 3, - "volume_mm3": 6231.659066701741 + "volume_mm3": 6231.659467501777 }, - "seconds": 0.078144443, + "seconds": 0.047797086, "status": "pass" }, "ladder/07-fillets/015-corner-g2-patch": { "measured": { - "area_mm2": 8520.38925544218, + "area_mm2": 8520.388941406904, "body_count": 1, "edges": 24, "faces": 10, "vertices": 16, - "volume_mm3": 47370.10741440046 + "volume_mm3": 47370.10556764398 }, - "seconds": 2.184099933, - "status": "pass" - }, - "ladder/07-fillets/019-concave-corner-g2-patch": { - "measured": { - "area_mm2": 8702.800595617835, - "body_count": 1, - "edges": 33, - "faces": 13, - "vertices": 22, - "volume_mm3": 44254.3419135911 - }, - "seconds": 2.217877403, + "seconds": 2.172589317, "status": "pass" }, "ladder/07-fillets/016-corner-three-sequential-r5-r3-r7": { - "seconds": 0.045599545, + "seconds": 0.053107612, "status": "pass" }, "ladder/07-fillets/017-part-rounds": { "measured": { - "area_mm2": 12905.663516135399, + "area_mm2": 12905.663645271128, "body_count": 1, "edges": 59, "faces": 24, "vertices": 39, - "volume_mm3": 53151.0192291965 + "volume_mm3": 53151.022090002196 }, - "seconds": 0.689812087, + "seconds": 0.479855299, "status": "pass" }, "ladder/07-fillets/018-corner-three-sequential-r5-r3-r2": { "measured": { - "area_mm2": 8591.675261485441, + "area_mm2": 8591.675008996122, "body_count": 1, "edges": 24, "faces": 11, "vertices": 15, - "volume_mm3": 47589.770109309655 + "volume_mm3": 47589.770467263734 }, - "seconds": 0.080235318, + "seconds": 0.06135609, + "status": "pass" + }, + "ladder/07-fillets/019-concave-corner-g2-patch": { + "measured": { + "area_mm2": 8702.800522231322, + "body_count": 1, + "edges": 33, + "faces": 13, + "vertices": 22, + "volume_mm3": 44254.34116127434 + }, + "seconds": 2.083591798, "status": "pass" }, "ladder/08-chamfers/001-equal-5": { "measured": { - "area_mm2": 8599.264068703942, + "area_mm2": 8599.26406871193, "body_count": 1, "edges": 15, "faces": 7, "vertices": 10, - "volume_mm3": 47250.000000000015 + "volume_mm3": 47249.99999999999 }, - "seconds": 0.011586527, + "seconds": 0.011874723, "status": "pass" }, "ladder/08-chamfers/002-two-distances-5-3": { "measured": { - "area_mm2": 8654.857113680613, + "area_mm2": 8654.857113690718, "body_count": 1, "edges": 15, "faces": 7, "vertices": 10, - "volume_mm3": 47550.00000001157 + "volume_mm3": 47549.99999999999 }, - "seconds": 0.023819586, + "seconds": 0.012467878, "status": "pass" }, "ladder/08-chamfers/003-distance-angle-5-30": { "measured": { - "area_mm2": 8658.771324025132, + "area_mm2": 8658.771324027146, "body_count": 1, "edges": 15, "faces": 7, "vertices": 10, - "volume_mm3": 47566.987298072774 + "volume_mm3": 47566.98729810778 }, - "seconds": 0.011581759, + "seconds": 0.011893235, "status": "pass" }, "ladder/08-chamfers/004-corner-three-equal-3": { @@ -1285,7 +1449,7 @@ "vertices": 14, "volume_mm3": 47480.25 }, - "seconds": 0.009050177, + "seconds": 0.018004693, "status": "pass" }, "ladder/08-chamfers/005-corner-two-mitred-3": { @@ -1295,69 +1459,69 @@ "edges": 17, "faces": 8, "vertices": 11, - "volume_mm3": 47559.0 + "volume_mm3": 47558.99999999999 }, - "seconds": 0.008041451, + "seconds": 0.014861284, "status": "pass" }, "ladder/08-chamfers/006-curved-edge-2": { "measured": { - "area_mm2": 1806.138314620597, + "area_mm2": 1806.1383362576198, "body_count": 1, "edges": 5, "faces": 4, "vertices": 3, - "volume_mm3": 6165.898978570243 + "volume_mm3": 6165.899181475064 }, - "seconds": 0.069695981, + "seconds": 0.059633056, "status": "pass" }, "ladder/08-chamfers/007-chamfer-then-fillets": { "measured": { - "area_mm2": 8652.794170649633, + "area_mm2": 8652.79420663156, "body_count": 1, "edges": 21, "faces": 9, "vertices": 14, - "volume_mm3": 47700.04681392183 + "volume_mm3": 47700.04718731957 }, - "seconds": 0.029079455, + "seconds": 0.031264128, "status": "pass" }, "ladder/08-chamfers/008-part-chamfers": { "measured": { - "area_mm2": 12800.622976693989, + "area_mm2": 12800.623144562962, "body_count": 1, "edges": 64, "faces": 26, "vertices": 42, - "volume_mm3": 53006.93294467868 + "volume_mm3": 53006.936546270575 }, - "seconds": 0.749081818, + "seconds": 0.681389055, "status": "pass" }, "ladder/09-shells-and-offsets/001-box-open-top-t2": { "measured": { - "area_mm2": 12112.000000000002, + "area_mm2": 12112.0, "body_count": 1, "edges": 24, "faces": 11, "vertices": 16, "volume_mm3": 11712.00000000001 }, - "seconds": 0.017030877, + "seconds": 0.008805361, "status": "pass" }, "ladder/09-shells-and-offsets/002-cylinder-open-top-t1": { "measured": { - "area_mm2": 4153.185490793196, + "area_mm2": 4153.185488045601, "body_count": 1, "edges": 6, "faces": 5, "vertices": 4, - "volume_mm3": 2045.1781194378996 + "volume_mm3": 2045.1768174685462 }, - "seconds": 0.102052253, + "seconds": 0.077255283, "status": "pass" }, "ladder/09-shells-and-offsets/003-tube-two-open-faces": { @@ -1367,69 +1531,69 @@ "edges": 24, "faces": 10, "vertices": 16, - "volume_mm3": 7680.000000000007 + "volume_mm3": 7680.0000000000055 }, - "seconds": 0.017605072, + "seconds": 0.008893778, "status": "pass" }, "ladder/09-shells-and-offsets/004-thin-wall-0.2": { "measured": { - "area_mm2": 12728.320000000002, + "area_mm2": 12728.32, "body_count": 1, "edges": 24, "faces": 11, "vertices": 16, - "volume_mm3": 1268.8319999999949 + "volume_mm3": 1268.8319999999985 }, - "seconds": 0.017360494, + "seconds": 0.017061888, "status": "pass" }, "ladder/09-shells-and-offsets/005-shell-rounds-r5-t2": { "measured": { - "area_mm2": 11804.69049328623, + "area_mm2": 11804.690170097561, "body_count": 1, "edges": 48, "faces": 19, "vertices": 32, - "volume_mm3": 11421.860960200946 + "volume_mm3": 11421.858317494805 }, - "seconds": 0.173842021, + "seconds": 0.070876927, "status": "pass" }, "ladder/09-shells-and-offsets/006-shell-rounds-r1-thinner-than-t2": { "measured": { - "area_mm2": 12075.946992402418, + "area_mm2": 12075.946891509966, "body_count": 1, "edges": 36, "faces": 15, "vertices": 24, - "volume_mm3": 11694.832919801527 + "volume_mm3": 11694.831853512045 }, - "seconds": 0.059772023, + "seconds": 0.039572847, "status": "pass" }, "ladder/09-shells-and-offsets/007-offset-top-face-5": { "measured": { - "area_mm2": 9800.000000000004, + "area_mm2": 9800.000000000025, "body_count": 1, "edges": 12, "faces": 6, "vertices": 8, - "volume_mm3": 60000.00000000002 + "volume_mm3": 60000.00000000003 }, - "seconds": 0.016440553, + "seconds": 0.01670219, "status": "pass" }, "ladder/09-shells-and-offsets/008-offset-cylinder-wall-2": { "measured": { - "area_mm2": 2412.743113705001, + "area_mm2": 2412.743157962007, "body_count": 1, "edges": 3, "faces": 3, "vertices": 2, - "volume_mm3": 9047.786411660763 + "volume_mm3": 9047.786842389623 }, - "seconds": 0.075273098, + "seconds": 0.056818192, "status": "pass" }, "ladder/09-shells-and-offsets/009-shell-outside-t2": { @@ -1439,33 +1603,33 @@ "edges": 24, "faces": 11, "vertices": 16, - "volume_mm3": 13952.000000000015 + "volume_mm3": 13951.999999999996 }, - "seconds": 0.037942031, + "seconds": 0.017403634, "status": "pass" }, "ladder/09-shells-and-offsets/010-shell-under-rounded-top": { "measured": { - "area_mm2": 11769.84062599412, + "area_mm2": 11769.840596765922, "body_count": 1, "edges": 40, "faces": 19, "vertices": 24, - "volume_mm3": 11375.174354868088 + "volume_mm3": 11375.174413984334 }, - "seconds": 0.10510739, + "seconds": 0.078774667, "status": "pass" }, "ladder/09-shells-and-offsets/011-part-shell": { "measured": { - "area_mm2": 20922.653935613285, + "area_mm2": 20922.655884939035, "body_count": 1, "edges": 140, "faces": 55, "vertices": 92, - "volume_mm3": 15397.69748736967 + "volume_mm3": 15397.700273419785 }, - "seconds": 1.077868685, + "seconds": 0.965141641, "status": "pass" }, "ladder/09-shells-and-offsets/012-closed-shell-sealed-void": { @@ -1475,191 +1639,359 @@ "edges": 24, "faces": 12, "vertices": 16, - "volume_mm3": 15743.999999999998 + "volume_mm3": 15744.0 }, - "seconds": 0.018255444, + "seconds": 0.017151441, "status": "pass" }, "ladder/09-shells-and-offsets/013-dome-shelled-from-base": { "measured": { - "area_mm2": 4787.787342099054, + "area_mm2": 4787.7872041001665, "body_count": 1, "edges": 4, "faces": 3, "vertices": 4, - "volume_mm3": 4540.648982326449 + "volume_mm3": 4540.648582054095 }, - "seconds": 0.235684567, + "seconds": 0.112463321, "status": "pass" }, "ladder/09-shells-and-offsets/014-drafted-box-with-rounds-shelled": { "measured": { - "area_mm2": 48232.25453283639, + "area_mm2": 48232.25377351871, "body_count": 1, "edges": 48, "faces": 19, "vertices": 32, - "volume_mm3": 47497.57000224123 + "volume_mm3": 47497.55678038107 }, - "seconds": 0.123522195, + "seconds": 0.077272355, "status": "pass" }, "ladder/09-shells-and-offsets/015-shelled-dome-ring-joined-back": { "measured": { - "area_mm2": 5332.688306886705, + "area_mm2": 5332.688157880919, "body_count": 1, "edges": 7, "faces": 6, "vertices": 7, - "volume_mm3": 5540.613076260847 + "volume_mm3": 5540.61199574002 }, - "seconds": 0.922183804, + "seconds": 0.695622861, "status": "pass" }, "ladder/10-patterns-and-mirrors/001-rect-pattern-holes": { "measured": { - "area_mm2": 7506.857613724541, + "area_mm2": 7506.858347027459, "body_count": 1, "edges": 30, "faces": 12, "vertices": 20, - "volume_mm3": 22821.901949174513 + "volume_mm3": 22821.902754590934 }, - "seconds": 0.17511958, + "seconds": 0.238580543, "status": "pass" }, "ladder/10-patterns-and-mirrors/002-circular-pattern-holes": { "measured": { - "area_mm2": 8595.396203488179, + "area_mm2": 8595.39750023962, "body_count": 1, "edges": 27, "faces": 11, "vertices": 18, - "volume_mm3": 26012.383532001513 + "volume_mm3": 26012.387171703303 }, - "seconds": 0.350811307, + "seconds": 0.483548993, "status": "pass" }, "ladder/10-patterns-and-mirrors/003-overlapping-pattern-leaves-core": { "measured": { - "area_mm2": 3868.0116581684933, + "area_mm2": 3868.011849606836, "body_count": 2, "edges": 39, "faces": 17, "vertices": 26, - "volume_mm3": 9195.866260243196 + "volume_mm3": 9195.867288043119 }, - "seconds": 0.315056057, + "seconds": 0.299450421, "status": "pass" }, "ladder/10-patterns-and-mirrors/004-mirror-body-joined": { "measured": { - "area_mm2": 9742.47737488009, + "area_mm2": 9742.477796051942, "body_count": 1, "edges": 18, "faces": 8, "vertices": 12, - "volume_mm3": 44858.40293082078 + "volume_mm3": 44858.40734613875 }, - "seconds": 0.066688428, + "seconds": 0.047100825, "status": "pass" }, "ladder/10-patterns-and-mirrors/005-mirror-feature": { "measured": { - "area_mm2": 9742.477396690481, + "area_mm2": 9742.477796086725, "body_count": 1, "edges": 18, "faces": 8, "vertices": 12, - "volume_mm3": 44858.4039421837 + "volume_mm3": 44858.40734637524 }, - "seconds": 0.074462135, + "seconds": 0.073737999, "status": "pass" }, "ladder/10-patterns-and-mirrors/006-circular-pattern-counterbores": { "measured": { - "area_mm2": 8472.87515433848, + "area_mm2": 8472.875386822696, "body_count": 1, "edges": 39, "faces": 21, "vertices": 26, - "volume_mm3": 26304.552440002004 + "volume_mm3": 26304.55528840379 }, - "seconds": 0.854954268, + "seconds": 0.75764951, "status": "pass" }, "ladder/10-patterns-and-mirrors/007-pattern-bodies": { "measured": { - "area_mm2": 980.1768925219793, + "area_mm2": 980.1769079213999, "body_count": 4, "edges": 12, "faces": 12, "vertices": 8, - "volume_mm3": 1130.973281262568 + "volume_mm3": 1130.973355299363 }, - "seconds": 0.030954617, + "seconds": 0.034578003, "status": "pass" }, "ladder/10-patterns-and-mirrors/008-part-vents": { "measured": { - "area_mm2": 20922.653960454496, + "area_mm2": 20922.655884935477, "body_count": 1, "edges": 152, "faces": 59, "vertices": 100, - "volume_mm3": 15355.286014502955 + "volume_mm3": 15355.288772614174 }, - "seconds": 1.764667122, + "seconds": 1.5896883499999999, "status": "pass" }, "ladder/11-cumulative-parts/001-bracket": { "measured": { - "area_mm2": 10415.793632553658, + "area_mm2": 10415.793999431555, "body_count": 1, "edges": 30, "faces": 12, "vertices": 20, - "volume_mm3": 31550.35228808287 + "volume_mm3": 31550.35411758737 }, - "seconds": 0.087923968, + "seconds": 0.089256502, "status": "pass" }, "ladder/11-cumulative-parts/002-flange": { "measured": { - "area_mm2": 16258.85231664228, + "area_mm2": 16258.852952953679, "body_count": 1, "edges": 31, "faces": 14, "vertices": 20, - "volume_mm3": 55442.52558072023 + "volume_mm3": 55442.53182457834 }, - "seconds": 0.618163039, + "seconds": 0.672579846, "status": "pass" }, "ladder/11-cumulative-parts/003-threaded-flange": { "measured": { - "area_mm2": 17357.35813902275, + "area_mm2": 17357.35940342288, "body_count": 1, "edges": 104, "faces": 38, "vertices": 69, - "volume_mm3": 52962.08974469333 + "volume_mm3": 52962.09746083463 }, - "seconds": 2.199779541, + "seconds": 2.165888799, "status": "pass" }, "ladder/11-cumulative-parts/004-housing": { "measured": { - "area_mm2": 21105.285520302223, + "area_mm2": 21105.28755123865, "body_count": 1, "edges": 210, "faces": 78, "vertices": 139, - "volume_mm3": 15138.516074654483 + "volume_mm3": 15138.51984646152 }, - "seconds": 2.307493908, + "seconds": 2.313084051, + "status": "pass" + }, + "ladder/12-sheet-metal/001-base-flange": { + "measured": { + "area_mm2": 12640.0, + "body_count": 1, + "edges": 12, + "faces": 6, + "vertices": 8, + "volume_mm3": 12000.0 + }, + "seconds": 0.002311005, + "status": "pass" + }, + "ladder/12-sheet-metal/002-edge-flange-90": { + "measured": { + "area_mm2": 16136.884901330357, + "body_count": 1, + "edges": 24, + "faces": 10, + "vertices": 16, + "volume_mm3": 15428.318530998597 + }, + "seconds": 0.005208205, + "status": "pass" + }, + "ladder/12-sheet-metal/003-four-flanges-90-closed-corners": { + "measured": { + "area_mm2": 23186.608102624614, + "body_count": 1, + "edges": 100, + "faces": 46, + "vertices": 56, + "volume_mm3": 22251.65632905223 + }, + "seconds": 0.013824846, + "status": "pass" + }, + "ladder/12-sheet-metal/004-four-flanges-72-leaning-out": { + "measured": { + "area_mm2": 24953.88745958142, + "body_count": 1, + "edges": 100, + "faces": 46, + "vertices": 56, + "volume_mm3": 23902.891080131303 + }, + "seconds": 0.013688925, + "status": "pass" + }, + "ladder/12-sheet-metal/005-four-flanges-108-leaning-in": { + "measured": { + "area_mm2": 21135.960695887396, + "body_count": 1, + "edges": 100, + "faces": 46, + "vertices": 56, + "volume_mm3": 20295.27663998377 + }, + "seconds": 0.014171471, + "status": "pass" + }, + "ladder/12-sheet-metal/006-corner-relief-round": { + "measured": { + "area_mm2": 23118.077137837114, + "body_count": 1, + "edges": 112, + "faces": 50, + "vertices": 64, + "volume_mm3": 22125.992622723512 + }, + "seconds": 0.017297633, + "status": "pass" + }, + "ladder/12-sheet-metal/007-corner-relief-rectangular": { + "measured": { + "area_mm2": 23118.077137708584, + "body_count": 1, + "edges": 116, + "faces": 46, + "vertices": 72, + "volume_mm3": 22119.125363817402 + }, + "seconds": 0.008106542, + "status": "pass" + }, + "ladder/12-sheet-metal/008-corner-relief-tear": { + "measured": { + "area_mm2": 23193.661881433123, + "body_count": 1, + "edges": 76, + "faces": 38, + "vertices": 40, + "volume_mm3": 22267.903289987218 + }, + "seconds": 0.070922958, + "status": "pass" + }, + "ladder/12-sheet-metal/009-hem-on-the-back-edge": { + "measured": { + "area_mm2": 18438.654703981796, + "body_count": 1, + "edges": 36, + "faces": 14, + "vertices": 24, + "volume_mm3": 17684.955592012873 + }, + "seconds": 0.005880081, + "status": "pass" + }, + "ladder/12-sheet-metal/010-fold-90": { + "measured": { + "area_mm2": 12640.000000002789, + "body_count": 1, + "edges": 24, + "faces": 10, + "vertices": 16, + "volume_mm3": 12000.000000267475 + }, + "seconds": 0.005451935, + "status": "pass" + }, + "ladder/12-sheet-metal/011-fold-unfolded": { + "measured": { + "area_mm2": 12639.999999949136, + "body_count": 1, + "edges": 12, + "faces": 6, + "vertices": 8, + "volume_mm3": 11999.999999950776 + }, + "seconds": 0.010428666, + "status": "pass" + }, + "ladder/12-sheet-metal/012-fold-refolded": { + "measured": { + "area_mm2": 12640.000000002789, + "body_count": 1, + "edges": 24, + "faces": 10, + "vertices": 16, + "volume_mm3": 12000.000000267475 + }, + "seconds": 0.007827708, + "status": "pass" + }, + "ladder/12-sheet-metal/013-flat-pattern": { + "measured": { + "area_mm2": 23186.608102624614, + "body_count": 1, + "edges": 100, + "faces": 46, + "vertices": 56, + "volume_mm3": 22251.65632905223 + }, + "seconds": 0.032328181, + "status": "pass" + }, + "ladder/12-sheet-metal/014-bracket": { + "measured": { + "area_mm2": 19539.522023125195, + "body_count": 1, + "edges": 38, + "faces": 15, + "vertices": 26, + "volume_mm3": 18699.55742984613 + }, + "seconds": 0.091808771, "status": "pass" } }, - "reason": "SMLib a15b5a2: corner setbacks, the ball-fit refusal before the corners, the graded vacuous cases and the two thread cases" + "reason": "SMLib 60b1c6a: tiers 05 and 06 take the UNC, UNF, Rc and NPT tapped holes, the pipe threads, the steep flank and the tip options, tier 12 (sheet metal) is new; the 139 cases before keep their statuses and counts, their volumes and areas re-measured within 2e-6" } diff --git a/tests/kernel-cases/ladder/ladder.json b/tests/kernel-cases/ladder/ladder.json index 8f30021101..dab9df7ed2 100644 --- a/tests/kernel-cases/ladder/ladder.json +++ b/tests/kernel-cases/ladder/ladder.json @@ -2,10 +2,10 @@ "tiers": [ { "cases": [ - "ladder/01-primitives/005-sphere", "ladder/01-primitives/001-box", - "ladder/01-primitives/004-frustum", + "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" ], @@ -14,30 +14,30 @@ }, { "cases": [ - "ladder/02-booleans/001-coincident-face-join", - "ladder/02-booleans/019-notch-flush-with-end-face", "ladder/02-booleans/004-edge-on-edge-no-overlap", "ladder/02-booleans/015-knife-edge-wedge-cut", - "ladder/02-booleans/014-cut-through-sphere-pole", + "ladder/02-booleans/001-coincident-face-join", "ladder/02-booleans/016-v-groove-pinches-bottom-to-line", - "ladder/02-booleans/020-part-back-wall", "ladder/02-booleans/003-pocket-flush-with-top", + "ladder/02-booleans/020-part-back-wall", + "ladder/02-booleans/019-notch-flush-with-end-face", "ladder/02-booleans/002-coplanar-overlap-join", + "ladder/02-booleans/014-cut-through-sphere-pole", + "ladder/02-booleans/007-near-tangent-gap-1e-3", "ladder/02-booleans/006-tangent-along-line-no-overlap", + "ladder/02-booleans/010-near-tangent-overlap-1e-6", + "ladder/02-booleans/008-near-tangent-gap-1e-6", + "ladder/02-booleans/009-near-tangent-overlap-1e-3", + "ladder/02-booleans/005-vertex-on-face-no-overlap", "ladder/02-booleans/017-cylinder-tangent-top-and-bottom", "ladder/02-booleans/018-hole-tangent-to-side-face", - "ladder/02-booleans/008-near-tangent-gap-1e-6", - "ladder/02-booleans/010-near-tangent-overlap-1e-6", - "ladder/02-booleans/011-tangent-along-circle-through-hole", - "ladder/02-booleans/005-vertex-on-face-no-overlap", - "ladder/02-booleans/007-near-tangent-gap-1e-3", - "ladder/02-booleans/009-near-tangent-overlap-1e-3", "ladder/02-booleans/013-cut-across-cylinder-seam", - "ladder/02-booleans/021-holes-touching-at-a-point", "ladder/02-booleans/012-tangent-along-circle-bowl", + "ladder/02-booleans/011-tangent-along-circle-through-hole", "ladder/02-booleans/022-cylinder-grazing-a-hole-edge", - "ladder/02-booleans/023-lips-1e-4-off-the-walls-joined", + "ladder/02-booleans/021-holes-touching-at-a-point", "ladder/02-booleans/024-wall-halves-merged-into-a-flange", + "ladder/02-booleans/023-lips-1e-4-off-the-walls-joined", "ladder/02-booleans/025-flush-chord-layers-joined" ], "tier": "02-booleans", @@ -45,14 +45,14 @@ }, { "cases": [ - "ladder/03-analytic-profiles/001-extrude-rect-with-arc-end", - "ladder/03-analytic-profiles/007-revolve-180-touching-axis", "ladder/03-analytic-profiles/006-revolve-partial-90", + "ladder/03-analytic-profiles/007-revolve-180-touching-axis", "ladder/03-analytic-profiles/008-extrude-slot", + "ladder/03-analytic-profiles/001-extrude-rect-with-arc-end", "ladder/03-analytic-profiles/003-extrude-tapered-circle", "ladder/03-analytic-profiles/002-extrude-annulus", - "ladder/03-analytic-profiles/004-revolve-full-off-axis", "ladder/03-analytic-profiles/005-revolve-touching-axis-hemisphere", + "ladder/03-analytic-profiles/004-revolve-full-off-axis", "ladder/03-analytic-profiles/009-part-boss-and-slot", "ladder/03-analytic-profiles/010-revolve-horn-torus-270" ], @@ -65,9 +65,9 @@ "ladder/04-spline-profiles/001-extrude-bezier-arch", "ladder/04-spline-profiles/008-loft-square-to-circle", "ladder/04-spline-profiles/009-extrude-periodic-fit-spline", - "ladder/04-spline-profiles/004-sweep-square-along-bezier", "ladder/04-spline-profiles/006-loft-circle-frustum", "ladder/04-spline-profiles/007-loft-three-circles", + "ladder/04-spline-profiles/004-sweep-square-along-bezier", "ladder/04-spline-profiles/002-revolve-bezier-profile", "ladder/04-spline-profiles/010-part-bezier-window", "ladder/04-spline-profiles/003-pipe-along-bezier", @@ -79,95 +79,95 @@ }, { "cases": [ - "ladder/05-holes-and-taps/006-tapped-m6-through", "ladder/05-holes-and-taps/001-simple-through", - "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/006-tapped-m6-through", + "ladder/05-holes-and-taps/017-tapped-1-4-npt-through", + "ladder/05-holes-and-taps/016-tapped-rc-1-2-through", "ladder/05-holes-and-taps/002-simple-blind-flat", - "ladder/05-holes-and-taps/004-counterbore", + "ladder/05-holes-and-taps/003-drilled-blind-118", "ladder/05-holes-and-taps/007-tapped-m8-blind", + "ladder/05-holes-and-taps/015-tapped-1-4-28-unf-blind", + "ladder/05-holes-and-taps/009-hole-0.5-from-edge", + "ladder/05-holes-and-taps/014-tapped-1-4-20-unc-through", + "ladder/05-holes-and-taps/004-counterbore", "ladder/05-holes-and-taps/005-countersink", "ladder/05-holes-and-taps/011-crossing-holes-steinmetz", "ladder/05-holes-and-taps/012-crossing-tapped-holes-offset", "ladder/05-holes-and-taps/008-tapped-m5-into-curved-face", - "ladder/05-holes-and-taps/013-part-holes", - "ladder/05-holes-and-taps/014-tapped-1-4-20-unc-through", - "ladder/05-holes-and-taps/015-tapped-1-4-28-unf-blind", - "ladder/05-holes-and-taps/016-tapped-rc-1-2-through", - "ladder/05-holes-and-taps/017-tapped-1-4-npt-through" + "ladder/05-holes-and-taps/013-part-holes" ], "tier": "05-holes-and-taps", "what": "holes and tapped holes" }, { "cases": [ + "ladder/06-threads/030-square-thread-refused", "ladder/06-threads/012-external-acme-3-4-6", - "ladder/06-threads/013-external-s20x4", "ladder/06-threads/011-external-tr20x4", - "ladder/06-threads/003-external-m10-partial-length", + "ladder/06-threads/029-external-tr20x4-chamfer-needs-depth", + "ladder/06-threads/013-external-s20x4", + "ladder/06-threads/021-internal-rp-1-2", + "ladder/06-threads/020-external-g-1-2", "ladder/06-threads/015-internal-tr20x4-nut", "ladder/06-threads/014-external-buttress-asme-1.5-8", - "ladder/06-threads/010-part-threaded-boss", - "ladder/06-threads/016-external-m10-left-hand", - "ladder/06-threads/019-external-tr40x14-p7-two-start", - "ladder/06-threads/005-internal-m10-through", - "ladder/06-threads/006-external-m10-into-chamfer", - "ladder/06-threads/007-external-m10-at-filleted-shoulder", - "ladder/06-threads/001-external-m10-full", - "ladder/06-threads/004-external-m10-to-shoulder", - "ladder/06-threads/009-thread-runout-length", - "ladder/06-threads/002-external-m10x1-fine", - "ladder/06-threads/017-external-m10-chamfered-tip", - "ladder/06-threads/008-multi-start-thread", - "ladder/06-threads/018-external-m10-both-hands", - "ladder/06-threads/020-external-g-1-2", - "ladder/06-threads/021-internal-rp-1-2", - "ladder/06-threads/022-external-r-1-2-taper", - "ladder/06-threads/023-external-1-2-npt", - "ladder/06-threads/024-internal-rc-1-2-taper", - "ladder/06-threads/025-external-s20x4-steep-flank-end-to-shoulder", "ladder/06-threads/026-external-s20x4-steep-flank-start-to-shoulder", - "ladder/06-threads/027-external-m10-chamfered-start", + "ladder/06-threads/010-part-threaded-boss", + "ladder/06-threads/025-external-s20x4-steep-flank-end-to-shoulder", + "ladder/06-threads/003-external-m10-partial-length", + "ladder/06-threads/005-internal-m10-through", + "ladder/06-threads/019-external-tr40x14-p7-two-start", "ladder/06-threads/028-external-tr20x4-chamfer-30-deg-2.5-deep", - "ladder/06-threads/029-external-tr20x4-chamfer-needs-depth", - "ladder/06-threads/030-square-thread-refused" + "ladder/06-threads/022-external-r-1-2-taper", + "ladder/06-threads/024-internal-rc-1-2-taper", + "ladder/06-threads/004-external-m10-to-shoulder", + "ladder/06-threads/007-external-m10-at-filleted-shoulder", + "ladder/06-threads/009-thread-runout-length", + "ladder/06-threads/023-external-1-2-npt", + "ladder/06-threads/016-external-m10-left-hand", + "ladder/06-threads/001-external-m10-full", + "ladder/06-threads/006-external-m10-into-chamfer", + "ladder/06-threads/027-external-m10-chamfered-start", + "ladder/06-threads/002-external-m10x1-fine", + "ladder/06-threads/008-multi-start-thread", + "ladder/06-threads/017-external-m10-chamfered-tip", + "ladder/06-threads/018-external-m10-both-hands" ], "tier": "06-threads", "what": "modelled threads" }, { "cases": [ - "ladder/07-fillets/015-corner-g2-patch", - "ladder/07-fillets/019-concave-corner-g2-patch", - "ladder/07-fillets/006-variable-r5-to-zero", "ladder/07-fillets/001-single-edge-r5", "ladder/07-fillets/007-variable-r5-to-1e-3", "ladder/07-fillets/011-chain-ending-at-corner", + "ladder/07-fillets/002-four-vertical-edges-r5", + "ladder/07-fillets/006-variable-r5-to-zero", + "ladder/07-fillets/008-constant-r1e-3", "ladder/07-fillets/005-variable-r5-to-r1", + "ladder/07-fillets/010-corner-unequal-r7-r3", "ladder/07-fillets/004-convex-and-concave-r5", "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/010-corner-unequal-r7-r3", - "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/012-variable-into-rounded-corner", + "ladder/07-fillets/016-corner-three-sequential-r5-r3-r7", "ladder/07-fillets/018-corner-three-sequential-r5-r3-r2", - "ladder/07-fillets/003-tangent-chain-r3", "ladder/07-fillets/013-corner-setback", - "ladder/07-fillets/017-part-rounds" + "ladder/07-fillets/003-tangent-chain-r3", + "ladder/07-fillets/017-part-rounds", + "ladder/07-fillets/019-concave-corner-g2-patch", + "ladder/07-fillets/015-corner-g2-patch" ], "tier": "07-fillets", "what": "constant, variable and corner fillets" }, { "cases": [ + "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/003-distance-angle-5-30", - "ladder/08-chamfers/001-equal-5", - "ladder/08-chamfers/002-two-distances-5-3", "ladder/08-chamfers/007-chamfer-then-fillets", "ladder/08-chamfers/006-curved-edge-2", "ladder/08-chamfers/008-part-chamfers" @@ -177,18 +177,18 @@ }, { "cases": [ - "ladder/09-shells-and-offsets/007-offset-top-face-5", "ladder/09-shells-and-offsets/001-box-open-top-t2", - "ladder/09-shells-and-offsets/004-thin-wall-0.2", "ladder/09-shells-and-offsets/003-tube-two-open-faces", + "ladder/09-shells-and-offsets/007-offset-top-face-5", + "ladder/09-shells-and-offsets/004-thin-wall-0.2", "ladder/09-shells-and-offsets/012-closed-shell-sealed-void", "ladder/09-shells-and-offsets/009-shell-outside-t2", "ladder/09-shells-and-offsets/006-shell-rounds-r1-thinner-than-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/010-shell-under-rounded-top", - "ladder/09-shells-and-offsets/014-drafted-box-with-rounds-shelled", "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/013-dome-shelled-from-base", "ladder/09-shells-and-offsets/015-shelled-dome-ring-joined-back", "ladder/09-shells-and-offsets/011-part-shell" @@ -224,17 +224,17 @@ "cases": [ "ladder/12-sheet-metal/001-base-flange", "ladder/12-sheet-metal/002-edge-flange-90", - "ladder/12-sheet-metal/003-four-flanges-90-closed-corners", + "ladder/12-sheet-metal/010-fold-90", + "ladder/12-sheet-metal/009-hem-on-the-back-edge", + "ladder/12-sheet-metal/012-fold-refolded", + "ladder/12-sheet-metal/007-corner-relief-rectangular", + "ladder/12-sheet-metal/011-fold-unfolded", "ladder/12-sheet-metal/004-four-flanges-72-leaning-out", + "ladder/12-sheet-metal/003-four-flanges-90-closed-corners", "ladder/12-sheet-metal/005-four-flanges-108-leaning-in", "ladder/12-sheet-metal/006-corner-relief-round", - "ladder/12-sheet-metal/007-corner-relief-rectangular", - "ladder/12-sheet-metal/008-corner-relief-tear", - "ladder/12-sheet-metal/009-hem-on-the-back-edge", - "ladder/12-sheet-metal/010-fold-90", - "ladder/12-sheet-metal/011-fold-unfolded", - "ladder/12-sheet-metal/012-fold-refolded", "ladder/12-sheet-metal/013-flat-pattern", + "ladder/12-sheet-metal/008-corner-relief-tear", "ladder/12-sheet-metal/014-bracket" ], "tier": "12-sheet-metal",