kernel-cases: #4432–#4829 triaged: 21 cases, 175 skipped

Cases from the issues filed after #4160, each a synthetic recipe with its own answer
(analysis or invariants); every other issue in the range is listed with why it was skipped.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
jyviko
2026-10-25 08:39:05 -04:00
parent 5bc0dc6883
commit 173000b44b
52 changed files with 5237 additions and 1 deletions
@@ -0,0 +1,14 @@
{
"sources": [
"tangency-labs/solidcraft#4468"
],
"what": "a 20x15x5 box minus an r3 through bore: truck's measure read 1.66e-4 of the removed volume too much (1358.6518 for 1358.6283) while the geometry was exact",
"source": "analytic",
"method": "V = 20*15*5 - pi*3^2*5 = 1358.628331; A = 2*(300 - 9 pi) + 2*(20+15)*5 + 2*pi*3*5 = 993.226. Graded to 1e-6 relative, below the reported error (1.7e-5 of the result)",
"body_count": 1,
"volume_mm3": 1358.628331,
"area_mm2": 987.699112,
"tolerance": {
"rel": 1e-06
}
}
@@ -0,0 +1,41 @@
{
"commands": [
{
"command": "solid.box",
"params": {
"corner": [
0,
0,
0
],
"length": 20,
"width": 15,
"height": 5,
"body_name": "Box"
}
},
{
"command": "solid.cylinder",
"params": {
"radius": 3,
"height": 7,
"base": [
10,
7.5,
-1
],
"body_name": "Bore"
}
},
{
"command": "solid.combine",
"params": {
"target": "Box",
"tools": [
"Bore"
],
"operation": "cut"
}
}
]
}
@@ -0,0 +1,10 @@
{
"sources": [
"tangency-labs/solidcraft#4505",
"tangency-labs/solidcraft#3636"
],
"what": "a coil (diameter 151, pitch 10, 80 high, 5 mm round section) whose section runs through a diameter-152 cylinder's wall, joined to it: truck ground for 125-296 s, then 'boolean Union: no result'",
"source": "invariants",
"method": "the coil's section crosses the wall along its whole length, so the union is one connected solid: one valid closed body. The helical sweep's part outside r 76 has no closed-form volume (the triage's script)",
"body_count": 1
}
@@ -0,0 +1,38 @@
{
"commands": [
{
"command": "solid.cylinder",
"params": {
"diameter": 152,
"height": 100,
"body_name": "Cyl"
}
},
{
"command": "solid.coil",
"params": {
"diameter": 151,
"pitch": 10,
"height": 80,
"section_size": 5,
"base": [
0,
0,
10
],
"operation": "new",
"body_name": "Coil"
}
},
{
"command": "solid.combine",
"params": {
"target": "Cyl",
"tools": [
"Coil"
],
"operation": "join"
}
}
]
}
@@ -0,0 +1,12 @@
{
"sources": [
"tangency-labs/solidcraft#4558"
],
"what": "a 10 mm join on a block's top face whose sketch is then edited out past the block on every side (60 x 50 on a 40 x 30 top): truck refused the rebuilt join ('join cannot preserve the original faces') and dropped it",
"source": "analytic",
"method": "block 40x30x20 = 24000 plus the slab 60x50x10 = 30000 standing on it: V = 54000. Faces: block bottom and 4 sides, the slab's under face (60x50 less 40x30), its 4 sides and top = 11. Area 1200 + 2800 + 1800 + 2200 + 3000 = 11000. The sketch is made without projected face edges, so its rectangle is one region",
"body_count": 1,
"volume_mm3": 54000.0,
"area_mm2": 11000.0,
"faces": 11
}
@@ -0,0 +1,110 @@
{
"commands": [
{
"command": "sketch.create",
"params": {
"plane": "XY"
}
},
{
"command": "sketch.rectangle.two_point",
"params": {
"p0": [
-20,
-15
],
"p1": [
20,
15
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"distance": 20
}
},
{
"command": "sketch.create",
"params": {
"plane": {
"face": [
0,
0,
20
]
},
"project_edges": false
}
},
{
"command": "sketch.rectangle.two_point",
"params": {
"p0": [
-10,
-5
],
"p1": [
10,
5
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"distance": 10,
"operation": "join",
"profiles": [
{
"curves": [
"l1",
"l2",
"l3",
"l4"
]
}
]
}
},
{
"command": "sketch.edit",
"params": {
"sketch": "Sketch2"
}
},
{
"command": "sketch.move_point",
"params": {
"point": "p3",
"to": [
30,
25
]
}
},
{
"command": "sketch.move_point",
"params": {
"point": "p1",
"to": [
-30,
-25
]
}
},
{
"command": "sketch.finish",
"params": {}
}
]
}
@@ -0,0 +1,11 @@
{
"sources": [
"tangency-labs/solidcraft#4623",
"tangency-labs/solidcraft#4180",
"tangency-labs/solidcraft#4881"
],
"what": "a join of two pleated skins (lofts between 24-pleat star outlines, less the same loft moved in 1.1 mm) that cross along a ring near their bottoms: truck panicked ('tolerance must be no less than 1e-6') or gave no result",
"source": "invariants",
"method": "the narrowing cone skin and the flaring lip skin cross at z = -0.3, so their union is one connected solid: one valid closed body, no panic. The reporter's own script (pleated_union.py, 24 pleats)",
"body_count": 1
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,10 @@
{
"sources": [
"tangency-labs/solidcraft#4654"
],
"what": "Split Body of an L-shaped body with one of its own faces as the tool (the column's side x = 15, its surface extended through the base): truck panicked ('split body: Option::unwrap() on None')",
"source": "analytic",
"method": "the plane x = 15 cuts the base under the column: the column with the base's left part (15*20*30 = 9000) and the base's right part (25*20*10 = 5000). Two bodies, V = 14000",
"body_count": 2,
"volume_mm3": 14000.0
}
@@ -0,0 +1,49 @@
{
"commands": [
{
"command": "solid.box",
"params": {
"corner": [
0,
0,
0
],
"length": 40,
"width": 20,
"height": 10,
"body_name": "L"
}
},
{
"command": "solid.box",
"params": {
"corner": [
0,
0,
10
],
"length": 15,
"width": 20,
"height": 20,
"operation": "join",
"targets": [
"L"
]
}
},
{
"command": "solid.split_body",
"params": {
"body": "L",
"tool": {
"body": "L",
"point": [
15,
10,
20
]
}
}
}
]
}
@@ -0,0 +1,10 @@
{
"sources": [
"tangency-labs/solidcraft#4701"
],
"what": "a 3 mm disc (r23) joined on the top face of a ring extruded 14 mm with a 10 deg outward taper (r 18.5 growing, bore 13.75 shrinking): 202 s in truck before the right result",
"source": "analytic",
"method": "the ring: frustum r 18.5 -> 18.5 + 14 tan10 less frustum r 13.75 -> 13.75 - 14 tan10, both 14 high (pi h/3 (a^2+ab+b^2)); the cap pi 23^2 3 covers the ring's top (r 11.28..20.97) and its bore",
"body_count": 1,
"volume_mm3": 15224.7481
}
@@ -0,0 +1,106 @@
{
"commands": [
{
"command": "sketch.create",
"params": {
"plane": "XY",
"name": "Outer"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 18.5
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"sketch": "Outer",
"distance": 14,
"taper": "10 deg",
"body_name": "Ring"
}
},
{
"command": "sketch.create",
"params": {
"plane": "XY",
"name": "Inner"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 13.75
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"sketch": "Inner",
"distance": 14,
"taper": "-10 deg",
"operation": "cut",
"targets": [
"Ring"
]
}
},
{
"command": "sketch.create",
"params": {
"plane": {
"face": [
16,
0,
14
]
},
"name": "Cap",
"project_edges": false
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 23
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"sketch": "Cap",
"distance": 3,
"operation": "join",
"targets": [
"Ring"
]
}
}
]
}
@@ -0,0 +1,11 @@
{
"sources": [
"tangency-labs/solidcraft#4825"
],
"what": "a 5 mm pocket cut from a hull's top face with a 30 deg taper (growing with depth) from a 282x176 outline with r2 corners: truck refused it ('the taper closes the profile'), as its run-on behind the start face narrowed past the corner radius",
"source": "analytic",
"method": "hull 318x212 r8 corners, z 46..156: (318*212 - (4-pi)*64)*110. The pocket at depth t is the outline offset by s = t*tan30: area (282+2s)(176+2s) - (4-pi)(2+s)^2, integrated over t 0..5 = 254772.3456. Faces: hull 4 sides + 4 corner cylinders + top + bottom, pocket 4 sloped planes + 4 cones + floor = 19",
"body_count": 1,
"faces": 19,
"volume_mm3": 7154944.467
}
@@ -0,0 +1,87 @@
{
"commands": [
{
"command": "sketch.create",
"params": {
"plane": "XY",
"name": "Outline",
"offset": 46,
"project_edges": false
}
},
{
"command": "sketch.rectangle.rounded",
"params": {
"p0": [
-159,
-106
],
"p1": [
159,
106
],
"radius": 8
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"sketch": "Outline",
"distance": 110,
"body_name": "Hull"
}
},
{
"command": "sketch.create",
"params": {
"plane": "XY",
"name": "Ledge",
"offset": 156,
"project_edges": false
}
},
{
"command": "sketch.rectangle.rounded",
"params": {
"p0": [
-141,
-88
],
"p1": [
141,
88
],
"radius": 2
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"sketch": "Ledge",
"distance": 5,
"direction": "negative",
"taper": "30 deg",
"profiles": [
{
"point": [
0,
0
]
}
],
"operation": "cut",
"targets": [
"Hull"
]
}
}
]
}
@@ -0,0 +1,11 @@
{
"sources": [
"tangency-labs/solidcraft#4829"
],
"what": "a cylinder r10 x 40 with its top edge filleted r2, cut 14 mm down from its flat top face (the R8 disc, bounded by the fillet's edge): ~30 s, then 'boolean Cut: no result'",
"source": "analytic",
"method": "the round removes the corner region (1-pi/4) 2^2 at radius 10 - (2 - (2/6)/(1-pi/4)) (Pappus); the cut removes the R8 disc x 14: V = pi 100 40 - removed - pi 64 14. The top face is used up: faces side, bottom, round, pocket wall, pocket floor = 5",
"body_count": 1,
"faces": 5,
"volume_mm3": 9699.9778
}
@@ -0,0 +1,39 @@
{
"commands": [
{
"command": "solid.cylinder",
"params": {
"radius": 10,
"height": 40,
"body_name": "Body1"
}
},
{
"command": "solid.fillet",
"params": {
"edges": [
[
10,
0,
40
]
],
"radius": 2
}
},
{
"command": "solid.extrude",
"params": {
"face": [
1.77,
1.39,
40
],
"face_body": "Body1",
"direction": "negative",
"distance": 14,
"operation": "cut"
}
}
]
}
@@ -142,5 +142,253 @@
{
"source": "tangency-labs/solidcraft#4424",
"why": "no geometry: a cut in a component other than the active one (document, dup of #4639)"
},
{
"source": "tangency-labs/solidcraft#4433",
"why": "no geometry: a sheet-metal hole the flat pattern can't keep is refused by design"
},
{
"source": "tangency-labs/solidcraft#4434",
"why": "duplicate of the rig's join-that-meets-nothing case (#2896): a join apart from the body keeps it as a lump, without a warning"
},
{
"source": "tangency-labs/solidcraft#4435",
"why": "no geometry: a sketch pattern's count parameter link not kept (sketch)"
},
{
"source": "tangency-labs/solidcraft#4437",
"why": "no reproduction: a screenshot of an unknown part, no message"
},
{
"source": "tangency-labs/solidcraft#4443",
"why": "no geometry: a saved model cache refused after a boolean retry (document)"
},
{
"source": "tangency-labs/solidcraft#4448",
"why": "no reproduction: a body patterned about a tilted axis, the body and the wrong result not described"
},
{
"source": "tangency-labs/solidcraft#4458",
"why": "no reproduction: a mirror redefined on an unknown part, the result not described"
},
{
"source": "tangency-labs/solidcraft#4477",
"why": "no geometry: the report arrived empty"
},
{
"source": "tangency-labs/solidcraft#4481",
"why": "no reproduction: last command only (a hole), the unexpected result not described"
},
{
"source": "tangency-labs/solidcraft#4488",
"why": "no kernel geometry: Emboss refuses a concave cylinder face (the emboss command's stated limit)"
},
{
"source": "tangency-labs/solidcraft#4489",
"why": "UI only: Move point-to-point takes the rim point of a picked circle"
},
{
"source": "tangency-labs/solidcraft#4502",
"why": "render: the sketch viewport turns blue on old Intel graphics"
},
{
"source": "tangency-labs/solidcraft#4509",
"why": "no geometry: an offset plane can't attach to a face whose history is ambiguous (document, dup of #4325)"
},
{
"source": "tangency-labs/solidcraft#4516",
"why": "no reproduction: a sketch loop past the profile curve budget; 400- and 600-segment loops extrude, the sketch is not given"
},
{
"source": "tangency-labs/solidcraft#4523",
"why": "no geometry: a join onto a mesh body is refused by design (dup of #3038)"
},
{
"source": "tangency-labs/solidcraft#4530",
"why": "no reproduction: last command only (a join of two bodies), no design"
},
{
"source": "tangency-labs/solidcraft#4532",
"why": "no geometry: the report arrived empty"
},
{
"source": "tangency-labs/solidcraft#4534",
"why": "no reproduction: \"profile loop is not closed\" on an unknown sketch"
},
{
"source": "tangency-labs/solidcraft#4544",
"why": "UI only: a Norwegian translation"
},
{
"source": "tangency-labs/solidcraft#4551",
"why": "no reproduction: last command and a screenshot of an unknown part"
},
{
"source": "tangency-labs/solidcraft#4557",
"why": "no reproduction: STL export T-junctions on a user's STEP-imported part (the file is the reporter's)"
},
{
"source": "tangency-labs/solidcraft#4563",
"why": "UI only: a section hatch option"
},
{
"source": "tangency-labs/solidcraft#4572",
"why": "no kernel geometry: a join from a sketch on a face defaults to that face's body (target choice)"
},
{
"source": "tangency-labs/solidcraft#4582",
"why": "UI only: shortcut names"
},
{
"source": "tangency-labs/solidcraft#4584",
"why": "no geometry: an offset plane can't attach to a face whose history is ambiguous (document, dup of #4325)"
},
{
"source": "tangency-labs/solidcraft#4589",
"why": "UI only: expression suggestions over a slider"
},
{
"source": "tangency-labs/solidcraft#4593",
"why": "no geometry: a Rib can't be patterned yet (a stated limit)"
},
{
"source": "tangency-labs/solidcraft#4594",
"why": "no reproduction: a projected-face warning in a sketch, no steps or design"
},
{
"source": "tangency-labs/solidcraft#4597",
"why": "no reproduction: last command only (a 20 mm cut), no design"
},
{
"source": "tangency-labs/solidcraft#4600",
"why": "no reproduction: last command only (a 20 mm cut), no design"
},
{
"source": "tangency-labs/solidcraft#4619",
"why": "no kernel geometry: Emboss on a cylinder takes lines square to the axis only (the emboss command's stated limit)"
},
{
"source": "tangency-labs/solidcraft#4621",
"why": "render: section caps of touching bodies drawn in patches"
},
{
"source": "tangency-labs/solidcraft#4624",
"why": "no reproduction: last command only (a two-sided join), no design"
},
{
"source": "tangency-labs/solidcraft#4636",
"why": "UI only: 3D mouse navigation"
},
{
"source": "tangency-labs/solidcraft#4639",
"why": "no geometry: a cut in a component other than the active one (document)"
},
{
"source": "tangency-labs/solidcraft#4643",
"why": "UI only: extrude dialog keyboard focus after a profile click"
},
{
"source": "tangency-labs/solidcraft#4658",
"why": "UI only: ribbon recomputes its panels every frame"
},
{
"source": "tangency-labs/solidcraft#4685",
"why": "needs the user design: a 20-feature shelled part cut by a 2.7 mm3 body; no small stand-in"
},
{
"source": "tangency-labs/solidcraft#4706",
"why": "needs the user design: a housing of tangent arcs with cut pockets; no small stand-in shows the same geometry"
},
{
"source": "tangency-labs/solidcraft#4714",
"why": "no reproduction: Snap Fit on one half of a split user part, the position not on the named body"
},
{
"source": "tangency-labs/solidcraft#4723",
"why": "no geometry: holes on an unfolded sheet-metal flat pattern are refused by design"
},
{
"source": "tangency-labs/solidcraft#4728",
"why": "no reproduction: a test hinge of two bodies from one sketch, screenshots only"
},
{
"source": "tangency-labs/solidcraft#4731",
"why": "no geometry: a sheet-metal cut the flat pattern can't keep is refused by design"
},
{
"source": "tangency-labs/solidcraft#4733",
"why": "no reproduction: last command only (a face cut on an unknown part)"
},
{
"source": "tangency-labs/solidcraft#4741",
"why": "no geometry: a construction axis as the pattern axis (command parameters, dup of #2885)"
},
{
"source": "tangency-labs/solidcraft#4750",
"why": "no geometry: a two-curve sketch extend (feature request)"
},
{
"source": "tangency-labs/solidcraft#4753",
"why": "no geometry: five text profiles were picked where one was meant (user selection)"
},
{
"source": "tangency-labs/solidcraft#4755",
"why": "no reproduction: last command only (a fender cut on an unknown part)"
},
{
"source": "tangency-labs/solidcraft#4756",
"why": "no reproduction: a DXF logo cut from a user's curved face (105 freeform faces), no design"
},
{
"source": "tangency-labs/solidcraft#4760",
"why": "no geometry: a sketch weld tool (feature request)"
},
{
"source": "tangency-labs/solidcraft#4761",
"why": "no kernel geometry: Emboss refuses a conical face (the emboss command's stated limit)"
},
{
"source": "tangency-labs/solidcraft#4763",
"why": "no kernel geometry: path pattern copies placed in the wrong frame (pattern placement, engine)"
},
{
"source": "tangency-labs/solidcraft#4783",
"why": "no geometry: material name and density looked up apart (document)"
},
{
"source": "tangency-labs/solidcraft#4798",
"why": "no geometry: an edge-midpoint rectangle (feature request)"
},
{
"source": "tangency-labs/solidcraft#4800",
"why": "no reproduction: a cut not updating after a sketch edit, no design"
},
{
"source": "tangency-labs/solidcraft#4803",
"why": "no reproduction: the second defect is shown only by screenshots of the user's part"
},
{
"source": "tangency-labs/solidcraft#4805",
"why": "no geometry: an offset plane can't attach to a face whose history is ambiguous (document, dup of #4325)"
},
{
"source": "tangency-labs/solidcraft#4807",
"why": "UI only: a placed hole shows a drag cursor"
},
{
"source": "tangency-labs/solidcraft#4810",
"why": "no geometry: no circle-to-circle sketch dimension (dup of #4064)"
},
{
"source": "tangency-labs/solidcraft#4818",
"why": "UI only: first-run setup (feature request)"
},
{
"source": "tangency-labs/solidcraft#4826",
"why": "no geometry: user error (a line not horizontal), withdrawn"
},
{
"source": "tangency-labs/solidcraft#4827",
"why": "UI only: draft corner rules in the dialog (feature request)"
}
]
@@ -0,0 +1,9 @@
{
"sources": [
"tangency-labs/solidcraft#4542"
],
"what": "a fluted cup wall (a 72-point periodic fit spline round r 31.5..32.5 outside, a circle r 25 inside) extruded 90 mm as a join onto the top face of a revolved base disc of r 32: the app hung in the boolean",
"source": "invariants",
"method": "the wall's ring stands on the base's top face (z = 7), overlapping it between r 25 and the disc's rim and overhanging it where the flutes pass r 32, so the join is one connected solid: one valid closed body. The spline's area is not closed-form, so the volume is not graded",
"body_count": 1
}
@@ -0,0 +1,419 @@
{
"commands": [
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0,
0,
0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
0,
1
]
},
"name": "Base"
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
0
],
[
25,
0
]
]
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
25,
0
],
"through": [
29.5,
1.5
],
"end": [
32,
7
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
32,
7
],
[
0,
7
],
[
0,
0
]
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.revolve",
"params": {
"sketch": "Base",
"axis": "y",
"body_name": "Cup"
}
},
{
"command": "sketch.create",
"params": {
"plane": "XY",
"name": "Wall",
"offset": 7
}
},
{
"command": "sketch.spline.fit_point",
"params": {
"points": [
[
32.5,
0.0
],
[
32.127,
2.811
],
[
31.268,
5.513
],
[
30.427,
8.153
],
[
29.835,
10.859
],
[
29.228,
13.629
],
[
28.146,
16.25
],
[
26.418,
18.498
],
[
24.322,
20.409
],
[
22.274,
22.274
],
[
20.409,
24.322
],
[
18.498,
26.418
],
[
16.25,
28.146
],
[
13.629,
29.228
],
[
10.859,
29.835
],
[
8.153,
30.427
],
[
5.513,
31.268
],
[
2.811,
32.127
],
[
0.0,
32.5
],
[
-2.811,
32.127
],
[
-5.513,
31.268
],
[
-8.153,
30.427
],
[
-10.859,
29.835
],
[
-13.629,
29.228
],
[
-16.25,
28.146
],
[
-18.498,
26.418
],
[
-20.409,
24.322
],
[
-22.274,
22.274
],
[
-24.322,
20.409
],
[
-26.418,
18.498
],
[
-28.146,
16.25
],
[
-29.228,
13.629
],
[
-29.835,
10.859
],
[
-30.427,
8.153
],
[
-31.268,
5.513
],
[
-32.127,
2.811
],
[
-32.5,
0.0
],
[
-32.127,
-2.811
],
[
-31.268,
-5.513
],
[
-30.427,
-8.153
],
[
-29.835,
-10.859
],
[
-29.228,
-13.629
],
[
-28.146,
-16.25
],
[
-26.418,
-18.498
],
[
-24.322,
-20.409
],
[
-22.274,
-22.274
],
[
-20.409,
-24.322
],
[
-18.498,
-26.418
],
[
-16.25,
-28.146
],
[
-13.629,
-29.228
],
[
-10.859,
-29.835
],
[
-8.153,
-30.427
],
[
-5.513,
-31.268
],
[
-2.811,
-32.127
],
[
-0.0,
-32.5
],
[
2.811,
-32.127
],
[
5.513,
-31.268
],
[
8.153,
-30.427
],
[
10.859,
-29.835
],
[
13.629,
-29.228
],
[
16.25,
-28.146
],
[
18.498,
-26.418
],
[
20.409,
-24.322
],
[
22.274,
-22.274
],
[
24.322,
-20.409
],
[
26.418,
-18.498
],
[
28.146,
-16.25
],
[
29.228,
-13.629
],
[
29.835,
-10.859
],
[
30.427,
-8.153
],
[
31.268,
-5.513
],
[
32.127,
-2.811
]
],
"periodic": true
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 25
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"sketch": "Wall",
"distance": 90,
"operation": "join",
"targets": [
"Cup"
]
}
}
]
}
@@ -0,0 +1,12 @@
{
"sources": [
"tangency-labs/solidcraft#4547",
"tangency-labs/solidcraft#4542"
],
"what": "a join of two revolved rings that touch only along a circle (r 20.5 at z 4: the corner of one ring on the corner of the other): the app hung in the boolean",
"source": "analytic",
"method": "ring A r 20..20.5, z 0..4: pi*(20.5^2-20^2)*4 = 254.469; ring B r 20.5..28, z 4..18: pi*(28^2-20.5^2)*14 = 15997.83. They share only the circle r 20.5, z 4, so the join keeps them as two bodies (touching: separate, the default) or refuses cleanly; never a hang",
"outcome": "solid_or_refused",
"body_count": 2,
"volume_mm3": 16253.0296
}
@@ -0,0 +1,110 @@
{
"commands": [
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0,
0,
0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
0,
1
]
},
"name": "A"
}
},
{
"command": "sketch.rectangle.two_point",
"params": {
"p0": [
20,
0
],
"p1": [
20.5,
4
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.revolve",
"params": {
"sketch": "A",
"axis": "y",
"body_name": "RingA"
}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0,
0,
0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
0,
1
]
},
"name": "B"
}
},
{
"command": "sketch.rectangle.two_point",
"params": {
"p0": [
20.5,
4
],
"p1": [
28,
18
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.revolve",
"params": {
"sketch": "B",
"axis": "y",
"body_name": "RingB"
}
},
{
"command": "solid.combine",
"params": {
"target": "RingB",
"tools": [
"RingA"
],
"operation": "join"
}
}
]
}
@@ -78,5 +78,53 @@
{
"source": "tangency-labs/solidcraft#4422",
"why": "render: wgpu surface not configured, no geometry"
},
{
"source": "tangency-labs/solidcraft#4469",
"why": "the recipe needs sketch.offset of a free-form chain (PR #4156), refused on this branch before the kernel is reached; the two-distance chamfer of a spline rim is fillets/4332-two-distance-chamfer-of-spline-rim"
},
{
"source": "tangency-labs/solidcraft#4476",
"why": "no geometry: unclean exit in timeline.dependents (document), the design is not given"
},
{
"source": "tangency-labs/solidcraft#4478",
"why": "no reproduction: the display triangulation library's assertion, title only"
},
{
"source": "tangency-labs/solidcraft#4491",
"why": "render: blank or corrupted offscreen captures, no geometry"
},
{
"source": "tangency-labs/solidcraft#4559",
"why": "no geometry: unclean exit with no command running (an agent driving the app)"
},
{
"source": "tangency-labs/solidcraft#4599",
"why": "render: a GPU hang (Intel/Mesa); the replay rebuilds cleanly"
},
{
"source": "tangency-labs/solidcraft#4604",
"why": "no geometry: measuring a large assembly runs on the window thread (document/UI)"
},
{
"source": "tangency-labs/solidcraft#4605",
"why": "render: startup failure creating the graphics device on macOS"
},
{
"source": "tangency-labs/solidcraft#4627",
"why": "render: crash inside the NVIDIA driver, no command"
},
{
"source": "tangency-labs/solidcraft#4709",
"why": "no reproduction: a slow extrude shown by screenshot only"
},
{
"source": "tangency-labs/solidcraft#4777",
"why": "no geometry: unclean exit with no command and no replay"
},
{
"source": "tangency-labs/solidcraft#4791",
"why": "render: capture buffer and GPU hang on Intel/Mesa, no geometry"
}
]
@@ -0,0 +1,14 @@
{
"sources": [
"tangency-labs/solidcraft#4702"
],
"what": "a disc (r16 x 5) with a radial slot cut 3.2 down (65..115 deg, r 10 out through the rim): the vertical edge where a slot wall meets the outer cylinder chamfered 0.4: refused ('both faces next to the edge must be planar')",
"source": "analytic",
"method": "disc pi 256 5 less the slot sector (50/360) pi (16^2 - 10^2) 3.2. The chamfer cuts the corner between the radial wall and the cylinder: from 0.4 in along the wall to 0.4 round the cylinder, i.e. the triangle (corner, the two points) plus the circular segment r^2/2 (d - sin d), d = 0.4/16, over the 3.2 mm edge. Faces: top, bottom, outer cylinder, slot floor, two walls, inner wall, chamfer = 8. Graded to 1e-5 relative: the chamfer is 7e-5 of the volume, and how a distance is measured round the cylinder (along it, or to the offset surfaces' intersection) moves it by up to 4% of itself",
"body_count": 1,
"faces": 8,
"volume_mm3": 3803.164466,
"tolerance": {
"rel": 1e-05
}
}
@@ -0,0 +1,119 @@
{
"commands": [
{
"command": "solid.cylinder",
"params": {
"radius": 16,
"height": 5,
"body_name": "Adapter"
}
},
{
"command": "sketch.create",
"params": {
"plane": {
"face": [
0,
0,
5
]
},
"name": "Slot",
"project_edges": false
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
4.226183,
9.063078
],
[
8.452365,
18.126156
]
]
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
8.452365,
18.126156
],
"through": [
0.0,
20.0
],
"end": [
-8.452365,
18.126156
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-8.452365,
18.126156
],
[
-4.226183,
9.063078
]
]
}
},
{
"command": "sketch.arc.three_point",
"params": {
"start": [
-4.226183,
9.063078
],
"through": [
0.0,
10.0
],
"end": [
4.226183,
9.063078
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"sketch": "Slot",
"distance": 3.2,
"direction": "negative",
"operation": "cut",
"targets": [
"Adapter"
]
}
},
{
"command": "solid.chamfer",
"params": {
"edges": [
[
6.761892,
14.500925,
3.4
]
],
"distance": 0.4
}
}
]
}
@@ -54,5 +54,97 @@
{
"source": "tangency-labs/solidcraft#4429",
"why": "needs the user design: a damper of joined extrudes with six chamfers; the failing chain is not reproducible from the report"
},
{
"source": "tangency-labs/solidcraft#4444",
"why": "no reproduction: a variable-radius fillet on an unknown part with curved faces, no design"
},
{
"source": "tangency-labs/solidcraft#4472",
"why": "no geometry: the report arrived empty"
},
{
"source": "tangency-labs/solidcraft#4474",
"why": "no geometry: a sketch fillet at a zero-length line (sketch command)"
},
{
"source": "tangency-labs/solidcraft#4495",
"why": "needs the user design: a drafted boss whose corner runs onto a 17 deg face; not reproducible from the screenshot"
},
{
"source": "tangency-labs/solidcraft#4496",
"why": "no geometry: the report arrived empty"
},
{
"source": "tangency-labs/solidcraft#4498",
"why": "no geometry: distance-and-angle chamfer exists (UI question)"
},
{
"source": "tangency-labs/solidcraft#4499",
"why": "needs the user design: a battery caddy with 40 features; the 8-edge outline is not reproducible alone"
},
{
"source": "tangency-labs/solidcraft#4518",
"why": "no single right answer: a second concave fillet ending on an earlier one's round (how they meet is the method's choice)"
},
{
"source": "tangency-labs/solidcraft#4543",
"why": "no geometry: the report arrived empty"
},
{
"source": "tangency-labs/solidcraft#4550",
"why": "no reproduction: one edge on an unknown large part, screenshot only"
},
{
"source": "tangency-labs/solidcraft#4569",
"why": "no reproduction: an unequal chamfer round a loop on an unknown part (a stated limit)"
},
{
"source": "tangency-labs/solidcraft#4575",
"why": "no geometry: the reporter withdrew it (chamfer preview works)"
},
{
"source": "tangency-labs/solidcraft#4661",
"why": "no reproduction: vertical-edge fillets meeting earlier top fillets on an unknown part, no message or design"
},
{
"source": "tangency-labs/solidcraft#4681",
"why": "no geometry: sketch fillet radius rejects an expression (sketch)"
},
{
"source": "tangency-labs/solidcraft#4690",
"why": "needs the user design: a 19-feature, 2-body mount; the two edges are not reproducible from the report"
},
{
"source": "tangency-labs/solidcraft#4703",
"why": "UI only: a hole edge counts as \"2 selected\" (a seam-split circle)"
},
{
"source": "tangency-labs/solidcraft#4716",
"why": "no reproduction: a 10 mm chamfer beside a circle cuts the far side too, unknown part (0.18.3), no design"
},
{
"source": "tangency-labs/solidcraft#4744",
"why": "no reproduction: a curved 8-edge chain on an unknown part (0.18.4), no design"
},
{
"source": "tangency-labs/solidcraft#4772",
"why": "needs the user design: a 26-feature handle (poignee.json) with a fillet along a curve; no small stand-in"
},
{
"source": "tangency-labs/solidcraft#4782",
"why": "no geometry: a fillet rolling over onto the next face (feature request)"
},
{
"source": "tangency-labs/solidcraft#4793",
"why": "no reproduction: a 9 mm chamfer of one curved edge on an unknown part (0.18.4)"
},
{
"source": "tangency-labs/solidcraft#4795",
"why": "needs the user design: a hook of filleted extrudes; the refusal depends on one earlier distance (11+3 vs 12.7+3)"
},
{
"source": "tangency-labs/solidcraft#4806",
"why": "no reproduction: a 0.2 mm chamfer chain on an unknown part, no design"
}
]
@@ -0,0 +1,11 @@
{
"sources": [
"tangency-labs/solidcraft#4438"
],
"what": "a whole torus (R 15, r 5) exported to STEP and read back: truck wrote it as two faces on one shared loop with no seam edges (V-E+F = 2), which other readers took as a sphere-like shell of volume 0",
"source": "analytic",
"method": "V = 2*pi^2*R*r^2 = 7402.203, A = 4*pi^2*R*r = 2960.881. The re-imported body is graded, not the exported one (the design holds only the import)",
"body_count": 1,
"volume_mm3": 7402.2033,
"area_mm2": 2960.8813
}
@@ -0,0 +1,31 @@
{
"commands": [
{
"command": "solid.torus",
"params": {
"major": 15,
"minor": 5,
"body_name": "Torus"
}
},
{
"command": "file.export",
"params": {
"path": "$OUT/kernel-case-4438.step",
"format": "step"
}
},
{
"command": "file.new",
"params": {
"name": "Reimported"
}
},
{
"command": "file.insert_step",
"params": {
"path": "$OUT/kernel-case-4438.step"
}
}
]
}
@@ -0,0 +1,93 @@
solid box_degenerate
facet normal 0 0 -1
outer loop
vertex 0 0 0
vertex 20 10 0
vertex 20 0 0
endloop
endfacet
facet normal 0 0 -1
outer loop
vertex 0 0 0
vertex 0 10 0
vertex 20 10 0
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 0 0 5
vertex 20 0 5
vertex 20 10 5
endloop
endfacet
facet normal 0 0 1
outer loop
vertex 0 0 5
vertex 20 10 5
vertex 0 10 5
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex 0 0 0
vertex 20 0 0
vertex 20 0 5
endloop
endfacet
facet normal 0 -1 0
outer loop
vertex 0 0 0
vertex 20 0 5
vertex 0 0 5
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 20 0 0
vertex 20 10 0
vertex 20 10 5
endloop
endfacet
facet normal 1 0 0
outer loop
vertex 20 0 0
vertex 20 10 5
vertex 20 0 5
endloop
endfacet
facet normal 0 1 0
outer loop
vertex 20 10 0
vertex 0 10 0
vertex 0 10 5
endloop
endfacet
facet normal 0 1 0
outer loop
vertex 20 10 0
vertex 0 10 5
vertex 20 10 5
endloop
endfacet
facet normal -1 0 0
outer loop
vertex 0 10 0
vertex 0 0 0
vertex 0 0 5
endloop
endfacet
facet normal -1 0 0
outer loop
vertex 0 10 0
vertex 0 0 5
vertex 0 10 5
endloop
endfacet
facet normal 0 0 0
outer loop
vertex 0 0 0
vertex 10 0 0
vertex 20 0 0
endloop
endfacet
endsolid box_degenerate
@@ -0,0 +1,11 @@
{
"sources": [
"tangency-labs/solidcraft#4561"
],
"what": "Convert Mesh of a 20x10x5 box STL (12 triangles) with one extra zero-area triangle lying on an edge ((0,0,0) (10,0,0) (20,0,0)): refused with 'mesh conversion: degenerate triangle'",
"source": "analytic",
"method": "the zero-area triangle adds no surface; the mesh is the closed box, a constant-section prism, so it converts: V = 20*10*5 = 1000, 6 faces. The STL is written by hand (box-degenerate.stl, the triage's mesh)",
"body_count": 1,
"faces": 6,
"volume_mm3": 1000.0
}
@@ -0,0 +1,22 @@
{
"commands": [
{
"command": "file.insert_mesh",
"params": {
"path": "$CASE/box-degenerate.stl"
}
},
{
"command": "component.activate",
"params": {
"component": "box-degenerate"
}
},
{
"command": "mesh.convert",
"params": {
"body": "box-degenerate"
}
}
]
}
@@ -0,0 +1,23 @@
{
"sources": [
"tangency-labs/solidcraft#4598"
],
"what": "an O40 x 60 rod with a blind O8 cross bore from its side (x 10..25 at mid height), moved 100 mm, exported to STEP and read back: the body came in empty with no warning (truck's exported edges had 1399 control points)",
"source": "analytic",
"method": "the bore runs from the wall (x = sqrt(400 - y^2)) in to its flat end at x = 10: removed = Int_-4^4 2 sqrt(16-y^2) (sqrt(400-y^2) - 10) dy (python quadrature) = 497.6028. V = pi*20^2*60 - removed. Faces: top, bottom, side, bore wall, bore end = 5. Moved 100 in x: bbox x 80..120",
"body_count": 1,
"faces": 5,
"volume_mm3": 74900.6209,
"bbox": {
"min": [
80.0,
-20.0,
0.0
],
"max": [
120.0,
20.0,
60.0
]
}
}
@@ -0,0 +1,64 @@
{
"commands": [
{
"command": "solid.cylinder",
"params": {
"diameter": 40,
"height": 60,
"body_name": "Rod"
}
},
{
"command": "solid.cylinder",
"params": {
"diameter": 8,
"height": 15,
"base": [
10,
0,
30
],
"axis": "X",
"operation": "cut",
"targets": [
"Rod"
]
}
},
{
"command": "solid.move",
"params": {
"bodies": [
"Rod"
],
"translate": [
100,
0,
0
]
}
},
{
"command": "file.export",
"params": {
"path": "$OUT/kernel-case-4598.step",
"format": "step",
"bodies": [
"Rod"
]
}
},
{
"command": "file.new",
"params": {
"name": "Reimported"
}
},
{
"command": "file.insert_step",
"params": {
"path": "$OUT/kernel-case-4598.step"
}
}
]
}
+104
View File
@@ -6,5 +6,109 @@
{
"source": "tangency-labs/solidcraft#4274",
"why": "UI only: image canvas in sketches (feature request)"
},
{
"source": "tangency-labs/solidcraft#4451",
"why": "no kernel geometry: OBJ export writes unshared vertices (file export)"
},
{
"source": "tangency-labs/solidcraft#4483",
"why": "no reproduction: operations on a user's 51-body STEP assembly (mostly working on 0.20.0)"
},
{
"source": "tangency-labs/solidcraft#4485",
"why": "no geometry: the report arrived empty"
},
{
"source": "tangency-labs/solidcraft#4500",
"why": "no geometry: the report arrived empty"
},
{
"source": "tangency-labs/solidcraft#4552",
"why": "no reproduction: a user's STEP wheels import with holes (the STEP is the reporter's)"
},
{
"source": "tangency-labs/solidcraft#4553",
"why": "no geometry: FreeCAD history import (feature request)"
},
{
"source": "tangency-labs/solidcraft#4554",
"why": "no geometry: History hover stalls on large assemblies (render)"
},
{
"source": "tangency-labs/solidcraft#4560",
"why": "no geometry: Convert Mesh's 50 000 triangle limit, as designed (dup of #346)"
},
{
"source": "tangency-labs/solidcraft#4564",
"why": "no geometry: Convert Mesh takes constant-section prisms only, as designed (dup of #358)"
},
{
"source": "tangency-labs/solidcraft#4586",
"why": "no geometry: Convert Mesh takes constant-section prisms only, as designed (dup of #358)"
},
{
"source": "tangency-labs/solidcraft#4609",
"why": "no geometry: Convert Mesh needs the mesh's component active (document)"
},
{
"source": "tangency-labs/solidcraft#4616",
"why": "no geometry: viewport memory for repeated placements (render)"
},
{
"source": "tangency-labs/solidcraft#4632",
"why": "no geometry: Convert Mesh takes constant-section prisms only, as designed (dup of #358)"
},
{
"source": "tangency-labs/solidcraft#4633",
"why": "no geometry: Convert Mesh run without a mesh body selected (user error)"
},
{
"source": "tangency-labs/solidcraft#4637",
"why": "no geometry: viewport mesh indexing (render)"
},
{
"source": "tangency-labs/solidcraft#4646",
"why": "no geometry: viewport culling of instanced placements (render)"
},
{
"source": "tangency-labs/solidcraft#4662",
"why": "no geometry: mesh body size measured every frame (performance)"
},
{
"source": "tangency-labs/solidcraft#4668",
"why": "no geometry: hover highlight rebuilt per pointer move (render)"
},
{
"source": "tangency-labs/solidcraft#4673",
"why": "no geometry: undo history copies imported meshes (memory)"
},
{
"source": "tangency-labs/solidcraft#4676",
"why": "no kernel geometry: Insert STEP ignores its matrix parameter (placement)"
},
{
"source": "tangency-labs/solidcraft#4679",
"why": "no geometry: welding a large mesh for display stalls a frame (render)"
},
{
"source": "tangency-labs/solidcraft#4700",
"why": "no geometry: Convert Mesh takes constant-section prisms only, as designed (dup of #358)"
},
{
"source": "tangency-labs/solidcraft#4722",
"why": "no geometry: a freeform STL refused by Convert Mesh, as designed (dup of #358 and #4609)"
},
{
"source": "tangency-labs/solidcraft#4724",
"why": "no geometry: display levels of detail (render)"
},
{
"source": "tangency-labs/solidcraft#4768",
"why": "no kernel geometry: moving repeated STEP placements moves the shared definition (placement)"
},
{
"source": "tangency-labs/solidcraft#4814",
"why": "no geometry: Convert Mesh needs the mesh's component active (dup of #4609)"
}
]
@@ -14,5 +14,21 @@
{
"source": "tangency-labs/solidcraft#4301",
"why": "no geometry: Flange on a body that isn't sheet metal (dup of #2987)"
},
{
"source": "tangency-labs/solidcraft#4440",
"why": "UI only: the flat pattern view doesn't draw perforations"
},
{
"source": "tangency-labs/solidcraft#4514",
"why": "no geometry: Flange on a body that isn't sheet metal (dup of #2987)"
},
{
"source": "tangency-labs/solidcraft#4713",
"why": "no reproduction: Press Pull on a user's sheet-metal part runs a solid extrude (tool choice)"
},
{
"source": "tangency-labs/solidcraft#4720",
"why": "no geometry: two sheet-metal bodies combined lose their flat pattern, as warned (feature request)"
}
]
@@ -0,0 +1,9 @@
{
"sources": [
"tangency-labs/solidcraft#4492"
],
"what": "the top face of a 40x30x10 block whose four top edges are rounded r3, offset 19 mm up: truck refused it ('a corner whose faces don't meet the same way after the move')",
"source": "invariants",
"method": "the top face's neighbours are the rounds, tangent to it, which cannot extend to meet a plane 19 mm higher; how the gap closes (the rounds carried up with the face, or walls standing on the old face) is the method's choice, so only the outcome is graded: the offset succeeds with one valid closed body",
"body_count": 1
}
@@ -0,0 +1,59 @@
{
"commands": [
{
"command": "solid.box",
"params": {
"corner": [
0,
0,
0
],
"length": 40,
"width": 30,
"height": 10,
"body_name": "Block"
}
},
{
"command": "solid.fillet",
"params": {
"edges": [
[
20,
0,
10
],
[
20,
30,
10
],
[
0,
15,
10
],
[
40,
15,
10
]
],
"radius": 3
}
},
{
"command": "solid.offset_face",
"params": {
"faces": [
[
20,
15,
10
]
],
"distance": 19
}
}
]
}
@@ -0,0 +1,12 @@
{
"sources": [
"tangency-labs/solidcraft#4567",
"tangency-labs/solidcraft#5076",
"tangency-labs/solidcraft#5050",
"tangency-labs/solidcraft#4743"
],
"what": "a vase revolved from a fit-point spline wall, shelled 2 mm from its flat top: truck refused any free-form wall ('offset: only bodies with planes, cylinders, cones, spheres and tori')",
"source": "invariants",
"method": "the spline wall's curvature radius stays well above 2 mm, so the inward 2 mm offset exists: one valid closed body, open at the top. The offset of a spline surface has no closed-form volume, so only the outcome is graded (the reporter's 7-command repro; the removed face is the flat top at y = 46)",
"body_count": 1
}
@@ -0,0 +1,99 @@
{
"commands": [
{
"command": "sketch.create",
"params": {
"plane": "XY"
}
},
{
"command": "sketch.spline.fit_point",
"params": {
"points": [
[
0,
0
],
[
14,
3
],
[
22,
14
],
[
22,
26
],
[
14,
36
],
[
6,
40
],
[
6,
46
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
6,
46
],
[
0,
46
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
46
],
[
0,
0
]
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.revolve",
"params": {
"axis": "y",
"angle": "360 deg"
}
},
{
"command": "solid.shell",
"params": {
"faces": [
[
0,
46,
3
]
],
"thickness": "2 mm"
}
}
]
}
@@ -0,0 +1,10 @@
{
"sources": [
"tangency-labs/solidcraft#4711"
],
"what": "a 2 mm shell, open at the bottom, of a 60x40x10 block whose r3 through hole breaks out into a 10x10 notch at its edge: truck took 75 s and failed ('boolean Cut: no result')",
"source": "invariants",
"method": "every wall has room for 2 mm (the thinnest, between the hole and the block's side, is 4 mm), so the shell exists: one valid closed body with one shell, open at the bottom. The cavity's corners at the hole's break-out follow the offset surfaces, so the volume is not closed-form (the reporter's script)",
"body_count": 1,
"shells": 1
}
@@ -0,0 +1,52 @@
{
"commands": [
{
"command": "solid.box",
"params": {
"length": 60,
"width": 40,
"height": 10
}
},
{
"command": "solid.cylinder",
"params": {
"radius": 3,
"height": 20,
"base": [
22.5,
7,
-5
],
"operation": "cut"
}
},
{
"command": "solid.box",
"params": {
"length": 10,
"width": 10,
"height": 20,
"corner": [
25,
-5,
-5
],
"operation": "cut"
}
},
{
"command": "solid.shell",
"params": {
"faces": [
[
50,
30,
0
]
],
"thickness": 2
}
}
]
}
@@ -30,5 +30,61 @@
{
"source": "tangency-labs/solidcraft#4385",
"why": "UI only: sketch offset's second distance dimension"
},
{
"source": "tangency-labs/solidcraft#4464",
"why": "no geometry: sketch offset removes degrees of freedom (sketch solver)"
},
{
"source": "tangency-labs/solidcraft#4467",
"why": "no reproduction: shell removing six faces of a user's 4-feature part, no design"
},
{
"source": "tangency-labs/solidcraft#4484",
"why": "duplicate of #4879: the thicken now builds; the cut into it is #4879's case"
},
{
"source": "tangency-labs/solidcraft#4503",
"why": "no reproduction: shell of a user's twisted swept slot (free-form, dup of #2432), screenshots only"
},
{
"source": "tangency-labs/solidcraft#4510",
"why": "no geometry: delete face in the surface workspace heals instead of opening (feature request)"
},
{
"source": "tangency-labs/solidcraft#4522",
"why": "no geometry: the report arrived empty"
},
{
"source": "tangency-labs/solidcraft#4555",
"why": "no kernel geometry: a face given by a point resolves to the other body's coplanar face (engine face lookup)"
},
{
"source": "tangency-labs/solidcraft#4573",
"why": "no kernel geometry: \"select at least one face to remove\" on a picked face (dup of #4555, engine face lookup)"
},
{
"source": "tangency-labs/solidcraft#4574",
"why": "no reproduction: shell beside a tangent face of an unknown part, screenshot only"
},
{
"source": "tangency-labs/solidcraft#4583",
"why": "no geometry: sketch offset with unsolved constraints (sketch)"
},
{
"source": "tangency-labs/solidcraft#4742",
"why": "no reproduction: a 0.1 mm shell after a draft and fillets on an unknown part, no design"
},
{
"source": "tangency-labs/solidcraft#4743",
"why": "duplicate of the free-form shell case from #4567 (a loft's walls instead of a revolve's)"
},
{
"source": "tangency-labs/solidcraft#4775",
"why": "no geometry: Offset Face run with no faces picked (user error)"
},
{
"source": "tangency-labs/solidcraft#4822",
"why": "no reproduction: a screenshot only"
}
]
+197 -1
View File
@@ -1683,5 +1683,201 @@
"4424": "issue, open",
"4428": "issue, open",
"4429": "issue, open",
"4431": "issue, open"
"4431": "issue, open",
"4433": "issue, closed",
"4434": "issue, closed",
"4435": "issue, closed",
"4437": "issue, open",
"4438": "issue, open",
"4440": "issue, closed",
"4443": "issue, open",
"4444": "issue, open",
"4448": "issue, open",
"4451": "issue, open",
"4454": "issue, open",
"4458": "issue, open",
"4464": "issue, closed",
"4465": "issue, open",
"4467": "issue, open",
"4468": "issue, open",
"4469": "issue, open",
"4472": "issue, open",
"4474": "issue, open",
"4476": "issue, open",
"4477": "issue, open",
"4478": "issue, closed",
"4481": "issue, open",
"4483": "issue, open",
"4484": "issue, open",
"4485": "issue, open",
"4488": "issue, open",
"4489": "issue, open",
"4491": "issue, open",
"4492": "issue, open",
"4494": "issue, open",
"4495": "issue, open",
"4496": "issue, open",
"4498": "issue, open",
"4499": "issue, open",
"4500": "issue, open",
"4502": "issue, open",
"4503": "issue, open",
"4505": "issue, open",
"4506": "issue, closed",
"4509": "issue, open",
"4510": "issue, open",
"4514": "issue, closed",
"4516": "issue, open",
"4518": "issue, open",
"4521": "issue, open",
"4522": "issue, open",
"4523": "issue, open",
"4524": "issue, open",
"4525": "issue, open",
"4528": "issue, open",
"4530": "issue, open",
"4532": "issue, open",
"4534": "issue, closed",
"4537": "issue, open",
"4542": "issue, open",
"4543": "issue, open",
"4544": "issue, open",
"4547": "issue, open",
"4550": "issue, open",
"4551": "issue, open",
"4552": "issue, open",
"4553": "issue, open",
"4554": "issue, open",
"4555": "issue, closed",
"4557": "issue, open",
"4558": "issue, closed",
"4559": "issue, open",
"4560": "issue, open",
"4561": "issue, open",
"4563": "issue, closed",
"4564": "issue, closed",
"4567": "issue, open",
"4569": "issue, open",
"4572": "issue, open",
"4573": "issue, open",
"4574": "issue, open",
"4575": "issue, closed",
"4576": "issue, closed",
"4577": "issue, open",
"4579": "issue, open",
"4582": "issue, closed",
"4583": "issue, open",
"4584": "issue, open",
"4586": "issue, open",
"4589": "issue, closed",
"4593": "issue, closed",
"4594": "issue, open",
"4597": "issue, open",
"4598": "issue, open",
"4599": "issue, closed",
"4600": "issue, open",
"4604": "issue, closed",
"4605": "issue, open",
"4606": "issue, open",
"4609": "issue, closed",
"4616": "issue, open",
"4619": "issue, open",
"4621": "issue, open",
"4623": "issue, closed",
"4624": "issue, open",
"4627": "issue, open",
"4631": "issue, open",
"4632": "issue, open",
"4633": "issue, open",
"4636": "issue, open",
"4637": "issue, open",
"4639": "issue, open",
"4643": "issue, open",
"4644": "issue, open",
"4646": "issue, closed",
"4654": "issue, open",
"4658": "issue, closed",
"4661": "issue, open",
"4662": "issue, closed",
"4665": "issue, closed",
"4668": "issue, closed",
"4672": "issue, open",
"4673": "issue, closed",
"4676": "issue, closed",
"4679": "issue, closed",
"4681": "issue, closed",
"4683": "issue, open",
"4684": "issue, open",
"4685": "issue, open",
"4689": "issue, open",
"4690": "issue, open",
"4694": "issue, open",
"4696": "issue, open",
"4697": "issue, open",
"4699": "issue, open",
"4700": "issue, open",
"4701": "issue, closed",
"4702": "issue, open",
"4703": "issue, open",
"4704": "issue, open",
"4706": "issue, open",
"4708": "issue, open",
"4709": "issue, open",
"4711": "issue, open",
"4713": "issue, open",
"4714": "issue, open",
"4715": "issue, open",
"4716": "issue, open",
"4720": "issue, open",
"4722": "issue, closed",
"4723": "issue, open",
"4724": "issue, closed",
"4726": "issue, open",
"4727": "issue, open",
"4728": "issue, open",
"4729": "issue, open",
"4730": "issue, open",
"4731": "issue, open",
"4733": "issue, open",
"4734": "issue, closed",
"4735": "issue, open",
"4736": "issue, open",
"4737": "issue, open",
"4738": "issue, closed",
"4741": "issue, closed",
"4742": "issue, open",
"4743": "issue, open",
"4744": "issue, open",
"4750": "issue, open",
"4753": "issue, open",
"4755": "issue, open",
"4756": "issue, open",
"4760": "issue, open",
"4761": "issue, open",
"4763": "issue, open",
"4768": "issue, open",
"4772": "issue, open",
"4775": "issue, open",
"4777": "issue, open",
"4782": "issue, open",
"4783": "issue, closed",
"4791": "issue, open",
"4793": "issue, open",
"4795": "issue, open",
"4798": "issue, open",
"4799": "issue, open",
"4800": "issue, closed",
"4803": "issue, open",
"4805": "issue, open",
"4806": "issue, open",
"4807": "issue, open",
"4810": "issue, open",
"4814": "issue, closed",
"4818": "issue, open",
"4822": "issue, open",
"4825": "issue, closed",
"4826": "issue, open",
"4827": "issue, open",
"4828": "issue, open",
"4829": "issue, open"
}
@@ -0,0 +1,9 @@
{
"sources": [
"tangency-labs/solidcraft#4683"
],
"what": "a box cut from a 6-section loft (spline crown and a flat bottom at z = -1) whose last section lies on a plane tilted 2 deg off its neighbours', mirrored into one body; the box crosses the tilted end and reaches below the bottom face: truck's result shell was missing a face ('no result')",
"source": "invariants",
"method": "the mirrored loft is one solid symmetric about YZ, x -149..149; the box (x 91..240, y 90..210, z -2..118) cuts through its tilted end and out of its flat bottom, so the cut leaves one valid closed body. The loft's free-form volume is not closed-form. Synthetic sections of the report's shape (a crowned spline over a flat base, narrowing along x), not its numbers",
"body_count": 1
}
@@ -0,0 +1,584 @@
{
"commands": [
{
"command": "construct.plane.offset",
"params": {
"base": "YZ",
"offset": "0 mm",
"name": "P0"
}
},
{
"command": "sketch.create",
"params": {
"plane": "P0",
"name": "S0"
}
},
{
"command": "sketch.spline.fit_point",
"params": {
"points": [
[
300.0,
2.0
],
[
225.0,
41.375
],
[
150.0,
69.5
],
[
75.0,
86.375
],
[
0.0,
92.0
],
[
-75.0,
86.375
],
[
-150.0,
69.5
],
[
-225.0,
41.375
],
[
-300.0,
2.0
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-300.0,
2.0
],
[
-303.0,
-1
],
[
303.0,
-1
],
[
300.0,
2.0
]
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "construct.plane.offset",
"params": {
"base": "YZ",
"offset": "30 mm",
"name": "P30"
}
},
{
"command": "sketch.create",
"params": {
"plane": "P30",
"name": "S30"
}
},
{
"command": "sketch.spline.fit_point",
"params": {
"points": [
[
282.0,
2.0
],
[
211.5,
36.7812
],
[
141.0,
61.625
],
[
70.5,
76.5312
],
[
0.0,
81.5
],
[
-70.5,
76.5312
],
[
-141.0,
61.625
],
[
-211.5,
36.7812
],
[
-282.0,
2.0
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-282.0,
2.0
],
[
-285.0,
-1
],
[
285.0,
-1
],
[
282.0,
2.0
]
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "construct.plane.offset",
"params": {
"base": "YZ",
"offset": "60 mm",
"name": "P60"
}
},
{
"command": "sketch.create",
"params": {
"plane": "P60",
"name": "S60"
}
},
{
"command": "sketch.spline.fit_point",
"params": {
"points": [
[
264.0,
2.0
],
[
198.0,
32.1875
],
[
132.0,
53.75
],
[
66.0,
66.6875
],
[
0.0,
71.0
],
[
-66.0,
66.6875
],
[
-132.0,
53.75
],
[
-198.0,
32.1875
],
[
-264.0,
2.0
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-264.0,
2.0
],
[
-267.0,
-1
],
[
267.0,
-1
],
[
264.0,
2.0
]
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "construct.plane.offset",
"params": {
"base": "YZ",
"offset": "100 mm",
"name": "P100"
}
},
{
"command": "sketch.create",
"params": {
"plane": "P100",
"name": "S100"
}
},
{
"command": "sketch.spline.fit_point",
"params": {
"points": [
[
240.0,
2.0
],
[
180.0,
26.0625
],
[
120.0,
43.25
],
[
60.0,
53.5625
],
[
0.0,
57.0
],
[
-60.0,
53.5625
],
[
-120.0,
43.25
],
[
-180.0,
26.0625
],
[
-240.0,
2.0
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-240.0,
2.0
],
[
-243.0,
-1
],
[
243.0,
-1
],
[
240.0,
2.0
]
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "construct.plane.offset",
"params": {
"base": "YZ",
"offset": "130 mm",
"name": "P130"
}
},
{
"command": "sketch.create",
"params": {
"plane": "P130",
"name": "S130"
}
},
{
"command": "sketch.spline.fit_point",
"params": {
"points": [
[
222.0,
2.0
],
[
166.5,
21.4688
],
[
111.0,
35.375
],
[
55.5,
43.7188
],
[
0.0,
46.5
],
[
-55.5,
43.7188
],
[
-111.0,
35.375
],
[
-166.5,
21.4688
],
[
-222.0,
2.0
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-222.0,
2.0
],
[
-225.0,
-1
],
[
225.0,
-1
],
[
222.0,
2.0
]
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
149.0,
0.0,
0.0
],
"x_dir": [
0.0,
1.0,
0.0
],
"y_dir": [
-0.034899,
0.0,
0.999391
]
},
"name": "S149"
}
},
{
"command": "sketch.spline.fit_point",
"params": {
"points": [
[
210.6,
2.0
],
[
157.95,
18.5594
],
[
105.3,
30.3875
],
[
52.65,
37.4844
],
[
0.0,
39.85
],
[
-52.65,
37.4844
],
[
-105.3,
30.3875
],
[
-157.95,
18.5594
],
[
-210.6,
2.0
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-210.6,
2.0
],
[
-213.6,
-1
],
[
213.6,
-1
],
[
210.6,
2.0
]
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.loft",
"params": {
"sections": [
{
"sketch": "S0"
},
{
"sketch": "S30"
},
{
"sketch": "S60"
},
{
"sketch": "S100"
},
{
"sketch": "S130"
},
{
"sketch": "S149"
}
],
"body_name": "Top",
"name": "Top"
}
},
{
"command": "solid.mirror",
"params": {
"bodies": [
"Top"
],
"plane": "YZ",
"combine": true
}
},
{
"command": "solid.box",
"params": {
"length": 149,
"width": 120,
"height": 120,
"center": [
165.5,
150.0,
58.0
],
"operation": "new",
"body_name": "K"
}
},
{
"command": "solid.combine",
"params": {
"target": "Top",
"tools": [
"K"
],
"operation": "cut"
}
}
]
}
@@ -0,0 +1,13 @@
{
"sources": [
"tangency-labs/solidcraft#4689",
"tangency-labs/solidcraft#5317",
"tangency-labs/solidcraft#4521"
],
"what": "an L profile whose long leg lies on the revolve axis (the axis is the profile's own line), revolved 360 deg: the flat faces came out split into three 120 deg sectors",
"source": "analytic",
"method": "a disc r20 x 5 under a post r5 x 25: V = pi 400 5 + pi 25 25 = 8246.681. Faces: bottom, disc side, the ring on its top, post side, post top = 5 (each flat face one face)",
"body_count": 1,
"faces": 5,
"volume_mm3": 8246.6807
}
@@ -0,0 +1,71 @@
{
"commands": [
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0,
0,
0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
0,
1
]
},
"name": "Profile"
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
0
],
[
20,
0
],
[
20,
5
],
[
5,
5
],
[
5,
30
],
[
0,
30
]
],
"closed": true
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.revolve",
"params": {
"sketch": "Profile",
"axis": "l6",
"angle": "360 deg"
}
}
]
}
@@ -0,0 +1,10 @@
{
"sources": [
"tangency-labs/solidcraft#4708"
],
"what": "a slot revolve-cut through the wall of a shelled cup (r 22.5, 2 mm walls) over 30 deg: the revolve cut (and the same cut as a combine) did nothing (synthetic: the report's cup also had a chamfer and a fillet)",
"source": "analytic",
"method": "cup pi 22.5^2 10 - pi 20.5^2 8; the slot's section (r 19..24, z 5..8) crosses the wall r 20.5..22.5: it removes (30/360) pi (22.5^2 - 20.5^2) 3",
"body_count": 1,
"volume_mm3": 5274.7341
}
@@ -0,0 +1,78 @@
{
"commands": [
{
"command": "solid.cylinder",
"params": {
"radius": 22.5,
"height": 10,
"body_name": "Cup"
}
},
{
"command": "solid.shell",
"params": {
"faces": [
[
0,
0,
10
]
],
"thickness": 2
}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0,
0,
0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
0,
1
]
},
"name": "Slot",
"project_edges": false
}
},
{
"command": "sketch.rectangle.two_point",
"params": {
"p0": [
19,
5
],
"p1": [
24,
8
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.revolve",
"params": {
"sketch": "Slot",
"axis": "y",
"angle": "30 deg",
"operation": "cut",
"targets": [
"Cup"
]
}
}
]
}
@@ -18,5 +18,97 @@
{
"source": "tangency-labs/solidcraft#4358",
"why": "no kernel geometry: surface loft picks lost between copied sketches with the same curve ids (selection)"
},
{
"source": "tangency-labs/solidcraft#4454",
"why": "no geometry: a profile that crosses the revolve axis is refused by design (bisecting it at the axis works)"
},
{
"source": "tangency-labs/solidcraft#4465",
"why": "no kernel geometry: a surface pick kept by curve id resolves to the newest sketch (selection, dup of #4579)"
},
{
"source": "tangency-labs/solidcraft#4506",
"why": "no geometry: Revolve about a construction axis is not looked up (\"unknown sketch line\", command parameters)"
},
{
"source": "tangency-labs/solidcraft#4521",
"why": "duplicate of #4689: a profile edge on the revolve axis splits the flat faces"
},
{
"source": "tangency-labs/solidcraft#4524",
"why": "no reproduction: last command only (a loft join, 0.18.3), no design"
},
{
"source": "tangency-labs/solidcraft#4525",
"why": "no kernel geometry: boundary surface picks a curve by id from the wrong place (selection)"
},
{
"source": "tangency-labs/solidcraft#4528",
"why": "no reproduction: a join of two user lofts, no message or design"
},
{
"source": "tangency-labs/solidcraft#4576",
"why": "no geometry: Revolve about a construction axis (dup of #4506)"
},
{
"source": "tangency-labs/solidcraft#4579",
"why": "no kernel geometry: surface loft picks by curve id resolve to the wrong sketch (selection; the loft itself builds)"
},
{
"source": "tangency-labs/solidcraft#4606",
"why": "needs the user design: a swept body of 594 faces (512 cones, 64 spheres) revolve-cut"
},
{
"source": "tangency-labs/solidcraft#4631",
"why": "duplicate of tessellation/466-revolved-cone-tip-stays-smooth: a cone revolved from a triangle drawn wrong at its tip"
},
{
"source": "tangency-labs/solidcraft#4644",
"why": "UI only: Fair and Match Surface open no dialog"
},
{
"source": "tangency-labs/solidcraft#4694",
"why": "no reproduction: last command only (a revolve join), no design"
},
{
"source": "tangency-labs/solidcraft#4696",
"why": "no reproduction: a revolve join between cone and sphere faces of an unknown part, no design"
},
{
"source": "tangency-labs/solidcraft#4697",
"why": "no reproduction: last command only (a revolve join), no design"
},
{
"source": "tangency-labs/solidcraft#4699",
"why": "no reproduction: last command only (a revolve join), no design"
},
{
"source": "tangency-labs/solidcraft#4704",
"why": "no reproduction: a revolve join between cone and sphere faces of an unknown part, no design"
},
{
"source": "tangency-labs/solidcraft#4715",
"why": "no single right answer: a railed loft's shape between sections follows the rails' fitted spline (3D sketch fitting)"
},
{
"source": "tangency-labs/solidcraft#4729",
"why": "no geometry: surface extrude has no To Object extent (feature request)"
},
{
"source": "tangency-labs/solidcraft#4730",
"why": "no reproduction: a loft join hangs on a user's part, no design"
},
{
"source": "tangency-labs/solidcraft#4737",
"why": "no kernel geometry: surface extrude takes the newest sketch's curve of the same id (selection, dup of #4465)"
},
{
"source": "tangency-labs/solidcraft#4738",
"why": "no geometry: Revolve about a construction axis (dup of #4506)"
},
{
"source": "tangency-labs/solidcraft#4828",
"why": "needs the author's real duct part (STEP operands of a user design); a performance case"
}
]
@@ -0,0 +1,10 @@
{
"sources": [
"tangency-labs/solidcraft#4726"
],
"what": "a modelled M48x0.75 thread over the whole 25 mm of a O48 bolt (33 turns): the browser build froze; coarse pitches and 4 mm of it worked, slowly",
"source": "invariants",
"method": "a modelled external thread on its own nominal shaft: one valid closed body within the case's timeout (slow by nature: 600 s); the helical faces have no closed-form volume",
"body_count": 1,
"timeout_s": 600
}
@@ -0,0 +1,25 @@
{
"commands": [
{
"command": "solid.cylinder",
"params": {
"diameter": 48,
"height": 25,
"body_name": "Bolt"
}
},
{
"command": "solid.thread",
"params": {
"face": [
24,
0,
12.5
],
"designation": "M48x0.75",
"length": 25,
"modeled": true
}
}
]
}
@@ -14,5 +14,49 @@
{
"source": "tangency-labs/solidcraft#4414",
"why": "no geometry: left-handed threads (feature request)"
},
{
"source": "tangency-labs/solidcraft#4494",
"why": "duplicate of threads/3311-two-tapped-holes-both-modelled-threaded: a modelled thread re-faceting the body's other faces (a fillet here)"
},
{
"source": "tangency-labs/solidcraft#4537",
"why": "duplicate of threads/3311-two-tapped-holes-both-modelled-threaded: a second modelled thread on the same body finds no cylinder"
},
{
"source": "tangency-labs/solidcraft#4577",
"why": "no geometry: custom thread designations exist (M33.25x1.25 works)"
},
{
"source": "tangency-labs/solidcraft#4665",
"why": "no geometry: the GPU pick buffer (render)"
},
{
"source": "tangency-labs/solidcraft#4672",
"why": "duplicate of threads/3311-two-tapped-holes-both-modelled-threaded: a modelled thread facets the other round faces; no sizes"
},
{
"source": "tangency-labs/solidcraft#4684",
"why": "no geometry: gear generator and offsettable threads (feature requests)"
},
{
"source": "tangency-labs/solidcraft#4727",
"why": "duplicate of threads/3311-two-tapped-holes-both-modelled-threaded: modelled threads are faceted; no sizes"
},
{
"source": "tangency-labs/solidcraft#4734",
"why": "no geometry: see-through bodies sorted per triangle (render)"
},
{
"source": "tangency-labs/solidcraft#4735",
"why": "no geometry: a tapered coil (feature request)"
},
{
"source": "tangency-labs/solidcraft#4736",
"why": "duplicate of threads/3311-two-tapped-holes-both-modelled-threaded: a modelled thread facets the body; no sizes"
},
{
"source": "tangency-labs/solidcraft#4799",
"why": "no geometry: cosmetic threads don't cut the model, by design"
}
]