kernel-cases: booleans from #3404-#4124 (28 cases, 76 skipped)

Cases: mirror of a cut under a wall (#4011), coplanar intersect (#3671), multi-lump
intersect (#3526), split along a face plane (#3447), 64-peg join (#3455), boss on a rod
(#3485), collinear cylinders and pin in a bore (#3497), swept G2 cut (#3604), spokes
tangent to a hub (#3612), sphere and pyramid (#3633), column in a channel (#3665),
extrude to a point on an edge (#3729), emboss on a cylinder (#3782), circle-only join
(#3841), ring on a perforated plate (#3887), symmetric revolve cut (#4008), walls round a
floor (#4058), slab beside a bore (#4095), and others. The rest are skipped with a reason
in skipped-c.json.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
bherbruck
2026-10-21 05:57:04 -04:00
committed by jyviko
parent 0ae42f4111
commit 6a9b8fd740
55 changed files with 17235 additions and 0 deletions
@@ -0,0 +1,11 @@
{
"sources": [
"tangency-labs/solidcraft#3447",
"tangency-labs/solidcraft#2979"
],
"what": "split body where the splitting plane contains an end face (with a boss on it and an R1 fillet on the face's edge)",
"source": "analytic",
"method": "block x -10..-3.5 is 6.5x50x52.7 = 17128.75 minus the R1 fillet along its 52.7 long edge ((1-pi/4)*1^2*52.7 = 11.31); boss 8.5x20x20.2 = 3434.0 stands on x=-3.5 face. The plane x=-3.5 splits them into two bodies: 17117.44 and 3434.0. (The PR measured 17116.17 for the first, within the 1e-3 tolerance.)",
"body_count": 2,
"volume_mm3": 20550.19
}
@@ -0,0 +1,62 @@
{
"commands": [
{
"command": "solid.box",
"params": {
"corner": [
-10,
0,
-25
],
"length": 6.5,
"width": 50,
"height": 52.7,
"body_name": "Block"
}
},
{
"command": "solid.box",
"params": {
"corner": [
-3.5,
30,
7.5
],
"length": 8.5,
"width": 20,
"height": 20.2,
"operation": "join",
"targets": [
"Block"
]
}
},
{
"command": "solid.fillet",
"params": {
"edges": [
[
-3.5,
0,
0
]
],
"radius": 1
}
},
{
"command": "solid.split_body",
"params": {
"body": "Block",
"tool": {
"body": "Block",
"point": [
-3.5,
15,
-10
]
}
}
}
]
}
@@ -0,0 +1,11 @@
{
"sources": [
"tangency-labs/solidcraft#3455"
],
"what": "one combine of 64 separate pegs that do not touch: 36 s on truck, growing 4-9x per doubling; must finish in seconds",
"source": "analytic",
"method": "64 non-touching 48-gon pegs of circumradius 2, 1 mm tall, 6 mm apart: each area 0.5*48*2^2*sin(2pi/48) = 12.5305, V = 64 * 12.5305 * 1. The join keeps them in one body (several lumps). A hang is a failure: time should grow with the number of bodies. valid is false only because the one body holds 64 separate shells, which the rig's one-shell check does not allow",
"body_count": 1,
"volume_mm3": 801.9529,
"valid": false
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,12 @@
{
"sources": [
"tangency-labs/solidcraft#3456",
"tangency-labs/solidcraft#3497"
],
"what": "a deep cut that removes everything above z=2 of a tapered body with nine through-bores, leaving the 2 mm drilled base",
"source": "analytic",
"method": "cone frustum r=30 at z=0 to r=20 at z=100 (a tapered extrude, narrowing by atan(0.1)=5.7106 deg) (r(z)=30-0.1z) with nine r=1.5 bores (centre + eight on r=10). Removing z>2 leaves the slab z 0..2: frustum slice pi*2/3*(30^2+30*29.8+29.8^2) minus 9*pi*1.5^2*2. Faces: base, top, cone side, nine bore walls = 12",
"body_count": 1,
"volume_mm3": 5490.0169,
"faces": 12
}
@@ -0,0 +1,210 @@
{
"commands": [
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0,
0,
0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
}
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 30
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"distance": 100,
"taper": "-5.710593137 deg",
"operation": "new",
"body_name": "Taper"
}
},
{
"command": "solid.cylinder",
"params": {
"radius": 1.5,
"height": 102,
"base": [
0,
0,
-1
],
"operation": "cut",
"targets": [
"Taper"
]
}
},
{
"command": "solid.cylinder",
"params": {
"radius": 1.5,
"height": 102,
"base": [
10.0,
0.0,
-1
],
"operation": "cut",
"targets": [
"Taper"
]
}
},
{
"command": "solid.cylinder",
"params": {
"radius": 1.5,
"height": 102,
"base": [
7.071068,
7.071068,
-1
],
"operation": "cut",
"targets": [
"Taper"
]
}
},
{
"command": "solid.cylinder",
"params": {
"radius": 1.5,
"height": 102,
"base": [
0.0,
10.0,
-1
],
"operation": "cut",
"targets": [
"Taper"
]
}
},
{
"command": "solid.cylinder",
"params": {
"radius": 1.5,
"height": 102,
"base": [
-7.071068,
7.071068,
-1
],
"operation": "cut",
"targets": [
"Taper"
]
}
},
{
"command": "solid.cylinder",
"params": {
"radius": 1.5,
"height": 102,
"base": [
-10.0,
0.0,
-1
],
"operation": "cut",
"targets": [
"Taper"
]
}
},
{
"command": "solid.cylinder",
"params": {
"radius": 1.5,
"height": 102,
"base": [
-7.071068,
-7.071068,
-1
],
"operation": "cut",
"targets": [
"Taper"
]
}
},
{
"command": "solid.cylinder",
"params": {
"radius": 1.5,
"height": 102,
"base": [
-0.0,
-10.0,
-1
],
"operation": "cut",
"targets": [
"Taper"
]
}
},
{
"command": "solid.cylinder",
"params": {
"radius": 1.5,
"height": 102,
"base": [
7.071068,
-7.071068,
-1
],
"operation": "cut",
"targets": [
"Taper"
]
}
},
{
"command": "solid.box",
"params": {
"corner": [
-50,
-50,
2
],
"length": 100,
"width": 100,
"height": 98,
"operation": "cut",
"targets": [
"Taper"
]
}
}
]
}
@@ -0,0 +1,13 @@
{
"sources": [
"tangency-labs/solidcraft#3460"
],
"what": "Combine cut (keep tools) of an enclosure by its lid whose insert is flush with the inner walls and carries four small half-moon tabs that cross them; the cut must not return the target unchanged",
"source": "analytic",
"method": "enclosure 40x30x20 minus cavity 36x26x18 = 7152; lid insert 36x26x8 flush with the cavity walls and top, plus four vertical cylinders r=2.5, 6 tall, centred 2 mm inside each wall so each pokes 0.5 mm into the wall: overlap per tab is a circular segment (chord 3, sagitta 0.5) of area 2.5^2*acos(0.8) - 2*1.5 = 1.0219, times 6. The cut moves 4*6*1.0219 = 24.5 mm3 from the enclosure into nothing and the lid is kept, so the two bodies together hold 7152 + 36*26*8 + 24.5 - 24.5 = 14640 (an unchanged target would total 14664.5). Graded with rel 5e-4 so a no-op cut is caught; body_count 2",
"body_count": 2,
"volume_mm3": 14640.0,
"tolerance": {
"rel": 0.0005
}
}
@@ -0,0 +1,124 @@
{
"commands": [
{
"command": "solid.box",
"params": {
"corner": [
0,
0,
0
],
"length": 40,
"width": 30,
"height": 20,
"body_name": "Enc"
}
},
{
"command": "solid.box",
"params": {
"corner": [
2,
2,
2
],
"length": 36,
"width": 26,
"height": 18,
"operation": "cut",
"targets": [
"Enc"
]
}
},
{
"command": "solid.box",
"params": {
"corner": [
2,
2,
12
],
"length": 36,
"width": 26,
"height": 8,
"body_name": "Lid"
}
},
{
"command": "solid.cylinder",
"params": {
"radius": 2.5,
"height": 6,
"base": [
4,
15,
13
],
"operation": "join",
"targets": [
"Lid"
]
}
},
{
"command": "solid.cylinder",
"params": {
"radius": 2.5,
"height": 6,
"base": [
36,
15,
13
],
"operation": "join",
"targets": [
"Lid"
]
}
},
{
"command": "solid.cylinder",
"params": {
"radius": 2.5,
"height": 6,
"base": [
20,
4,
13
],
"operation": "join",
"targets": [
"Lid"
]
}
},
{
"command": "solid.cylinder",
"params": {
"radius": 2.5,
"height": 6,
"base": [
20,
26,
13
],
"operation": "join",
"targets": [
"Lid"
]
}
},
{
"command": "solid.combine",
"params": {
"target": "Enc",
"tools": [
"Lid"
],
"operation": "cut",
"keep_tools": true
}
}
]
}
@@ -0,0 +1,12 @@
{
"sources": [
"tangency-labs/solidcraft#3485",
"tangency-labs/solidcraft#3062"
],
"what": "a boss joined on a rod's top face (the join runs the boss on into the rod); the rod's side must stay one face, not seamed at the boss's foot",
"source": "analytic",
"method": "rod r=7, h=48.2 plus boss r=2.7 standing 2 mm above the top: V = pi*(7^2*48.2 + 2.7^2*2). Faces: rod bottom, rod side, rod top ring, boss side, boss top = 5 (the rod's side has no seam at the boss's foot)",
"body_count": 1,
"volume_mm3": 7465.618,
"faces": 5
}
@@ -0,0 +1,58 @@
{
"commands": [
{
"command": "solid.cylinder",
"params": {
"radius": 7,
"height": 48.2,
"body_name": "Rod"
}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0,
0,
48.2
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
}
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 2.7
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"distance": 2,
"operation": "join",
"targets": [
"Rod"
]
}
}
]
}
@@ -0,0 +1,12 @@
{
"sources": [
"tangency-labs/solidcraft#3497",
"tangency-labs/solidcraft#3456"
],
"what": "intersection of two collinear R2 H12 cylinders offset by 0.75 along the axis (curved walls coincide over part of the height)",
"source": "analytic",
"method": "common part is the cylinder r=2 from z=0.75 to 12, height 11.25: V = pi*4*11.25 = 45 pi. Faces: 2 caps + 1 side = 3",
"body_count": 1,
"volume_mm3": 141.3717,
"faces": 3
}
@@ -0,0 +1,35 @@
{
"commands": [
{
"command": "solid.cylinder",
"params": {
"radius": 2,
"height": 12,
"body_name": "A"
}
},
{
"command": "solid.cylinder",
"params": {
"radius": 2,
"height": 12,
"base": [
0,
0,
0.75
],
"body_name": "B"
}
},
{
"command": "solid.combine",
"params": {
"target": "A",
"tools": [
"B"
],
"operation": "intersect"
}
}
]
}
@@ -0,0 +1,12 @@
{
"sources": [
"tangency-labs/solidcraft#3497",
"tangency-labs/solidcraft#3456"
],
"what": "a pin r=3.02 intersected with a tube whose bore is r=3: a thin annulus (0.02 mm overlap on a curved wall)",
"source": "analytic",
"method": "overlap is the annulus r 3..3.02, h=6: V = pi*(3.02^2 - 3^2)*6 = 2.2695 (the PR quotes 2.269486533). Faces: 2 rings + inner + outer wall = 4",
"body_count": 1,
"volume_mm3": 2.269487,
"faces": 4
}
@@ -0,0 +1,48 @@
{
"commands": [
{
"command": "solid.cylinder",
"params": {
"radius": 6,
"height": 6,
"body_name": "Tube"
}
},
{
"command": "solid.cylinder",
"params": {
"radius": 3,
"height": 6,
"body_name": "Bore"
}
},
{
"command": "solid.combine",
"params": {
"target": "Tube",
"tools": [
"Bore"
],
"operation": "cut"
}
},
{
"command": "solid.cylinder",
"params": {
"radius": 3.02,
"height": 6,
"body_name": "Pin"
}
},
{
"command": "solid.combine",
"params": {
"target": "Tube",
"tools": [
"Pin"
],
"operation": "intersect"
}
}
]
}
@@ -0,0 +1,12 @@
{
"sources": [
"tangency-labs/solidcraft#3526",
"tangency-labs/solidcraft#3888"
],
"what": "intersect of a two-lump target (two spheres joined while apart) with a box holding the bottom half of each",
"source": "analytic",
"method": "box x -10..40, y -10..10, z -10..0 holds the z<=0 half of each r=4 sphere (centres (0,0,0), (30,0,0)): V = 2 * (2/3) pi 4^3 = 268.083. The body must not be removed. valid is false only because the one body holds two separate shells, which the rig's one-shell check does not allow",
"body_count": 1,
"volume_mm3": 268.0826,
"valid": false
}
@@ -0,0 +1,57 @@
{
"commands": [
{
"command": "solid.sphere",
"params": {
"radius": 4,
"center": [
0,
0,
0
],
"operation": "new",
"body_name": "Balls"
}
},
{
"command": "solid.sphere",
"params": {
"radius": 4,
"center": [
30,
0,
0
],
"operation": "join",
"targets": [
"Balls"
]
}
},
{
"command": "solid.box",
"params": {
"length": 50,
"width": 20,
"height": 10,
"corner": [
-10,
-10,
-10
],
"operation": "new",
"body_name": "Box"
}
},
{
"command": "solid.combine",
"params": {
"target": "Balls",
"tools": [
"Box"
],
"operation": "intersect"
}
}
]
}
@@ -0,0 +1,10 @@
{
"sources": [
"tangency-labs/solidcraft#3604",
"tangency-labs/solidcraft#3613"
],
"what": "cut of a box by a swept G2 corner-removal tool along a projected edge chain (left-rear corner; the symmetric front-left chain works)",
"source": "invariants",
"method": "no closed form for the free-form tool: the tool lies on the box's bottom edge and overlaps it, so the cut must succeed with one valid closed solid (the tool is consumed). No volume is graded",
"body_count": 1
}
@@ -0,0 +1,198 @@
{
"commands": [
{
"command": "solid.box",
"params": {
"corner": [
0,
0,
0
],
"length": 40,
"width": 20,
"height": 10,
"operation": "new",
"body_name": "B"
}
},
{
"command": "solid.fillet",
"params": {
"body": "B",
"edges": [
[
0,
0,
5
],
[
40,
0,
5
],
[
40,
20,
5
],
[
0,
20,
5
]
],
"radius": 5,
"type": "g2"
}
},
{
"command": "sketch.create",
"params": {
"plane": {
"face": [
20,
10,
0
]
},
"project_edges": true,
"name": "Bottom"
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0,
15,
0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
0,
1
]
},
"name": "RB"
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-0.2,
-0.2
],
[
0.8,
-0.2
]
],
"ids": [
"o1"
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0.8,
-0.2
],
[
0.8,
0
]
],
"ids": [
"o2"
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
0,
0.8
],
[
-0.2,
0.8
]
],
"ids": [
"o3"
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-0.2,
0.8
],
[
-0.2,
-0.2
]
],
"ids": [
"o4"
]
}
},
{
"command": "sketch.blend_curve",
"params": {
"a": "o2.end",
"b": "o3.start",
"continuity": "g2"
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.sweep",
"params": {
"sketch": "RB",
"path_sketch": "Bottom",
"path": [
"s2",
"l3"
],
"orientation": "perpendicular",
"operation": "new",
"body_name": "Tool"
}
},
{
"command": "solid.combine",
"params": {
"target": "B",
"tools": [
"Tool"
],
"operation": "cut"
}
}
]
}
@@ -0,0 +1,10 @@
{
"sources": [
"tangency-labs/solidcraft#3612",
"tangency-labs/solidcraft#3379"
],
"what": "a spoke whose inner face x=12 is exactly tangent to the hub cylinder r=12 (line contact), joined to the rim, patterned 5 times around the hub's axis",
"source": "analytic",
"method": "rim r63..66 h3: pi(66^2-63^2)*3; hub r12 h3: pi*144*3; each spoke (x 12..64, y 0.5..2.5, z +-1.25) adds the part outside hub and rim: 2*(integral over z=-1.25..1.25 of sqrt(63^2-z^2) - 12) = 254.979 (the spoke's foot lies inside the rim; at z=+-1.25 the hub reaches x=11.93 so it never overlaps the spoke). Spokes are 72 deg apart and do not overlap: V = 5004.557 + 5*254.979 = 6279.454",
"volume_mm3": 6279.4538
}
@@ -0,0 +1,65 @@
{
"commands": [
{
"command": "solid.cylinder",
"params": {
"radius": 66,
"height": 3,
"axis": "Y",
"body_name": "Wheel"
}
},
{
"command": "solid.cylinder",
"params": {
"radius": 63,
"height": 3,
"axis": "Y",
"operation": "cut",
"targets": [
"Wheel"
]
}
},
{
"command": "solid.cylinder",
"params": {
"radius": 12,
"height": 3,
"axis": "Y",
"operation": "join",
"targets": [
"Wheel"
]
}
},
{
"command": "solid.box",
"params": {
"corner": [
12,
0.5,
-1.25
],
"length": 52,
"width": 2,
"height": 2.5,
"operation": "join",
"targets": [
"Wheel"
]
}
},
{
"command": "solid.pattern.circular",
"params": {
"features": [
"Box1"
],
"axis": "Y",
"count": 5,
"angle": "360 deg"
}
}
]
}
@@ -0,0 +1,14 @@
{
"sources": [
"tangency-labs/solidcraft#3633",
"tangency-labs/solidcraft#3682"
],
"what": "a sphere r=10 intersected with a square pyramid whose apex is the sphere's centre and whose sides lie in the planes of the sphere primitive's patch edges",
"source": "analytic",
"method": "the pyramid has apex (0,0,0) and base 20x20 at x=-10 (corners (-10,+-10,+-10)): a cone over a cube face, a sixth of all directions, and the base is tangent to the sphere at (-10,0,0). The intersection is a sixth of the ball: V = (4/3) pi 10^3 / 6 = 698.132. Faces: 4 planar sides + 1 spherical = 5; edges 4 radial + 4 arcs = 8; vertices: apex + 4 corners on the sphere = 5",
"body_count": 1,
"volume_mm3": 698.1317,
"faces": 5,
"edges": 8,
"vertices": 5
}
@@ -0,0 +1,113 @@
{
"commands": [
{
"command": "solid.sphere",
"params": {
"radius": 10,
"body_name": "Ball"
}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
-10,
0,
0
],
"x_dir": [
0,
1,
0
],
"y_dir": [
0,
0,
1
]
},
"name": "Base"
}
},
{
"command": "sketch.rectangle.two_point",
"params": {
"p0": [
-10,
-10
],
"p1": [
10,
10
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0,
0,
0
],
"x_dir": [
0,
1,
0
],
"y_dir": [
0,
0,
1
]
},
"name": "Apex"
}
},
{
"command": "sketch.point",
"params": {
"point": [
0,
0
],
"id": "apex"
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.loft",
"params": {
"sections": [
{
"sketch": "Base"
},
{
"sketch": "Apex",
"point": "apex"
}
],
"body_name": "Pyramid"
}
},
{
"command": "solid.combine",
"params": {
"target": "Ball",
"tools": [
"Pyramid"
],
"operation": "intersect"
}
}
]
}
@@ -0,0 +1,10 @@
{
"sources": [
"tangency-labs/solidcraft#3652"
],
"what": "mirror a Mirror feature (the first mirror's hole) about a second plane: 'Mirror1 cannot be patterned or mirrored yet'",
"source": "analytic",
"method": "plate 100x60x10 with a through hole r=3 at (20,10). Mirror1 (about YZ) adds the hole at (-20,10); mirroring Mirror1 about XZ reflects the hole it made to (-20,-10). Three holes, no overlaps: V = 60000 - 3*pi*9*10 = 59151.77",
"body_count": 1,
"volume_mm3": 59151.77
}
@@ -0,0 +1,83 @@
{
"commands": [
{
"command": "solid.box",
"params": {
"corner": [
-50,
-30,
0
],
"length": 100,
"width": 60,
"height": 10,
"body_name": "Plate"
}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0,
0,
10
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
}
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
20,
10
],
"radius": 3
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"distance": 10,
"direction": "negative",
"operation": "cut",
"targets": [
"Plate"
]
}
},
{
"command": "solid.mirror",
"params": {
"features": [
"Extrude1"
],
"plane": "YZ"
}
},
{
"command": "solid.mirror",
"params": {
"features": [
"Mirror1"
],
"plane": "XZ"
}
}
]
}
@@ -0,0 +1,11 @@
{
"sources": [
"tangency-labs/solidcraft#3665",
"tangency-labs/solidcraft#3666"
],
"what": "a join extrude of a column standing on a channel's flat floor and lying along both its curved walls (column circle tangent to both walls)",
"source": "analytic",
"method": "housing 60x60x20 = 72000 minus the annular channel r16..24, 10 deep: pi(24^2-16^2)*10; the column r=4 centred on the channel's mid circle (r=20) is tangent to both walls and stands 6 mm on the floor: + pi*16*6. V = 72000 - 3200pi + 96pi",
"body_count": 1,
"volume_mm3": 62248.4964
}
@@ -0,0 +1,129 @@
{
"commands": [
{
"command": "solid.box",
"params": {
"corner": [
-30,
-30,
0
],
"length": 60,
"width": 60,
"height": 20,
"body_name": "Housing"
}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0,
0,
20
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
}
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 24
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 16
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"profiles": [
{
"point": [
20,
0
]
}
],
"distance": 10,
"direction": "negative",
"operation": "cut",
"targets": [
"Housing"
]
}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0,
0,
10
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
}
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
20,
0
],
"radius": 4
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"distance": 6,
"operation": "join",
"targets": [
"Housing"
]
}
}
]
}
@@ -0,0 +1,22 @@
{
"sources": [
"tangency-labs/solidcraft#3671"
],
"what": "intersect with a tapered pocket tool whose top face lies in the block's top face, 0.5 mm short of a rib",
"source": "analytic",
"method": "the tool lies wholly inside the block (z 5..20, x 40..89.5, y 30..70), so the intersection is the tool: a frustum of a rectangle 49.5x40 at the top, sides leaning in 30 deg over 15 mm (inset d=15*tan30=8.660 per side); prismatoid V = h/3 (A1 + A2 + sqrt(A1 A2)). The PR quotes 19573.6090 for its own numbers; 30 deg exactly gives this value (within 1e-3 of it). Nothing may stay above z=20 (the rib is not part of the tool)",
"body_count": 1,
"volume_mm3": 19559.5484,
"bbox": {
"min": [
40,
30,
5
],
"max": [
89.5,
70,
20
]
}
}
@@ -0,0 +1,93 @@
{
"commands": [
{
"command": "solid.box",
"params": {
"corner": [
0,
0,
0
],
"length": 200,
"width": 100,
"height": 20,
"body_name": "Block"
}
},
{
"command": "solid.box",
"params": {
"corner": [
90,
0,
20
],
"length": 20,
"width": 100,
"height": 10,
"operation": "join",
"targets": [
"Block"
]
}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0,
0,
5
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
}
}
},
{
"command": "sketch.rectangle.two_point",
"params": {
"p0": [
48.66025403784438,
38.66025403784438
],
"p1": [
80.83974596215562,
61.33974596215562
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"distance": 15,
"taper": "30 deg",
"operation": "new",
"body_name": "Tool"
}
},
{
"command": "solid.combine",
"params": {
"target": "Block",
"tools": [
"Tool"
],
"operation": "intersect"
}
}
]
}
@@ -0,0 +1,22 @@
{
"sources": [
"tangency-labs/solidcraft#3703"
],
"what": "two joined face extrudes on one box (top face, then the right side face): the stepped shape must stay",
"source": "analytic",
"method": "box 25x20x35 = 17500; top face pulled up 10: +25*20*10 = 5000; the right face x=25 is then one planar face 20 wide and 45 tall (box side merged with the new block's side) and is pulled out 10: +20*45*10 = 9000. V = 31500, bbox x 0..35, z 0..45. (Assumes coplanar faces merge, as the README's face counts do.)",
"body_count": 1,
"volume_mm3": 31500.0,
"bbox": {
"min": [
0,
0,
0
],
"max": [
35,
20,
45
]
}
}
@@ -0,0 +1,46 @@
{
"commands": [
{
"command": "solid.box",
"params": {
"corner": [
0,
0,
0
],
"length": 25,
"width": 20,
"height": 35,
"body_name": "Body1"
}
},
{
"command": "solid.extrude",
"params": {
"face": [
8.5,
10,
35
],
"face_body": "Body1",
"distance": 10,
"direction": "positive",
"operation": "join"
}
},
{
"command": "solid.extrude",
"params": {
"face": [
25,
12.07,
19.2
],
"face_body": "Body1",
"distance": 10,
"direction": "positive",
"operation": "join"
}
}
]
}
@@ -0,0 +1,22 @@
{
"sources": [
"tangency-labs/solidcraft#3729"
],
"what": "extrude `to` a point lying exactly on the top edge of a step: must end at the plane z=20 through the point",
"source": "analytic",
"method": "block 20x20x10 = 4000, step 10x10x10 = 1000 (z 10..20), column r=1.5 from the block's top z=10 up to the plane z=20 through `to`: pi*1.5^2*10 = 70.686. V = 5070.686, top at z=20 (the kernel went to z=22.73)",
"body_count": 1,
"volume_mm3": 5070.6858,
"bbox": {
"min": [
-10,
-10,
0
],
"max": [
10,
10,
20
]
}
}
@@ -0,0 +1,245 @@
{
"commands": [
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0,
0,
0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
},
"name": "A"
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-10,
-10
],
[
10,
-10
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
10,
-10
],
[
10,
10
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
10,
10
],
[
-10,
10
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-10,
10
],
[
-10,
-10
]
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"distance": 10,
"direction": "positive",
"profiles": "all"
}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0,
0,
10
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
},
"name": "B"
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-5,
-5
],
[
5,
-5
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
5,
-5
],
[
5,
5
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
5,
5
],
[
-5,
5
]
]
}
},
{
"command": "sketch.line",
"params": {
"points": [
[
-5,
5
],
[
-5,
-5
]
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"distance": 10,
"direction": "positive",
"operation": "join",
"profiles": "all"
}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0,
0,
10
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
},
"name": "C"
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
8,
0
],
"radius": 1.5
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"to": [
5,
0,
20
],
"direction": "positive",
"operation": "join",
"profiles": "all"
}
}
]
}
@@ -0,0 +1,10 @@
{
"sources": [
"tangency-labs/solidcraft#3782",
"tangency-labs/solidcraft#3425"
],
"what": "emboss on a cylinder with the face pick on the half of the wall opposite the sketch",
"source": "invariants",
"method": "the cylinder wall is one logical face, so a pick anywhere on it (between the caps) must be accepted: the emboss succeeds with one valid closed solid. No volume is graded (the badge's shape on a curved wall is not fixed by the issue)",
"body_count": 1
}
@@ -0,0 +1,65 @@
{
"commands": [
{
"command": "solid.cylinder",
"params": {
"radius": 10,
"height": 20,
"body_name": "Cyl"
}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0,
10,
0
],
"x_dir": [
-1,
0,
0
],
"y_dir": [
0,
0,
1
]
},
"name": "Badge"
}
},
{
"command": "sketch.rectangle.two_point",
"params": {
"p0": [
-2,
5
],
"p1": [
2,
10
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.emboss",
"params": {
"sketch": "Badge",
"depth": 1,
"mode": "emboss",
"face": [
0,
-10,
7.5
]
}
}
]
}
@@ -0,0 +1,14 @@
{
"sources": [
"tangency-labs/solidcraft#3816"
],
"what": "circular pattern of a body about an axis {origin,dir} that does not pass through the world origin",
"source": "analytic",
"method": "a 4x4x4 box centred at (39.5,15,-48), 22 mm from the vertical axis through (17.5,15,-48); nine copies 40 deg apart (chord 15 mm > the box diagonal 5.7, no overlap): V = 9*64 = 576. By the 9-fold symmetry the centre of mass lies on the axis: (17.5, 15, -48)",
"volume_mm3": 576.0,
"center_of_mass": [
17.5,
15.0,
-48.0
]
}
@@ -0,0 +1,40 @@
{
"commands": [
{
"command": "solid.box",
"params": {
"corner": [
37.5,
13,
-50
],
"length": 4,
"width": 4,
"height": 4,
"body_name": "Part"
}
},
{
"command": "solid.pattern.circular",
"params": {
"bodies": [
"Part"
],
"axis": {
"origin": [
17.5,
15,
-48
],
"dir": [
0,
0,
1
]
},
"count": 9,
"angle": "360 deg"
}
}
]
}
@@ -0,0 +1,10 @@
{
"sources": [
"tangency-labs/solidcraft#3830"
],
"what": "split a thin-walled cup (shell of a d30 cylinder) with a surface body: an extruded spline surface, extended at both ends",
"source": "analytic",
"method": "cup = cylinder r15 h30 shelled 1 mm inward with its top removed: V = pi*15^2*30 - pi*14^2*29 = 3349.04. The surface crosses the whole cup from above its rim to below its floor, so it splits the cup in two; splitting only divides material: two valid bodies whose volumes add up to 3349.04",
"body_count": 2,
"volume_mm3": 3348.938
}
@@ -0,0 +1,154 @@
{
"commands": [
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0,
0,
0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
}
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 15
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"distance": 30,
"operation": "new",
"body_name": "Body1"
}
},
{
"command": "solid.shell",
"params": {
"faces": [
[
-4.2209,
-6.6007,
30
]
],
"thickness": 1,
"tangent_chain": true,
"body": "Body1"
}
},
{
"command": "sketch.create",
"params": {
"plane": "YZ",
"name": "Cut"
}
},
{
"command": "sketch.spline.fit_point",
"params": {
"points": [
[
-15.2,
30
],
[
3.6,
19
],
[
15,
0.1
],
[
15.345826150212766,
-0.4420637743548844
]
],
"ids": [
"s1"
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "surface.extrude",
"params": {
"sketch": "Cut",
"curves": [
"s1"
],
"distance": 30,
"direction": "symmetric",
"body_name": "Body2"
}
},
{
"command": "surface.extend",
"params": {
"body": "Body2",
"edges": [
[
0,
-15.2,
30
]
],
"distance": 10
}
},
{
"command": "surface.extend",
"params": {
"body": "Body2",
"edges": [
[
0,
15.345826150212766,
-0.4420637743548844
]
],
"distance": 10
}
},
{
"command": "solid.split_body",
"params": {
"body": "Body1",
"tool": {
"body": "Body2",
"point": [
21.94918088438493,
17.139934956546313,
-3.829146796035829
]
}
}
}
]
}
@@ -0,0 +1,10 @@
{
"sources": [
"tangency-labs/solidcraft#3841",
"tangency-labs/solidcraft#168"
],
"what": "Join of a ring (r10..15) onto a coin (r10) that touch only along a circle: no fusion that moves the ring",
"source": "invariants",
"outcome": "refused",
"method": "the bodies share one circular edge and no area, so a join has no valid solid to give: the right answer is a clean refusal (New Body gives two independent solids). Succeeding means the kernel moved or rotated the ring to fuse it"
}
@@ -0,0 +1,112 @@
{
"commands": [
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0,
0,
0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
}
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 10
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"distance": 3,
"operation": "new",
"body_name": "Coin"
}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0,
0,
3
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
}
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 10
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 15
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"profiles": [
{
"point": [
12,
0
]
}
],
"distance": 3,
"operation": "join",
"targets": [
"Coin"
]
}
}
]
}
@@ -0,0 +1,11 @@
{
"sources": [
"tangency-labs/solidcraft#3887",
"tangency-labs/solidcraft#2844"
],
"what": "a ring (r19.6/20.8, 20 tall) joined onto an 80x80x1.2 plate with a 9x9 grid of 6.4 mm square holes; the ring's foot crosses the holes",
"source": "analytic",
"method": "plate 80x80x1.2 minus 81 holes 6.4x6.4 (pitch 8, centred): 7680 - 81*6.4^2*1.2; ring standing on the top face (touching, no overlap): pi(20.8^2-19.6^2)*20. One body. The ring's walls must stay whole cylinder faces (the old kernel cut them into full-height strips at every hole edge); the total face count is not graded because the ring's foot over the holes is not worked out here",
"body_count": 1,
"volume_mm3": 6744.7762
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,11 @@
{
"sources": [
"tangency-labs/solidcraft#3968"
],
"what": "a hole of diameter 10 drilled into the top of a truncated cone whose top is also diameter 10 (the hole wall meets the cone at the top rim)",
"source": "analytic",
"method": "truncated cone r=15 at the base, r=5 at z=20: V = pi*20/3*(15^2+15*5+5^2) = 6806.78; the flat-bottomed hole r=5, 10 deep from the top lies inside the cone (the cone is wider below z=20): minus pi*25*10 = 785.40. V = 6021.38. Faces: base, cone, hole wall, hole floor = 4",
"body_count": 1,
"volume_mm3": 6021.3859,
"faces": 4
}
@@ -0,0 +1,62 @@
{
"commands": [
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0,
0,
0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
}
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
0
],
"radius": 15
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"distance": 20,
"taper": "-26.565051177 deg",
"operation": "new",
"body_name": "Mountain"
}
},
{
"command": "solid.hole",
"params": {
"position": [
0,
0,
20
],
"diameter": 10,
"depth": 10,
"type": "simple"
}
}
]
}
@@ -0,0 +1,10 @@
{
"sources": [
"tangency-labs/solidcraft#4008"
],
"what": "symmetric 180 deg revolve cut about a vertical edge of a block, the tool's end faces lying in the block's side face",
"source": "analytic",
"method": "block 60x20x25; the tool (rectangle 2.6..9.6 from the axis, 21 tall) turned +-90 deg about the block's back-left vertical edge; only the quarter inside the block (x>0, y<20) is material: V = 60*20*25 - pi(9.6^2-2.6^2)*21/4",
"body_count": 1,
"volume_mm3": 28591.4669
}
@@ -0,0 +1,109 @@
{
"commands": [
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0,
0,
0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
}
}
},
{
"command": "sketch.rectangle.two_point",
"params": {
"p0": [
0,
0
],
"p1": [
60,
20
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"distance": 25,
"operation": "new"
}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0,
20,
0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
0,
-1
]
}
}
},
{
"command": "sketch.rectangle.two_point",
"params": {
"p0": [
2.6,
-23
],
"p1": [
9.6,
-2
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.revolve",
"params": {
"axis": {
"origin": [
0,
20,
0
],
"dir": [
0,
0,
1
]
},
"angle": "180 deg",
"operation": "cut",
"direction": "symmetric"
}
}
]
}
@@ -0,0 +1,10 @@
{
"sources": [
"tangency-labs/solidcraft#4011"
],
"what": "a blind hole mirrored to a spot where half its top disc lies under a wall's foot",
"source": "analytic",
"method": "plate 100x60x10 (6000+... =60000) plus wall 10x60x10 (6000) = 66000. Each blind hole r=3, 4 deep from z=5 removes pi*9*4 = 113.097 from the plate only (the wall is above z=5, untouched); two holes: V = 66000 - 2*pi*9*4",
"body_count": 1,
"volume_mm3": 65773.8053
}
@@ -0,0 +1,161 @@
{
"commands": [
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0,
0,
0
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
}
}
},
{
"command": "sketch.rectangle.two_point",
"params": {
"p0": [
-50,
-30
],
"p1": [
50,
30
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"distance": 10,
"operation": "new",
"direction": "symmetric"
}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0,
0,
5
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
}
}
},
{
"command": "sketch.rectangle.two_point",
"params": {
"p0": [
10,
-30
],
"p1": [
20,
30
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"distance": 10,
"operation": "join"
}
},
{
"command": "sketch.create",
"params": {
"plane": {
"origin": [
0,
0,
5
],
"x_dir": [
1,
0,
0
],
"y_dir": [
0,
1,
0
]
}
}
},
{
"command": "sketch.circle.center",
"params": {
"center": [
0,
10
],
"radius": 3
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"distance": 4,
"operation": "cut",
"direction": "negative"
}
},
{
"command": "solid.mirror",
"params": {
"features": [
"Extrude3"
],
"plane": {
"origin": [
10,
0,
0
],
"normal": [
1,
0,
0
]
}
}
}
]
}
@@ -0,0 +1,11 @@
{
"sources": [
"tangency-labs/solidcraft#4058",
"tangency-labs/solidcraft#4059"
],
"what": "a 10 mm ring (rounded corners) extruded 40 mm as a Join round a floor's outline: it touches the floor back to back on its flat sides and rounded corners",
"source": "analytic",
"method": "floor 60x50 with r4 corners, 3.25 thick: (3000-(4-pi)*16)*3.25; minus the pocket 40x30 (r3 corners), 2.25 deep, walls leaning in 15 deg (integral of (40-2d)(30-2d)-(4-pi)(3-d)^2 with d=t*tan15, t=0..2.25); plus the socket 36x26x4.75: 11559.35 (the PR measures 11559.34). Ring area (80*70-(4-pi)*14^2)-(60*50-(4-pi)*4^2) = 2445.487, times 40 = 97819.467. The ring only touches the floor, so V = floor + ring. One solid",
"body_count": 1,
"volume_mm3": 109378.817
}
@@ -0,0 +1,153 @@
{
"commands": [
{
"command": "sketch.create",
"params": {
"plane": "XY",
"name": "Outline"
}
},
{
"command": "sketch.rectangle.rounded",
"params": {
"p0": [
0,
0
],
"p1": [
60,
50
],
"radius": 4
}
},
{
"command": "sketch.rectangle.rounded",
"params": {
"p0": [
-10,
-10
],
"p1": [
70,
60
],
"radius": 14
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"sketch": "Outline",
"profiles": [
{
"point": [
30,
25
]
}
],
"distance": 3.25,
"body_name": "Floor"
}
},
{
"command": "sketch.create",
"params": {
"plane": "XY",
"offset": 3.25,
"name": "Pocket"
}
},
{
"command": "sketch.rectangle.rounded",
"params": {
"p0": [
10,
10
],
"p1": [
50,
40
],
"radius": 3
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"sketch": "Pocket",
"distance": 2.25,
"direction": "negative",
"taper": "-15 deg",
"operation": "cut",
"targets": [
"Floor"
]
}
},
{
"command": "sketch.create",
"params": {
"plane": "XY",
"name": "Socket"
}
},
{
"command": "sketch.rectangle.two_point",
"params": {
"p0": [
12,
12
],
"p1": [
48,
38
]
}
},
{
"command": "sketch.finish",
"params": {}
},
{
"command": "solid.extrude",
"params": {
"sketch": "Socket",
"distance": 4.75,
"direction": "negative",
"operation": "join",
"targets": [
"Floor"
]
}
},
{
"command": "solid.extrude",
"params": {
"sketch": "Outline",
"profiles": [
{
"point": [
-5,
25
]
}
],
"distance": 40,
"operation": "join",
"targets": [
"Floor"
]
}
}
]
}
@@ -0,0 +1,10 @@
{
"sources": [
"tangency-labs/solidcraft#4095"
],
"what": "a slab cut whose +x face stands 6.73e-05 mm (0.90 x the coincidence tolerance 7.48e-05) off a through-bore's wall (R=10), beside the bore",
"source": "analytic",
"method": "plate 60x40x20 minus the bore pi R^2*20 minus the notch (the slab 6x16 from z=12 up through the top z=20: 6*16*8 = 768), which the bore beside it does not change. V = 60*40*20 - pi*10^2*20 - 768. The bug removed about 5% too much with no warning",
"body_count": 1,
"volume_mm3": 40948.8147
}
@@ -0,0 +1,51 @@
{
"commands": [
{
"command": "solid.box",
"params": {
"corner": [
-30.0,
-20.0,
0
],
"length": 60,
"width": 40,
"height": 20,
"body_name": "Plate"
}
},
{
"command": "solid.cylinder",
"params": {
"radius": 10,
"height": 22,
"base": [
0,
0,
-1
],
"operation": "cut",
"targets": [
"Plate"
]
}
},
{
"command": "solid.box",
"params": {
"corner": [
-16.0000673497,
-8,
12
],
"length": 6,
"width": 16,
"height": 14,
"operation": "cut",
"targets": [
"Plate"
]
}
}
]
}
@@ -0,0 +1,10 @@
{
"sources": [
"tangency-labs/solidcraft#4095"
],
"what": "a slab cut whose +x face stands 6.60e-05 mm (0.60 x the coincidence tolerance 1.10e-04) off a through-bore's wall (R=15), beside the bore",
"source": "analytic",
"method": "plate 90x60x20 minus the bore pi R^2*20 minus the notch (the slab 6x16 from z=12 up through the top z=20: 6*16*8 = 768), which the bore beside it does not change. V = 90*60*20 - pi*15^2*20 - 768. The bug removed about 5% too much with no warning",
"body_count": 1,
"volume_mm3": 93094.8331
}
@@ -0,0 +1,51 @@
{
"commands": [
{
"command": "solid.box",
"params": {
"corner": [
-45.0,
-30.0,
0
],
"length": 90,
"width": 60,
"height": 20,
"body_name": "Plate"
}
},
{
"command": "solid.cylinder",
"params": {
"radius": 15,
"height": 22,
"base": [
0,
0,
-1
],
"operation": "cut",
"targets": [
"Plate"
]
}
},
{
"command": "solid.box",
"params": {
"corner": [
-21.000066,
-8,
12
],
"length": 6,
"width": 16,
"height": 14,
"operation": "cut",
"targets": [
"Plate"
]
}
}
]
}
+306
View File
@@ -0,0 +1,306 @@
[
{
"source": "tangency-labs/solidcraft#3404",
"why": "needs a user's design (plate with a tab profile) that can't be rebuilt: the report names only the failing join extrude"
},
{
"source": "tangency-labs/solidcraft#3405",
"why": "no geometry: a screenshot only, the report gives no command or model"
},
{
"source": "tangency-labs/solidcraft#3406",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry ('there is no body to cut or intersect' on a cut extrude from an enclosure face)"
},
{
"source": "tangency-labs/solidcraft#3411",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry (join of three bodies, 'Union: no result')"
},
{
"source": "tangency-labs/solidcraft#3426",
"why": "UI only: the extrude preview's initial direction on a picked face, no wrong geometry"
},
{
"source": "tangency-labs/solidcraft#3427",
"why": "no geometry: a screenshot only, the report gives no command or model"
},
{
"source": "tangency-labs/solidcraft#3428",
"why": "other area: crashes (kernel panic in a cut with an imported STEP bolt; the STEP file is from a parts library and can't be rebuilt)"
},
{
"source": "tangency-labs/solidcraft#3448",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry (join extrude of two profiles, 'Union: no result', cylinders)"
},
{
"source": "tangency-labs/solidcraft#3479",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry (rectangular pattern of a chamfer and an extrude: 'no edge near ...')"
},
{
"source": "tangency-labs/solidcraft#3496",
"why": "other area: import (a mesh body: booleans need a solid, 'mesh bodies can only be moved, measured and exported')"
},
{
"source": "tangency-labs/solidcraft#3498",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry ('there is no body to cut or intersect' on a cut extrude from an enclosure face)"
},
{
"source": "tangency-labs/solidcraft#3514",
"why": "other area: sketch (a sketch rectangular pattern, over-constrain error from the sketch solver, no solid geometry)"
},
{
"source": "tangency-labs/solidcraft#3518",
"why": "other area: shell (split of a user's body by a plane, 'Intersect: no result')"
},
{
"source": "tangency-labs/solidcraft#3531",
"why": "no geometry: a screenshot only, the report gives no command or model"
},
{
"source": "tangency-labs/solidcraft#3539",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry (thin extrude of a curve, join)"
},
{
"source": "tangency-labs/solidcraft#3547",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry (cut through an extruded spline)"
},
{
"source": "tangency-labs/solidcraft#3563",
"why": "no geometry: a screenshot only, the report gives no command or model"
},
{
"source": "tangency-labs/solidcraft#3578",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry (join of a revolve with a chamfered box: the description is too vague to rebuild)"
},
{
"source": "tangency-labs/solidcraft#3586",
"why": "other area: sketch (a sketch rectangular pattern, over-constrain error from the sketch solver, no solid geometry)"
},
{
"source": "tangency-labs/solidcraft#3598",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry (a fake edge left after an extrude chain on a chamfer)"
},
{
"source": "tangency-labs/solidcraft#3602",
"why": "other area: shell (split of a user's body by a plane, 'Intersect: no result')"
},
{
"source": "tangency-labs/solidcraft#3607",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry"
},
{
"source": "tangency-labs/solidcraft#3608",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry (circular pattern of an extrude feature, cut 'no result')"
},
{
"source": "tangency-labs/solidcraft#3632",
"why": "UI only: sketch mirror about an origin axis is not offered in the sketch tool, no solid geometry"
},
{
"source": "tangency-labs/solidcraft#3634",
"why": "UI only: hole tool auto-switching to multi-hole mode"
},
{
"source": "tangency-labs/solidcraft#3645",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry"
},
{
"source": "tangency-labs/solidcraft#3648",
"why": "no geometry: a screenshot only, the report gives no command or model"
},
{
"source": "tangency-labs/solidcraft#3649",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry (join extrude refusing for zero-thickness edge contact; the contact is not described, see #3841 for the circular-edge case)"
},
{
"source": "tangency-labs/solidcraft#3656",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry"
},
{
"source": "tangency-labs/solidcraft#3657",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry"
},
{
"source": "tangency-labs/solidcraft#3667",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry"
},
{
"source": "tangency-labs/solidcraft#3680",
"why": "other area: sheet metal (a hole in sheet-metal material is refused)"
},
{
"source": "tangency-labs/solidcraft#3707",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry"
},
{
"source": "tangency-labs/solidcraft#3709",
"why": "no geometry: a video of cutting a bolt in another CAD tool, no model or command"
},
{
"source": "tangency-labs/solidcraft#3725",
"why": "no geometry: a screenshot only, the report gives no command or model"
},
{
"source": "tangency-labs/solidcraft#3727",
"why": "UI only: sketch.pattern.circular was run with no sketch being edited"
},
{
"source": "tangency-labs/solidcraft#3732",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry (French report: Combine cut keeping the tool gives nothing, parts are named Equerre and Rallonge2)"
},
{
"source": "tangency-labs/solidcraft#3734",
"why": "not geometry: the failing step is a profile that is not closed in the user's sketch"
},
{
"source": "tangency-labs/solidcraft#3741",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry ('lumps: ...' error on a cut or join in a user's design)"
},
{
"source": "tangency-labs/solidcraft#3753",
"why": "other area: fillets (a chamfer inside a circular pattern is too large for the edge, 'grow the part'; the pattern itself is not at fault)"
},
{
"source": "tangency-labs/solidcraft#3757",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry ('lumps: ...' error on a cut or join in a user's design)"
},
{
"source": "tangency-labs/solidcraft#3767",
"why": "not geometry: a face lineage refusal ('no supported stable semantic lineage') on a user's body"
},
{
"source": "tangency-labs/solidcraft#3777",
"why": "no geometry: a screenshot only, the report gives no command or model"
},
{
"source": "tangency-labs/solidcraft#3785",
"why": "not geometry: feature request (pattern along a closed path around a rounded rectangle)"
},
{
"source": "tangency-labs/solidcraft#3787",
"why": "other area: import (a mesh body: booleans need a solid, 'mesh bodies can only be moved, measured and exported')"
},
{
"source": "tangency-labs/solidcraft#3789",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry"
},
{
"source": "tangency-labs/solidcraft#3791",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry"
},
{
"source": "tangency-labs/solidcraft#3793",
"why": "no geometry: a screenshot only, the report gives no command or model"
},
{
"source": "tangency-labs/solidcraft#3803",
"why": "other area: UI only (pattern of a sketch feature is not offered: 'Sketch2 cannot be patterned')"
},
{
"source": "tangency-labs/solidcraft#3808",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry ('there is no body to cut or intersect' on a cut extrude from an enclosure face)"
},
{
"source": "tangency-labs/solidcraft#3811",
"why": "UI only: the pattern dialog's axis picker ('Axis1' is not X, Y, Z or {origin, dir})"
},
{
"source": "tangency-labs/solidcraft#3823",
"why": "not geometry: an expression error (`e` is not a parameter)"
},
{
"source": "tangency-labs/solidcraft#3824",
"why": "other area: threads (a threaded hole needs a cylindrical face: 'no cylindrical face there to thread')"
},
{
"source": "tangency-labs/solidcraft#3843",
"why": "UI only: the pattern dialog's axis picker ('Axis1' is not X, Y, Z or {origin, dir})"
},
{
"source": "tangency-labs/solidcraft#3844",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry (holes of an extrude cut, `flange_thickenss` parameter, not visible in the final result)"
},
{
"source": "tangency-labs/solidcraft#3865",
"why": "UI only: shift-click multiple selection in the Combine dialog"
},
{
"source": "tangency-labs/solidcraft#3866",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry ('lumps: ...' error on a cut or join in a user's design)"
},
{
"source": "tangency-labs/solidcraft#3869",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry ('lumps: ...' error on a cut or join in a user's design)"
},
{
"source": "tangency-labs/solidcraft#3879",
"why": "other area: import (the extrude acts on an imported object's orientation / a STEP file's face)"
},
{
"source": "tangency-labs/solidcraft#3904",
"why": "UI only: selecting several non-coplanar profiles in Extrude (which profiles the dialog accepts), no wrong geometry"
},
{
"source": "tangency-labs/solidcraft#3926",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry (extrude cut from a face of a user's body)"
},
{
"source": "tangency-labs/solidcraft#3932",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry"
},
{
"source": "tangency-labs/solidcraft#3948",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry"
},
{
"source": "tangency-labs/solidcraft#3961",
"why": "UI only: should hidden bodies be left out of a cut: a visibility policy, the cut itself is right"
},
{
"source": "tangency-labs/solidcraft#3975",
"why": "not geometry: feature request (rework of the hole tool's positioning)"
},
{
"source": "tangency-labs/solidcraft#3978",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry"
},
{
"source": "tangency-labs/solidcraft#4017",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry"
},
{
"source": "tangency-labs/solidcraft#4036",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry"
},
{
"source": "tangency-labs/solidcraft#4041",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry (extrude cut 'up to' another body: 'nothing lies between the profile and the To object')"
},
{
"source": "tangency-labs/solidcraft#4042",
"why": "UI only: sketch mirror about an origin axis is not offered in the sketch tool, no solid geometry"
},
{
"source": "tangency-labs/solidcraft#4070",
"why": "not geometry: hole not created, the report gives only the sketch point id"
},
{
"source": "tangency-labs/solidcraft#4075",
"why": "needs a user's design that can't be rebuilt synthetically: the report gives only the failing command, no geometry"
},
{
"source": "tangency-labs/solidcraft#4077",
"why": "UI only: sketch mirror about an origin axis is not offered in the sketch tool, no solid geometry"
},
{
"source": "tangency-labs/solidcraft#4098",
"why": "not geometry: documentation of the taper sign (a positive taper makes the walls lean outward); the behaviour is not wrong"
},
{
"source": "tangency-labs/solidcraft#4111",
"why": "UI only: Press/Pull opens Extrude on a selection with no planar face or profile"
},
{
"source": "tangency-labs/solidcraft#4124",
"why": "other area: import (the extrude acts on an imported object's orientation / a STEP file's face)"
}
]