mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-04 02:55:54 +00:00
kernel-cases: booleans from #2896-#3383 (11 cases) and the skipped list
Cases for the near-contact gap join, a countersunk hole beside a distant body, a perforated plate under a ring, a sealed void, a rim and tooth join, a frustum cut, a line-to-line pin, a flush notch, spoke patterns and a join into a rotated occurrence. The rest of the bundle is in skipped-b.json with one line each. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#2896"
|
||||
],
|
||||
"what": "a join of a ring and an arm whose R5 convex tip stops 0.01 mm short of the ring's outer wall: nothing overlaps, so nothing fuses",
|
||||
"source": "analytic",
|
||||
"method": "ring pi*(30^2-24^2)*6 and arm 6*(350+12.5*pi) are 0.01 mm apart (arm tip at x=30.01): the join has nothing to fuse, so the two bodies stay apart (body_count 2) and V is the sum of the two",
|
||||
"body_count": 2,
|
||||
"volume_mm3": 8442.875567597792
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 30,
|
||||
"height": 6,
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"body_name": "Ring"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 24,
|
||||
"height": 6,
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Ring"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 35,
|
||||
"width": 10,
|
||||
"height": 6,
|
||||
"corner": [
|
||||
35.01,
|
||||
-5,
|
||||
0
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "Arm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 5,
|
||||
"height": 6,
|
||||
"base": [
|
||||
35.01,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"Arm"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.combine",
|
||||
"params": {
|
||||
"target": "Ring",
|
||||
"tools": [
|
||||
"Arm"
|
||||
],
|
||||
"operation": "join"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#2904"
|
||||
],
|
||||
"what": "a countersunk hole in a small plate, near a rounded corner, while an unrelated body sits 120 mm away: only the plate may change, and the countersink must be complete",
|
||||
"source": "analytic",
|
||||
"method": "lid: rounded rectangle 80.4x22.9 (r2) x 2 thick = 2*(80.4*22.9 - (4-pi)*2^2) = 3675.4527. Hole at (-38.7,-8.35), d2.4 through, countersink d4.2 at 90 deg (a cone of half angle 45: radius 2.1 at the top face z=9.1 shrinking to 1.2 at depth 0.9). Removed = Int over the plate around the hole of the tool's depth: 2 for r<=1.2, 2.1-r for 1.2<r<2.1, with the plate bounded by the corner arc (centre (-38.2,-7.85), r2) which clips the countersink; integrated numerically in polar coordinates = 11.8482. The distant box stays 1000. Total = lid - removed + 1000 (tolerance 1e-4: the countersink's missing part is 4.5 mm^3)",
|
||||
"body_count": 2,
|
||||
"volume_mm3": 4663.6045492287185,
|
||||
"tolerance": {
|
||||
"rel": 0.0001
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"offset": 7.1
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.rounded",
|
||||
"params": {
|
||||
"p0": [
|
||||
-40.2,
|
||||
-9.85
|
||||
],
|
||||
"p1": [
|
||||
40.2,
|
||||
13.05
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"distance": 2,
|
||||
"operation": "new",
|
||||
"body_name": "lid"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 10,
|
||||
"width": 10,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
158,
|
||||
0,
|
||||
-5.9
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "case"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.hole",
|
||||
"params": {
|
||||
"position": [
|
||||
-38.7,
|
||||
-8.35,
|
||||
9.1
|
||||
],
|
||||
"diameter": 2.4,
|
||||
"type": "countersink",
|
||||
"cs_diameter": 4.2,
|
||||
"cs_angle": "90 deg"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#3027"
|
||||
],
|
||||
"what": "a pin (r4) seated line to line in a bore (r4, exactly coaxial) of a bush: the two cylinder walls coincide",
|
||||
"source": "analytic",
|
||||
"method": "the pin exactly fills the bore (same radius, same axis, same length 10), so the join is the plain block 30x30x10: V = 9000, one body, bbox x,y +-15, z 0..10",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 9000.0,
|
||||
"bbox": {
|
||||
"min": [
|
||||
-15,
|
||||
-15,
|
||||
0
|
||||
],
|
||||
"max": [
|
||||
15,
|
||||
15,
|
||||
10
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 30,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
-15,
|
||||
-15,
|
||||
0
|
||||
],
|
||||
"body_name": "Bush"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 4,
|
||||
"height": 10,
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Bush"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 4,
|
||||
"height": 10,
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "Pin"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.combine",
|
||||
"params": {
|
||||
"target": "Bush",
|
||||
"tools": [
|
||||
"Pin"
|
||||
],
|
||||
"operation": "join"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#3092",
|
||||
"tangency-labs/solidcraft#2844"
|
||||
],
|
||||
"what": "a ring (r 19.6/20.8, 20 tall) joined onto the top of an 80x80x1.2 plate with a 9x9 grid of 6.4 mm square holes: the ring's foot crosses many hole edges",
|
||||
"source": "analytic",
|
||||
"method": "plate: 80*80*1.2 - 81*6.4^2*1.2 (holes on an 8 mm pitch, centred); ring: pi*(20.8^2-19.6^2)*20; the ring stands on the plate top (z 1.2..21.2) so they share only a contact face: V = sum. One body",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 6744.77623692066
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#3175"
|
||||
],
|
||||
"what": "a cut over the bottom edge of a revolved cylinder that holds a sealed spherical void on its axis: the body must not come out empty or refused",
|
||||
"source": "analytic",
|
||||
"method": "revolved cylinder r24 h60 minus the sealed sphere r2 at z=30 minus the box x 20..30, y -10..10, z -5..10 where it meets the cylinder: {x>=20, |y|<=10, x^2+y^2<=24^2} is Int from -10 to 10 of (sqrt(576-y^2) - 20) dy = 10*sqrt(476) + 576*asin(10/24) - 400 = 65.725 over z in 0..10. V = pi*24^2*60 - 4/3*pi*2^3 - 10*area = 107882.68. One body that holds two shells (outer and the void), so valid is false: the rig reads more than one shell as not a solid",
|
||||
"valid": false,
|
||||
"body_count": 1,
|
||||
"volume_mm3": 107882.68287918373
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XZ"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
24,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
24,
|
||||
0
|
||||
],
|
||||
[
|
||||
24,
|
||||
-60
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
24,
|
||||
-60
|
||||
],
|
||||
[
|
||||
0,
|
||||
-60
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
-60
|
||||
],
|
||||
[
|
||||
0,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.revolve",
|
||||
"params": {
|
||||
"axis": "y",
|
||||
"body_name": "Can"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.sphere",
|
||||
"params": {
|
||||
"radius": 2,
|
||||
"center": [
|
||||
0,
|
||||
0,
|
||||
30
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Can"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 10,
|
||||
"width": 20,
|
||||
"height": 15,
|
||||
"corner": [
|
||||
20,
|
||||
-10,
|
||||
-5
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Can"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#3243"
|
||||
],
|
||||
"what": "a join of a cylindrical rim (r 15.27..16.65, to z=5) and a rounded tooth trimmed to the same two cylinders that overlaps it by 0.01 mm in Z",
|
||||
"source": "invariants",
|
||||
"method": "the tooth (z 4.99..7.7) and the rim (z 1.76..5) overlap in z 4.99..5 with positive volume, so the join succeeds and gives one closed solid; the result is larger than the rim alone. No closed form is derived for the tooth, so only the outcome, validity and the body count are graded",
|
||||
"body_count": 1
|
||||
}
|
||||
@@ -0,0 +1,145 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 16.65,
|
||||
"height": 5,
|
||||
"body_name": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 15.27,
|
||||
"height": 4,
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
1.76
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Base"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
-1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-0.1706475844770042,
|
||||
7.63270030627277
|
||||
],
|
||||
[
|
||||
-3,
|
||||
4.99
|
||||
],
|
||||
[
|
||||
3,
|
||||
4.99
|
||||
],
|
||||
[
|
||||
0.1706475844770042,
|
||||
7.63270030627277
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.three_point",
|
||||
"params": {
|
||||
"start": [
|
||||
0.1706475844770042,
|
||||
7.63270030627277
|
||||
],
|
||||
"through": [
|
||||
0,
|
||||
7.7
|
||||
],
|
||||
"end": [
|
||||
-0.1706475844770042,
|
||||
7.63270030627277
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"distance": 1.6875953835063608,
|
||||
"start_offset": 14.962404616493638,
|
||||
"operation": "new",
|
||||
"body_name": "Tooth"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 15.27,
|
||||
"height": 2.73,
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
4.98
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Tooth"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 16.65,
|
||||
"height": 2.73,
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
4.98
|
||||
],
|
||||
"operation": "intersect",
|
||||
"targets": [
|
||||
"Tooth"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.combine",
|
||||
"params": {
|
||||
"target": "Base",
|
||||
"tools": [
|
||||
"Tooth"
|
||||
],
|
||||
"operation": "join"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#3303",
|
||||
"tangency-labs/solidcraft#3309"
|
||||
],
|
||||
"what": "cutting the complete circular top face of a widening conical frustum inward: the cylindrical tool touches the cone only at its rim",
|
||||
"source": "analytic",
|
||||
"method": "frustum r 1 (bottom) -> 5 (top) over 10 mm (slope 0.4); removing the top 4.4 mm leaves height 5.6 with radii 1 and 1+0.4*5.6 = 3.24: V = pi*h*(r0^2 + r0*r1 + r1^2)/3 = pi*5.6*(1 + 3.24 + 3.24^2)/3. Faces: cone wall, bottom disc, new top disc = 3; bbox z 0..5.6",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 86.42580033088389,
|
||||
"faces": 3,
|
||||
"bbox": {
|
||||
"min": [
|
||||
-3.24,
|
||||
-3.24,
|
||||
0
|
||||
],
|
||||
"max": [
|
||||
3.24,
|
||||
3.24,
|
||||
5.6
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XZ"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
1,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
1,
|
||||
0
|
||||
],
|
||||
[
|
||||
5,
|
||||
-10
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
5,
|
||||
-10
|
||||
],
|
||||
[
|
||||
0,
|
||||
-10
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
-10
|
||||
],
|
||||
[
|
||||
0,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.revolve",
|
||||
"params": {
|
||||
"axis": "y",
|
||||
"body_name": "Cone"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"face": [
|
||||
2,
|
||||
0,
|
||||
10
|
||||
],
|
||||
"face_body": "Cone",
|
||||
"distance": -4.4,
|
||||
"operation": "cut"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#3327",
|
||||
"tangency-labs/solidcraft#2963"
|
||||
],
|
||||
"what": "a cut whose end face lies exactly in a side wall of its target (a window notch): the cut must open the wall, with no skin left in it",
|
||||
"source": "analytic",
|
||||
"method": "block 30x30x10 minus the box x 20..30, y 10..20, z 3..7, whose end x=30 is flush with the block's side: V = 9000 - 400 = 8600. Faces: top, bottom, 4 sides (the x=30 side with the window as an inner loop) + notch floor, ceiling, two side walls and end wall = 11",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 8600.0,
|
||||
"faces": 11
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 30,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"body_name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 10,
|
||||
"width": 10,
|
||||
"height": 4,
|
||||
"corner": [
|
||||
20,
|
||||
10,
|
||||
3
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Block"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#3378"
|
||||
],
|
||||
"what": "a circular pattern of a join whose two targets (rim and hub) were merged into one body by that join",
|
||||
"source": "analytic",
|
||||
"method": "ring pi*(66^2-63^2)*3 + hub pi*12^2*3 + 5 spokes. A spoke is the box 53x3x2.5 (x 11..64, z +-1.25, y 0..3; the issue starts it at x=12, tangent to the hub, which joins the hub by a line only, so it starts at 11 here to overlap it). It overlaps the ring where x >= sqrt(63^2-z^2): 7.531, and the hub where x <= sqrt(12^2-z^2): 7.337 (both = width * Int over z in -1.25..1.25). Neighbouring spokes (72 deg apart) do not meet. V = ring + hub + 5*(397.5 - overlaps), one body",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 6917.717209884256
|
||||
}
|
||||
+78
@@ -0,0 +1,78 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 66,
|
||||
"height": 3,
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"axis": "Y",
|
||||
"body_name": "rim"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 63,
|
||||
"height": 3,
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"axis": "Y",
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"rim"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 12,
|
||||
"height": 3,
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"axis": "Y",
|
||||
"body_name": "hub"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 53,
|
||||
"width": 3,
|
||||
"height": 2.5,
|
||||
"corner": [
|
||||
11,
|
||||
0,
|
||||
-1.25
|
||||
],
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"rim",
|
||||
"hub"
|
||||
],
|
||||
"name": "spoke"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.pattern.circular",
|
||||
"params": {
|
||||
"features": [
|
||||
"spoke"
|
||||
],
|
||||
"axis": "Y",
|
||||
"count": 5
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#3379"
|
||||
],
|
||||
"what": "a circular pattern (count 5) of a spoke thinner than the ring it joins (faces 0.5 mm inside the rim and hub faces)",
|
||||
"source": "analytic",
|
||||
"method": "ring pi*(66^2-63^2)*3 + hub pi*12^2*3 + 5 spokes. A spoke is the box 53x2x2.5 (x 11..64, z +-1.25, y 0.5..2.5; the issue starts it at x=12, tangent to the hub, which joins the hub by a line only, so it starts at 11 here to overlap it). It overlaps the ring by 5.021 and the hub by 4.891 (width * Int over z in -1.25..1.25 of 64 - sqrt(63^2-z^2) and of sqrt(12^2-z^2) - 11). V = ring + hub + 5*(265 - overlaps), one body",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 6279.997172312351
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 66,
|
||||
"height": 3,
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"axis": "Y",
|
||||
"body_name": "rim"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 63,
|
||||
"height": 3,
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"axis": "Y",
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"rim"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 12,
|
||||
"height": 3,
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"axis": "Y",
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"rim"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 53,
|
||||
"width": 2,
|
||||
"height": 2.5,
|
||||
"corner": [
|
||||
11,
|
||||
0.5,
|
||||
-1.25
|
||||
],
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"rim"
|
||||
],
|
||||
"name": "spoke"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.pattern.circular",
|
||||
"params": {
|
||||
"features": [
|
||||
"spoke"
|
||||
],
|
||||
"axis": "Y",
|
||||
"count": 5
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#3383"
|
||||
],
|
||||
"what": "a root body joined into a body inside a component whose occurrence is turned a quarter turn: the tool must stay where it is in the world",
|
||||
"source": "analytic",
|
||||
"method": "Plate 40x40x10 (x -20..20, y -20..20, z 0..10) turned 90 deg about X becomes x -20..20, y -10..0, z -20..20. Boss is world x -5..5, y -5..5, z -25..-15. Overlap = 10 x 5 x 5 = 250 (y -5..0, z -20..-15). Union = 16000 + 1000 - 250 = 16750, one body; bbox x -20..20, y -10..5, z -25..20",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 16750.0,
|
||||
"bbox": {
|
||||
"min": [
|
||||
-20,
|
||||
-10,
|
||||
-25
|
||||
],
|
||||
"max": [
|
||||
20,
|
||||
5,
|
||||
20
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "component.create",
|
||||
"params": {
|
||||
"name": "Part"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 40,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
-20,
|
||||
-20,
|
||||
0
|
||||
],
|
||||
"body_name": "Plate"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.activate",
|
||||
"params": {
|
||||
"component": "root"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "occurrence.move",
|
||||
"params": {
|
||||
"occurrence": "Part:1",
|
||||
"axis": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"angle": "90 deg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "component.capture_position",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 10,
|
||||
"width": 10,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
-5,
|
||||
-5,
|
||||
-25
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "Boss"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.combine",
|
||||
"params": {
|
||||
"target": "Plate",
|
||||
"tools": [
|
||||
"Boss"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,338 @@
|
||||
[
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2541",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2543",
|
||||
"why": "other area: import (mesh body from an imported file: a boolean needs a solid body, by design)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2551",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2553",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2565",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2566",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2574",
|
||||
"why": "feature request, not a wrong result (a hexagonal or skip-instance pattern option)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2581",
|
||||
"why": "UI only: no geometry"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2586",
|
||||
"why": "needs the user's design: draft refused on faces next to the drafted walls, only the command is reported"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2599",
|
||||
"why": "other area: assemblies (joint.as_built does not follow a parameter change), not kernel geometry"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2602",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2610",
|
||||
"why": "no description, only a screenshot or nothing: no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2696",
|
||||
"why": "CI/test infrastructure only (xtask skips the nightly boolean_props tests), no geometry"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2740",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2750",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2765",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2766",
|
||||
"why": "needs the user's design: draft refused on faces next to the drafted walls, only the command is reported"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2770",
|
||||
"why": "needs the user's design (a 22 KB Gridfinity base shared with the author's permission); not rebuilt or committed"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2783",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2798",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2799",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2803",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2843",
|
||||
"why": "UI only: no geometry"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2873",
|
||||
"why": "UI/feature request: press-pull on a round face has no selection path; no wrong geometry to grade"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2882",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2885",
|
||||
"why": "UI: the pattern got a construction axis name the command does not accept; no wrong geometry"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2887",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2890",
|
||||
"why": "UI only: no geometry"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2911",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2941",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2946",
|
||||
"why": "other area: import (B-spline patch and loosely-fitted imported faces; no small public geometry rebuilt)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2949",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2950",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2959",
|
||||
"why": "UI: selecting the whole sketch line (with its fillet) as a split tool; no wrong geometry"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2965",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2970",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2973",
|
||||
"why": "no description, only a screenshot or nothing: no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2979",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2997",
|
||||
"why": "no description, only a screenshot or nothing: no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3007",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3019",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3026",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3034",
|
||||
"why": "UI only: no geometry"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3035",
|
||||
"why": "perf only: the motivating design is private, no wrong result"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3038",
|
||||
"why": "other area: import (mesh body from an imported file: a boolean needs a solid body, by design)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3042",
|
||||
"why": "UI: no visual feedback when a patterned hole misses the surface; no geometry"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3050",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3051",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3056",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3079",
|
||||
"why": "needs the user's design: the sketch loop is not closed, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3090",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3100",
|
||||
"why": "other area: import (split of a body imported from STEP; the file is not available)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3101",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3112",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3117",
|
||||
"why": "no description, only a screenshot or nothing: no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3118",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3130",
|
||||
"why": "other area: threads"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3132",
|
||||
"why": "feature request (pick target bodies in Edit Extrude); no wrong result"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3138",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3147",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3149",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3157",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3176",
|
||||
"why": "needs the user's design: draft refused on faces next to the drafted walls, only the command is reported"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3185",
|
||||
"why": "other area: crashes (a boolean retry hang on a broken candidate; the design from the report is private)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3192",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3193",
|
||||
"why": "no description, only a screenshot or nothing: no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3194",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3205",
|
||||
"why": "UI only: no geometry"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3211",
|
||||
"why": "no description, only a screenshot or nothing: no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3212",
|
||||
"why": "other area: import (an imported assembly, nested shells)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3227",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3232",
|
||||
"why": "no description or geometry: only that an intersect does not seem to work"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3247",
|
||||
"why": "feature request, not a wrong result (a hexagonal or skip-instance pattern option)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3251",
|
||||
"why": "other area: import (mesh body from an imported file: a boolean needs a solid body, by design)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3255",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3271",
|
||||
"why": "UI only: no geometry"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3276",
|
||||
"why": "other area: fillets (the failing step is the fillet/chamfer after three extrudes; no dimensions given)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3279",
|
||||
"why": "sketch pattern editing (sketch.pattern.circular), not solid geometry"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3293",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3302",
|
||||
"why": "UI: the pattern was started with nothing selected; no geometry"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3324",
|
||||
"why": "other area: sheet metal (flat pattern and DXF ignore non-sheet features)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3374",
|
||||
"why": "other area: import (mesh body from an imported file: a boolean needs a solid body, by design)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3396",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3403",
|
||||
"why": "needs the user's design: only the failing command's parameters are reported, no geometry to rebuild"
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user