mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-06 12:01:10 +00:00
kernel-cases: crashes and hangs from the #140-#4149 reports (9 cases, 45 skipped)
140 join with a pad hanging past the edge, 1219 bore fillet then grooves, 1985/2243 STEP export of two enclosures, 3540 cut with a coincident cylinder face, 3685/1559 delete a fillet face, 4092 loft + ribs + pad union (two recipes), 2992 disk and 36 twisted loft blades. Everything else is skipped with a reason (private designs, other areas, UI, perf only). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#1219"
|
||||
],
|
||||
"what": "24 small grooves cut into a bore whose top edge has an unrelated 1 mm fillet: 73 s and 24 boolean retries instead of 0.2 s",
|
||||
"source": "analytic",
|
||||
"method": "block 140x140x25 minus bore r68.2 h25: V0 = 140*140*25 - pi*68.2^2*25 = 124692.46. Fillet R1 on the bore's top edge removes the corner region (square 1x1 minus quarter disc, centroid radii 68.7 and 69.2-4/(3pi)), Pappus: 2pi*(1*68.7 - pi/4*(69.2-4/(3pi))) = 92.26. Each groove is the 0.9x0.6 rectangle (x 67.8..68.7, y +-0.3) cut 4.5 deep (z 19..23.5); only the part outside the bore is material: 0.6*68.7 - 2*F(0.3), F(y)=(y*sqrt(r^2-y^2)+r^2*asin(y/r))/2, = 0.300132 mm2, times 4.5 times 24 = 32.41. The grooves end at z 23.5, below the fillet (z 24-25), so the removals are disjoint: V = 124692.46 - 92.26 - 32.41 = 124567.79",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 124567.79
|
||||
}
|
||||
@@ -0,0 +1,118 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 140,
|
||||
"width": 140,
|
||||
"height": 25,
|
||||
"corner": [
|
||||
-70,
|
||||
-70,
|
||||
0
|
||||
],
|
||||
"name": "Block",
|
||||
"body_name": "Frame"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "BoreSketch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"radius": 68.2
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"distance": 25,
|
||||
"operation": "cut",
|
||||
"name": "Bore"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
0,
|
||||
68.2,
|
||||
25
|
||||
]
|
||||
],
|
||||
"radius": 1,
|
||||
"name": "BoreRound"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"offset": 19,
|
||||
"name": "GrooveSketch"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
67.8,
|
||||
-0.3
|
||||
],
|
||||
"p1": [
|
||||
68.7,
|
||||
0.3
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.pattern.circular",
|
||||
"params": {
|
||||
"entities": [
|
||||
"l1",
|
||||
"l2",
|
||||
"l3",
|
||||
"l4"
|
||||
],
|
||||
"center": "origin",
|
||||
"count": 24
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"distance": 4.5,
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Frame"
|
||||
],
|
||||
"name": "Grooves"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "document.inspect",
|
||||
"params": {
|
||||
"measure": true,
|
||||
"sketches": false
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#140"
|
||||
],
|
||||
"what": "a join whose tool face lies flat on the target but only half backed by it (the pad hangs 10 mm past the edge) must not add material",
|
||||
"source": "analytic",
|
||||
"method": "box 40x30x20 plus pad 20x30x10 resting on z=20 from x=30..50, overlapping the base only along a face (10x30 contact). V = 24000 + 6000 = 30000. Area = 5200 + 2200 - 2*300 = 6800 (the contact patch leaves both surfaces).",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 30000.0,
|
||||
"area_mm2": 6800.0,
|
||||
"bbox": {
|
||||
"min": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"max": [
|
||||
50,
|
||||
30,
|
||||
30
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 20,
|
||||
"body_name": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"corner": [
|
||||
30,
|
||||
0,
|
||||
20
|
||||
],
|
||||
"length": 20,
|
||||
"width": 30,
|
||||
"height": 10,
|
||||
"body_name": "Pad",
|
||||
"operation": "new"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.combine",
|
||||
"params": {
|
||||
"target": "Base",
|
||||
"tools": [
|
||||
"Pad"
|
||||
],
|
||||
"operation": "join"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "inspect.measure",
|
||||
"params": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#1985",
|
||||
"tangency-labs/solidcraft#2243"
|
||||
],
|
||||
"what": "a small enclosure (rounded box, inner cut, corner gusset with a screw hole, two standoffs, USB cut-out) whose STEP export never finished (the export meshes its own file back)",
|
||||
"source": "invariants",
|
||||
"method": "the script builds one connected part: the export must finish, and the part is one valid closed solid",
|
||||
"body_count": 1
|
||||
}
|
||||
@@ -0,0 +1,846 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"expression": "74",
|
||||
"name": "interior_width",
|
||||
"unit": "mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"expression": "73",
|
||||
"name": "interior_depth",
|
||||
"unit": "mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"expression": "35",
|
||||
"name": "interior_height",
|
||||
"unit": "mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"expression": "2",
|
||||
"name": "wall_thickness",
|
||||
"unit": "mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"expression": "2.5",
|
||||
"name": "bottom_thickness",
|
||||
"unit": "mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"expression": "3",
|
||||
"name": "corner_radius",
|
||||
"unit": "mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"expression": "2",
|
||||
"name": "lid_thickness",
|
||||
"unit": "mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"expression": "1",
|
||||
"name": "lid_pad_height",
|
||||
"unit": "mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"expression": "0.3",
|
||||
"name": "lid_pad_gap",
|
||||
"unit": "mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"expression": "8",
|
||||
"name": "gusset_size",
|
||||
"unit": "mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"expression": "2.5",
|
||||
"name": "gusset_screw_d",
|
||||
"unit": "mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"expression": "8",
|
||||
"name": "gusset_screw_depth",
|
||||
"unit": "mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"expression": "10",
|
||||
"name": "flange_extend",
|
||||
"unit": "mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"expression": "4.5",
|
||||
"name": "flange_hole_d",
|
||||
"unit": "mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"expression": "5",
|
||||
"name": "pin_base_d",
|
||||
"unit": "mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"expression": "3",
|
||||
"name": "standoff_height",
|
||||
"unit": "mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"expression": "2",
|
||||
"name": "pin_d",
|
||||
"unit": "mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"expression": "1.6",
|
||||
"name": "pcb_thickness",
|
||||
"unit": "mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"expression": "2",
|
||||
"name": "pin_above",
|
||||
"unit": "mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"expression": "interior_width + 2 * wall_thickness",
|
||||
"name": "outer_width",
|
||||
"unit": "mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"expression": "interior_depth + 2 * wall_thickness",
|
||||
"name": "outer_depth",
|
||||
"unit": "mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"expression": "interior_height + bottom_thickness",
|
||||
"name": "outer_height",
|
||||
"unit": "mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"expression": "outer_width + 2 * flange_extend",
|
||||
"name": "flange_total_width",
|
||||
"unit": "mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"expression": "(interior_width - 53.34) / 2",
|
||||
"name": "board_offset_x",
|
||||
"unit": "mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"expression": "1",
|
||||
"name": "board_offset_y",
|
||||
"unit": "mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.add",
|
||||
"params": {
|
||||
"feature": {
|
||||
"id": 1,
|
||||
"name": "Koerper_Skizze",
|
||||
"plane": {
|
||||
"name": "XY",
|
||||
"type": "origin"
|
||||
},
|
||||
"sketch": {
|
||||
"constraints": [
|
||||
{
|
||||
"id": "k1",
|
||||
"l": 0,
|
||||
"type": "horizontal"
|
||||
},
|
||||
{
|
||||
"id": "k2",
|
||||
"l": 2,
|
||||
"type": "horizontal"
|
||||
},
|
||||
{
|
||||
"id": "k3",
|
||||
"l": 1,
|
||||
"type": "vertical"
|
||||
},
|
||||
{
|
||||
"id": "k4",
|
||||
"l": 3,
|
||||
"type": "vertical"
|
||||
},
|
||||
{
|
||||
"id": "k5",
|
||||
"p": 0,
|
||||
"q": 1,
|
||||
"type": "coincident"
|
||||
},
|
||||
{
|
||||
"c": 0,
|
||||
"id": "k6",
|
||||
"p": 1,
|
||||
"type": "point_on_curve"
|
||||
},
|
||||
{
|
||||
"c": 3,
|
||||
"id": "k7",
|
||||
"p": 1,
|
||||
"type": "point_on_curve"
|
||||
},
|
||||
{
|
||||
"a": 0,
|
||||
"b": 4,
|
||||
"id": "k8",
|
||||
"type": "tangent"
|
||||
},
|
||||
{
|
||||
"a": 3,
|
||||
"b": 4,
|
||||
"id": "k9",
|
||||
"type": "tangent"
|
||||
},
|
||||
{
|
||||
"c": 4,
|
||||
"id": "k10",
|
||||
"param": "d1",
|
||||
"type": "radius",
|
||||
"value": 3.0
|
||||
},
|
||||
{
|
||||
"a": 0,
|
||||
"b": 5,
|
||||
"id": "k11",
|
||||
"type": "tangent"
|
||||
},
|
||||
{
|
||||
"a": 1,
|
||||
"b": 5,
|
||||
"id": "k12",
|
||||
"type": "tangent"
|
||||
},
|
||||
{
|
||||
"a": 4,
|
||||
"b": 5,
|
||||
"id": "k13",
|
||||
"type": "equal"
|
||||
},
|
||||
{
|
||||
"a": 1,
|
||||
"b": 6,
|
||||
"id": "k14",
|
||||
"type": "tangent"
|
||||
},
|
||||
{
|
||||
"a": 2,
|
||||
"b": 6,
|
||||
"id": "k15",
|
||||
"type": "tangent"
|
||||
},
|
||||
{
|
||||
"a": 4,
|
||||
"b": 6,
|
||||
"id": "k16",
|
||||
"type": "equal"
|
||||
},
|
||||
{
|
||||
"a": 2,
|
||||
"b": 7,
|
||||
"id": "k17",
|
||||
"type": "tangent"
|
||||
},
|
||||
{
|
||||
"a": 3,
|
||||
"b": 7,
|
||||
"id": "k18",
|
||||
"type": "tangent"
|
||||
},
|
||||
{
|
||||
"a": 4,
|
||||
"b": 7,
|
||||
"id": "k19",
|
||||
"type": "equal"
|
||||
},
|
||||
{
|
||||
"id": "k20",
|
||||
"l": 0,
|
||||
"param": "d2",
|
||||
"type": "length",
|
||||
"value": 74.0
|
||||
},
|
||||
{
|
||||
"id": "k21",
|
||||
"l": 3,
|
||||
"param": "d3",
|
||||
"type": "length",
|
||||
"value": 73.0
|
||||
},
|
||||
{
|
||||
"a": 3,
|
||||
"b": 8,
|
||||
"id": "k22",
|
||||
"type": "collinear"
|
||||
},
|
||||
{
|
||||
"a": 0,
|
||||
"b": 9,
|
||||
"id": "k23",
|
||||
"type": "collinear"
|
||||
}
|
||||
],
|
||||
"counters": {
|
||||
"a": 4,
|
||||
"corner": 1,
|
||||
"j": 2,
|
||||
"k": 23,
|
||||
"l": 6,
|
||||
"p": 16
|
||||
},
|
||||
"curves": [
|
||||
{
|
||||
"a": 2,
|
||||
"b": 5,
|
||||
"construction": false,
|
||||
"id": "l1",
|
||||
"type": "line"
|
||||
},
|
||||
{
|
||||
"a": 6,
|
||||
"b": 8,
|
||||
"construction": false,
|
||||
"id": "l2",
|
||||
"type": "line"
|
||||
},
|
||||
{
|
||||
"a": 9,
|
||||
"b": 11,
|
||||
"construction": false,
|
||||
"id": "l3",
|
||||
"type": "line"
|
||||
},
|
||||
{
|
||||
"a": 12,
|
||||
"b": 3,
|
||||
"construction": false,
|
||||
"id": "l4",
|
||||
"type": "line"
|
||||
},
|
||||
{
|
||||
"a": 3,
|
||||
"b": 2,
|
||||
"c": 4,
|
||||
"construction": false,
|
||||
"id": "a1",
|
||||
"type": "arc"
|
||||
},
|
||||
{
|
||||
"a": 5,
|
||||
"b": 6,
|
||||
"c": 7,
|
||||
"construction": false,
|
||||
"id": "a2",
|
||||
"type": "arc"
|
||||
},
|
||||
{
|
||||
"a": 8,
|
||||
"b": 9,
|
||||
"c": 10,
|
||||
"construction": false,
|
||||
"id": "a3",
|
||||
"type": "arc"
|
||||
},
|
||||
{
|
||||
"a": 11,
|
||||
"b": 12,
|
||||
"c": 13,
|
||||
"construction": false,
|
||||
"id": "a4",
|
||||
"type": "arc"
|
||||
},
|
||||
{
|
||||
"a": 14,
|
||||
"b": 15,
|
||||
"construction": true,
|
||||
"id": "l5",
|
||||
"link": "j1",
|
||||
"type": "line"
|
||||
},
|
||||
{
|
||||
"a": 16,
|
||||
"b": 17,
|
||||
"construction": true,
|
||||
"id": "l6",
|
||||
"link": "j2",
|
||||
"type": "line"
|
||||
}
|
||||
],
|
||||
"links": [
|
||||
{
|
||||
"id": "j1",
|
||||
"kind": "project",
|
||||
"source": {
|
||||
"name": "y",
|
||||
"type": "sketch_axis"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "j2",
|
||||
"kind": "project",
|
||||
"source": {
|
||||
"name": "x",
|
||||
"type": "sketch_axis"
|
||||
}
|
||||
}
|
||||
],
|
||||
"points": [
|
||||
{
|
||||
"fixed": true,
|
||||
"id": "origin",
|
||||
"pos": [
|
||||
0.0,
|
||||
0.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"fixed": false,
|
||||
"id": "corner1",
|
||||
"pos": [
|
||||
0.0,
|
||||
0.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"fixed": false,
|
||||
"id": "p5",
|
||||
"pos": [
|
||||
3.0,
|
||||
0.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"fixed": false,
|
||||
"id": "p6",
|
||||
"pos": [
|
||||
0.0,
|
||||
3.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"fixed": false,
|
||||
"id": "a1.center",
|
||||
"pos": [
|
||||
3.0,
|
||||
3.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"fixed": false,
|
||||
"id": "p7",
|
||||
"pos": [
|
||||
77.0,
|
||||
0.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"fixed": false,
|
||||
"id": "p8",
|
||||
"pos": [
|
||||
80.0,
|
||||
3.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"fixed": false,
|
||||
"id": "a2.center",
|
||||
"pos": [
|
||||
77.0,
|
||||
3.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"fixed": false,
|
||||
"id": "p9",
|
||||
"pos": [
|
||||
80.0,
|
||||
76.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"fixed": false,
|
||||
"id": "p10",
|
||||
"pos": [
|
||||
77.0,
|
||||
79.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"fixed": false,
|
||||
"id": "a3.center",
|
||||
"pos": [
|
||||
77.0,
|
||||
76.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"fixed": false,
|
||||
"id": "p11",
|
||||
"pos": [
|
||||
3.0,
|
||||
79.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"fixed": false,
|
||||
"id": "p12",
|
||||
"pos": [
|
||||
0.0,
|
||||
76.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"fixed": false,
|
||||
"id": "a4.center",
|
||||
"pos": [
|
||||
3.0,
|
||||
76.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"fixed": true,
|
||||
"id": "p13",
|
||||
"link": "j1",
|
||||
"pos": [
|
||||
0.0,
|
||||
-100.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"fixed": true,
|
||||
"id": "p14",
|
||||
"link": "j1",
|
||||
"pos": [
|
||||
0.0,
|
||||
100.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"fixed": true,
|
||||
"id": "p15",
|
||||
"link": "j2",
|
||||
"pos": [
|
||||
-100.0,
|
||||
0.0
|
||||
]
|
||||
},
|
||||
{
|
||||
"fixed": true,
|
||||
"id": "p16",
|
||||
"link": "j2",
|
||||
"pos": [
|
||||
100.0,
|
||||
0.0
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"suppressed": false,
|
||||
"type": "sketch"
|
||||
},
|
||||
"params": [
|
||||
{
|
||||
"expression": "corner_radius",
|
||||
"name": "d1",
|
||||
"unit": "mm"
|
||||
},
|
||||
{
|
||||
"expression": "outer_width - 2*corner_radius",
|
||||
"name": "d2",
|
||||
"unit": "mm"
|
||||
},
|
||||
{
|
||||
"expression": "outer_depth - 2*corner_radius",
|
||||
"name": "d3",
|
||||
"unit": "mm"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.add",
|
||||
"params": {
|
||||
"feature": {
|
||||
"body_names": [
|
||||
"Unterteil"
|
||||
],
|
||||
"extent": {
|
||||
"convention": "total_distance",
|
||||
"direction": "positive",
|
||||
"distance": "outer_height"
|
||||
},
|
||||
"id": 2,
|
||||
"name": "Koerper",
|
||||
"operation": "new_body",
|
||||
"param_names": [
|
||||
"d4"
|
||||
],
|
||||
"profiles": {
|
||||
"type": "all"
|
||||
},
|
||||
"sketch": 1,
|
||||
"suppressed": false,
|
||||
"type": "extrude"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.add",
|
||||
"params": {
|
||||
"feature": {
|
||||
"corner": [
|
||||
"wall_thickness",
|
||||
"wall_thickness",
|
||||
"bottom_thickness"
|
||||
],
|
||||
"height": "interior_height + 1",
|
||||
"id": 5,
|
||||
"length": "interior_width",
|
||||
"name": "Innenraum",
|
||||
"operation": "cut",
|
||||
"param_names": [
|
||||
"d10",
|
||||
"d11",
|
||||
"d12"
|
||||
],
|
||||
"participants": [
|
||||
"Unterteil"
|
||||
],
|
||||
"suppressed": false,
|
||||
"type": "box",
|
||||
"width": "interior_depth"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.add",
|
||||
"params": {
|
||||
"feature": {
|
||||
"corner": [
|
||||
"wall_thickness + interior_width - gusset_size",
|
||||
"wall_thickness + interior_depth - gusset_size",
|
||||
"bottom_thickness"
|
||||
],
|
||||
"height": "interior_height",
|
||||
"id": 9,
|
||||
"length": "gusset_size",
|
||||
"name": "Gusset_11",
|
||||
"operation": "join",
|
||||
"param_names": [
|
||||
"d22",
|
||||
"d23",
|
||||
"d24"
|
||||
],
|
||||
"participants": [
|
||||
"Unterteil"
|
||||
],
|
||||
"suppressed": false,
|
||||
"type": "box",
|
||||
"width": "gusset_size"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.add",
|
||||
"params": {
|
||||
"feature": {
|
||||
"axis": [
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
],
|
||||
"base": [
|
||||
"wall_thickness + interior_width - gusset_size/2",
|
||||
"wall_thickness + interior_depth - gusset_size/2",
|
||||
"outer_height - gusset_screw_depth"
|
||||
],
|
||||
"height": "gusset_screw_depth + 1",
|
||||
"id": 13,
|
||||
"name": "Kernloch_11",
|
||||
"operation": "cut",
|
||||
"param_names": [
|
||||
"d31",
|
||||
"d32"
|
||||
],
|
||||
"participants": [
|
||||
"Unterteil"
|
||||
],
|
||||
"radius": "(gusset_screw_d) / 2",
|
||||
"suppressed": false,
|
||||
"type": "cylinder"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.add",
|
||||
"params": {
|
||||
"feature": {
|
||||
"axis": [
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
],
|
||||
"base": [
|
||||
"wall_thickness + board_offset_x + 17.78",
|
||||
"wall_thickness + board_offset_y + 66.04",
|
||||
"bottom_thickness"
|
||||
],
|
||||
"height": "standoff_height",
|
||||
"id": 18,
|
||||
"name": "PinSockel_2",
|
||||
"operation": "join",
|
||||
"param_names": [
|
||||
"d41",
|
||||
"d42"
|
||||
],
|
||||
"participants": [
|
||||
"Unterteil"
|
||||
],
|
||||
"radius": "(pin_base_d) / 2",
|
||||
"suppressed": false,
|
||||
"type": "cylinder"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.add",
|
||||
"params": {
|
||||
"feature": {
|
||||
"axis": [
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
],
|
||||
"base": [
|
||||
"wall_thickness + board_offset_x + 45.72",
|
||||
"wall_thickness + board_offset_y + 66.04",
|
||||
"bottom_thickness"
|
||||
],
|
||||
"height": "standoff_height",
|
||||
"id": 20,
|
||||
"name": "PinSockel_3",
|
||||
"operation": "join",
|
||||
"param_names": [
|
||||
"d45",
|
||||
"d46"
|
||||
],
|
||||
"participants": [
|
||||
"Unterteil"
|
||||
],
|
||||
"radius": "(pin_base_d) / 2",
|
||||
"suppressed": false,
|
||||
"type": "cylinder"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "timeline.add",
|
||||
"params": {
|
||||
"feature": {
|
||||
"corner": [
|
||||
"wall_thickness + board_offset_x + 9",
|
||||
-1.0,
|
||||
"bottom_thickness + 2.5"
|
||||
],
|
||||
"height": "6",
|
||||
"id": 22,
|
||||
"length": "10",
|
||||
"name": "Ausschnitt_MicroUSB",
|
||||
"operation": "cut",
|
||||
"param_names": [
|
||||
"d49",
|
||||
"d50",
|
||||
"d51"
|
||||
],
|
||||
"participants": [
|
||||
"Unterteil"
|
||||
],
|
||||
"suppressed": false,
|
||||
"type": "box",
|
||||
"width": "wall_thickness + 2"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "file.export",
|
||||
"params": {
|
||||
"path": "/tmp/kernel-case-1985.step",
|
||||
"format": "step"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "inspect.measure",
|
||||
"params": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#2243",
|
||||
"tangency-labs/solidcraft#1985"
|
||||
],
|
||||
"what": "a flanged enclosure with two standoffs and no screw hole whose STEP export also never finished",
|
||||
"source": "invariants",
|
||||
"method": "one connected part: the export finishes and the part is one valid closed solid",
|
||||
"body_count": 1
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#2992"
|
||||
],
|
||||
"what": "join of a disk and a circular pattern of 36 twisted lofted blades (embedded 2.54 mm in the disk): blocks for minutes",
|
||||
"source": "invariants",
|
||||
"method": "each blade root is embedded in the disk, so the 37 bodies join into one connected solid; the join must finish with one valid closed solid",
|
||||
"body_count": 1
|
||||
}
|
||||
@@ -0,0 +1,471 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"name": "HP compresseur 1 — disque — profil axial",
|
||||
"plane": {
|
||||
"origin": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"closed": true,
|
||||
"points": [
|
||||
[
|
||||
11.41984,
|
||||
88.9
|
||||
],
|
||||
[
|
||||
11.41984,
|
||||
101.6
|
||||
],
|
||||
[
|
||||
59.95416,
|
||||
101.6
|
||||
],
|
||||
[
|
||||
59.95416,
|
||||
88.9
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.revolve",
|
||||
"params": {
|
||||
"axis": "X",
|
||||
"body_name": "HP compresseur 1 — disque",
|
||||
"name": "HP compresseur 1 — disque",
|
||||
"sketch": "HP compresseur 1 — disque — profil axial"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"name": "HP compresseur 1 — aube — section 1",
|
||||
"plane": {
|
||||
"origin": [
|
||||
35.687,
|
||||
99.06,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.spline.fit_point",
|
||||
"params": {
|
||||
"periodic": true,
|
||||
"points": [
|
||||
[
|
||||
-28.87138948,
|
||||
-20.9762923
|
||||
],
|
||||
[
|
||||
-28.44419823,
|
||||
-18.52855307
|
||||
],
|
||||
[
|
||||
-26.53108815,
|
||||
-15.69743162
|
||||
],
|
||||
[
|
||||
-22.61356214,
|
||||
-11.37514747
|
||||
],
|
||||
[
|
||||
-15.644211,
|
||||
-5.18190517
|
||||
],
|
||||
[
|
||||
-7.05530744,
|
||||
1.2107885
|
||||
],
|
||||
[
|
||||
3.17203981,
|
||||
7.77693192
|
||||
],
|
||||
[
|
||||
13.81643744,
|
||||
13.76905473
|
||||
],
|
||||
[
|
||||
22.86860424,
|
||||
18.30983423
|
||||
],
|
||||
[
|
||||
28.82733926,
|
||||
21.03692222
|
||||
],
|
||||
[
|
||||
28.91543969,
|
||||
20.91566238
|
||||
],
|
||||
[
|
||||
23.79329117,
|
||||
17.03711185
|
||||
],
|
||||
[
|
||||
15.87870265,
|
||||
10.93059018
|
||||
],
|
||||
[
|
||||
6.36279192,
|
||||
3.38523839
|
||||
],
|
||||
[
|
||||
-3.08519731,
|
||||
-4.25359932
|
||||
],
|
||||
[
|
||||
-11.45413995,
|
||||
-10.94904321
|
||||
],
|
||||
[
|
||||
-18.87617404,
|
||||
-16.51922089
|
||||
],
|
||||
[
|
||||
-23.6739244,
|
||||
-19.62998015
|
||||
],
|
||||
[
|
||||
-26.61596063,
|
||||
-21.04490625
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"name": "HP compresseur 1 — aube — section 2",
|
||||
"plane": {
|
||||
"origin": [
|
||||
35.687,
|
||||
245.745,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.spline.fit_point",
|
||||
"params": {
|
||||
"periodic": true,
|
||||
"points": [
|
||||
[
|
||||
-31.55029053,
|
||||
-13.98116431
|
||||
],
|
||||
[
|
||||
-30.65021465,
|
||||
-11.75337891
|
||||
],
|
||||
[
|
||||
-28.26746614,
|
||||
-9.46429679
|
||||
],
|
||||
[
|
||||
-23.68724912,
|
||||
-6.17159331
|
||||
],
|
||||
[
|
||||
-15.84223605,
|
||||
-1.7284767
|
||||
],
|
||||
[
|
||||
-6.4254806,
|
||||
2.5749393
|
||||
],
|
||||
[
|
||||
4.57560867,
|
||||
6.71024047
|
||||
],
|
||||
[
|
||||
15.85467128,
|
||||
10.21825916
|
||||
],
|
||||
[
|
||||
25.33406458,
|
||||
12.67675598
|
||||
],
|
||||
[
|
||||
31.52093009,
|
||||
14.04741992
|
||||
],
|
||||
[
|
||||
31.57965098,
|
||||
13.9149087
|
||||
],
|
||||
[
|
||||
25.95038894,
|
||||
11.28594101
|
||||
],
|
||||
[
|
||||
17.22921681,
|
||||
7.11642087
|
||||
],
|
||||
[
|
||||
6.70231576,
|
||||
1.91105314
|
||||
],
|
||||
[
|
||||
-3.7793141,
|
||||
-3.39647483
|
||||
],
|
||||
[
|
||||
-13.04946071,
|
||||
-8.03073246
|
||||
],
|
||||
[
|
||||
-21.19619701,
|
||||
-11.79297191
|
||||
],
|
||||
[
|
||||
-26.36310309,
|
||||
-13.76173626
|
||||
],
|
||||
[
|
||||
-29.43165371,
|
||||
-14.50321795
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"name": "HP compresseur 1 — aube — section 3",
|
||||
"plane": {
|
||||
"origin": [
|
||||
35.687,
|
||||
365.76,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.spline.fit_point",
|
||||
"params": {
|
||||
"periodic": true,
|
||||
"points": [
|
||||
[
|
||||
-32.54932697,
|
||||
-8.11545869
|
||||
],
|
||||
[
|
||||
-31.31508433,
|
||||
-6.13255159
|
||||
],
|
||||
[
|
||||
-28.65078449,
|
||||
-4.33874353
|
||||
],
|
||||
[
|
||||
-23.71444686,
|
||||
-1.95112378
|
||||
],
|
||||
[
|
||||
-15.45946156,
|
||||
0.99249503
|
||||
],
|
||||
[
|
||||
-5.72271793,
|
||||
3.53965294
|
||||
],
|
||||
[
|
||||
5.50309282,
|
||||
5.66103596
|
||||
],
|
||||
[
|
||||
16.89025502,
|
||||
7.13527368
|
||||
],
|
||||
[
|
||||
26.37864214,
|
||||
7.90526159
|
||||
],
|
||||
[
|
||||
32.53228451,
|
||||
8.18381227
|
||||
],
|
||||
[
|
||||
32.56636943,
|
||||
8.0471051
|
||||
],
|
||||
[
|
||||
26.73639166,
|
||||
6.47040661
|
||||
],
|
||||
[
|
||||
17.68811901,
|
||||
3.93521603
|
||||
],
|
||||
[
|
||||
6.73755393,
|
||||
0.7098829
|
||||
],
|
||||
[
|
||||
-4.18673319,
|
||||
-2.62084535
|
||||
],
|
||||
[
|
||||
-13.83837676,
|
||||
-5.50932095
|
||||
],
|
||||
[
|
||||
-22.26849929,
|
||||
-7.75050271
|
||||
],
|
||||
[
|
||||
-27.54538444,
|
||||
-8.77226094
|
||||
],
|
||||
[
|
||||
-30.60776263,
|
||||
-8.96946398
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.loft",
|
||||
"params": {
|
||||
"body_name": "HP compresseur 1 — aube",
|
||||
"name": "HP compresseur 1 — aube — loft vrillé",
|
||||
"operation": "new",
|
||||
"sections": [
|
||||
{
|
||||
"sketch": "HP compresseur 1 — aube — section 1"
|
||||
},
|
||||
{
|
||||
"sketch": "HP compresseur 1 — aube — section 2"
|
||||
},
|
||||
{
|
||||
"sketch": "HP compresseur 1 — aube — section 3"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.pattern.circular",
|
||||
"params": {
|
||||
"axis": "X",
|
||||
"bodies": [
|
||||
"HP compresseur 1 — aube"
|
||||
],
|
||||
"count": 36
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.combine",
|
||||
"params": {
|
||||
"operation": "join",
|
||||
"target": "HP compresseur 1 — disque",
|
||||
"tools": [
|
||||
"HP compresseur 1 — aube",
|
||||
"HP compresseur 1 — aube (2)",
|
||||
"HP compresseur 1 — aube (3)",
|
||||
"HP compresseur 1 — aube (4)",
|
||||
"HP compresseur 1 — aube (5)",
|
||||
"HP compresseur 1 — aube (6)",
|
||||
"HP compresseur 1 — aube (7)",
|
||||
"HP compresseur 1 — aube (8)",
|
||||
"HP compresseur 1 — aube (9)",
|
||||
"HP compresseur 1 — aube (10)",
|
||||
"HP compresseur 1 — aube (11)",
|
||||
"HP compresseur 1 — aube (12)",
|
||||
"HP compresseur 1 — aube (13)",
|
||||
"HP compresseur 1 — aube (14)",
|
||||
"HP compresseur 1 — aube (15)",
|
||||
"HP compresseur 1 — aube (16)",
|
||||
"HP compresseur 1 — aube (17)",
|
||||
"HP compresseur 1 — aube (18)",
|
||||
"HP compresseur 1 — aube (19)",
|
||||
"HP compresseur 1 — aube (20)",
|
||||
"HP compresseur 1 — aube (21)",
|
||||
"HP compresseur 1 — aube (22)",
|
||||
"HP compresseur 1 — aube (23)",
|
||||
"HP compresseur 1 — aube (24)",
|
||||
"HP compresseur 1 — aube (25)",
|
||||
"HP compresseur 1 — aube (26)",
|
||||
"HP compresseur 1 — aube (27)",
|
||||
"HP compresseur 1 — aube (28)",
|
||||
"HP compresseur 1 — aube (29)",
|
||||
"HP compresseur 1 — aube (30)",
|
||||
"HP compresseur 1 — aube (31)",
|
||||
"HP compresseur 1 — aube (32)",
|
||||
"HP compresseur 1 — aube (33)",
|
||||
"HP compresseur 1 — aube (34)",
|
||||
"HP compresseur 1 — aube (35)",
|
||||
"HP compresseur 1 — aube (36)"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#3540"
|
||||
],
|
||||
"what": "a groove cut whose r33 arcs lie exactly on the r33 cylinder of an earlier slot cut and overlap it in Z: minutes of CPU",
|
||||
"source": "analytic",
|
||||
"method": "tube r28..33, z -5..10: V = pi*(33^2-28^2)*15. Slots (3 sectors, 26 deg each, r29.5..33, z -3..8): each removes theta/2*(R^2-r^2)*h. Grooves (3 sectors, 69 deg, r30..33, z 4.7..8.3). Each groove overlaps its slot in 25 deg x r30..33 x z 4.7..8 (3.3), counted once. V = 14372.79 - 1637.88 - 1229.09 + 408.21 = 11914.03",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 11914.03
|
||||
}
|
||||
@@ -0,0 +1,471 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
-5
|
||||
],
|
||||
"radius": 33,
|
||||
"height": 15,
|
||||
"body_name": "Oberteil"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
-6
|
||||
],
|
||||
"radius": 28,
|
||||
"height": 17,
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Oberteil"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"offset": -3,
|
||||
"name": "Slots"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.center_point",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"start": [
|
||||
7.423384793347543,
|
||||
32.154212137912765
|
||||
],
|
||||
"end": [
|
||||
-7.423384793347546,
|
||||
32.154212137912765
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.center_point",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"start": [
|
||||
6.636056103144015,
|
||||
28.74391691116444
|
||||
],
|
||||
"end": [
|
||||
-6.636056103144019,
|
||||
28.74391691116444
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
7.423384793347543,
|
||||
32.154212137912765
|
||||
],
|
||||
[
|
||||
6.636056103144015,
|
||||
28.74391691116444
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-7.423384793347546,
|
||||
32.154212137912765
|
||||
],
|
||||
[
|
||||
-6.636056103144019,
|
||||
28.74391691116444
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.center_point",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"start": [
|
||||
-31.55805694678017,
|
||||
-9.648266255850313
|
||||
],
|
||||
"end": [
|
||||
-24.13467215343263,
|
||||
-22.505945882062445
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.center_point",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"start": [
|
||||
-28.210990300909547,
|
||||
-8.624965289320734
|
||||
],
|
||||
"end": [
|
||||
-21.574934197765533,
|
||||
-20.118951621843703
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-31.55805694678017,
|
||||
-9.648266255850313
|
||||
],
|
||||
[
|
||||
-28.210990300909547,
|
||||
-8.624965289320734
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-24.13467215343263,
|
||||
-22.505945882062445
|
||||
],
|
||||
[
|
||||
-21.574934197765533,
|
||||
-20.118951621843703
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.center_point",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"start": [
|
||||
24.134672153432632,
|
||||
-22.50594588206244
|
||||
],
|
||||
"end": [
|
||||
31.558056946780166,
|
||||
-9.648266255850325
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.center_point",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"start": [
|
||||
21.574934197765536,
|
||||
-20.1189516218437
|
||||
],
|
||||
"end": [
|
||||
28.210990300909543,
|
||||
-8.624965289320746
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
24.134672153432632,
|
||||
-22.50594588206244
|
||||
],
|
||||
[
|
||||
21.574934197765536,
|
||||
-20.1189516218437
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
31.558056946780166,
|
||||
-9.648266255850325
|
||||
],
|
||||
[
|
||||
28.210990300909543,
|
||||
-8.624965289320746
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Slots",
|
||||
"profiles": "all",
|
||||
"distance": 11,
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Oberteil"
|
||||
],
|
||||
"name": "SlotCut"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"offset": 4.7,
|
||||
"name": "Grooves"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.center_point",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"start": [
|
||||
6.861085796986062,
|
||||
32.27887082421558
|
||||
],
|
||||
"end": [
|
||||
-27.67612874219899,
|
||||
17.9730881554959
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.center_point",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"start": [
|
||||
6.237350724532783,
|
||||
29.344428022014167
|
||||
],
|
||||
"end": [
|
||||
-25.160117038362717,
|
||||
16.33917105045082
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
6.861085796986062,
|
||||
32.27887082421558
|
||||
],
|
||||
[
|
||||
6.237350724532783,
|
||||
29.344428022014167
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-27.67612874219899,
|
||||
17.9730881554959
|
||||
],
|
||||
[
|
||||
-25.160117038362717,
|
||||
16.33917105045082
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.center_point",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"start": [
|
||||
-31.38486503774007,
|
||||
-10.19756081437326
|
||||
],
|
||||
"end": [
|
||||
-1.7270865560171622,
|
||||
-32.95477464690094
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.center_point",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"start": [
|
||||
-28.53169548885461,
|
||||
-9.270509831248418
|
||||
],
|
||||
"end": [
|
||||
-1.5700786872883292,
|
||||
-29.958886042637214
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-31.38486503774007,
|
||||
-10.19756081437326
|
||||
],
|
||||
[
|
||||
-28.53169548885461,
|
||||
-9.270509831248418
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-1.7270865560171622,
|
||||
-32.95477464690094
|
||||
],
|
||||
[
|
||||
-1.5700786872883292,
|
||||
-29.958886042637214
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.center_point",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"start": [
|
||||
24.52377924075401,
|
||||
-22.08131000984232
|
||||
],
|
||||
"end": [
|
||||
29.403215298216143,
|
||||
14.981686491405037
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.center_point",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"start": [
|
||||
22.294344764321828,
|
||||
-20.073918190765745
|
||||
],
|
||||
"end": [
|
||||
26.73019572565104,
|
||||
13.619714992186397
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
24.52377924075401,
|
||||
-22.08131000984232
|
||||
],
|
||||
[
|
||||
22.294344764321828,
|
||||
-20.073918190765745
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
29.403215298216143,
|
||||
14.981686491405037
|
||||
],
|
||||
[
|
||||
26.73019572565104,
|
||||
13.619714992186397
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Grooves",
|
||||
"profiles": "all",
|
||||
"distance": 3.6,
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Oberteil"
|
||||
],
|
||||
"name": "GrooveCut"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "inspect.measure",
|
||||
"params": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#1559",
|
||||
"tangency-labs/solidcraft#3685"
|
||||
],
|
||||
"what": "Delete Face on a fillet face next to a face whose edge a boolean/fillet rebuilt as an intersection curve: must never panic (truck: not implemented: intersection curve cannot connect by homotopy)",
|
||||
"source": "analytic",
|
||||
"method": "box 40x30x20, one top edge filleted R5 (a point on the round is (35+5/sqrt2, 15, 15+5/sqrt2)), then the round deleted and healed from the neighbouring planes: the original box comes back, V = 40*30*20 = 24000, area 5200, 6 faces. (If the kernel cannot rebuild the face the only other acceptable answer is a clean refusal, never a panic; the grader expects the healed box because healing is well defined here.)",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 24000.0,
|
||||
"area_mm2": 5200.0,
|
||||
"faces": 6
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 20,
|
||||
"body_name": "B"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
40,
|
||||
15,
|
||||
20
|
||||
]
|
||||
],
|
||||
"radius": 5
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "face.delete",
|
||||
"params": {
|
||||
"faces": [
|
||||
[
|
||||
37.5355339,
|
||||
15,
|
||||
17.5355339
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "inspect.measure",
|
||||
"params": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#4092"
|
||||
],
|
||||
"what": "join extrude of a rounded pad over a lofted body with ring and ribs: repeated truck intersection_curve panics, then 'boolean Union: no result'",
|
||||
"source": "invariants",
|
||||
"method": "the pad (X -8..8, Y 18..25, Z 36..59) overlaps the body, ribs and ring, so the join is one connected solid; the join must succeed with one valid closed solid and no panic",
|
||||
"body_count": 1
|
||||
}
|
||||
@@ -0,0 +1,588 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "file.new",
|
||||
"params": {
|
||||
"name": "Native_loft_pad_union_original_condition"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "document.units",
|
||||
"params": {
|
||||
"units": "mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"name": "chamberTop",
|
||||
"expression": "64 mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"name": "flangeThickness",
|
||||
"expression": "4 mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"name": "lidThickness",
|
||||
"expression": "3 mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"name": "ventDiameter",
|
||||
"expression": "3 mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"name": "bottleThreadPitch",
|
||||
"expression": "3.18 mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "parameters.add",
|
||||
"params": {
|
||||
"name": "threadRadialClearance",
|
||||
"expression": "0.25 mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"diameter": "36 mm",
|
||||
"height": "21 mm",
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"operation": "new",
|
||||
"name": "01_Neck_outer_D36_H21",
|
||||
"body_name": "NATIVE_CAP_BODY"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"name": "02_Outer_transition_round",
|
||||
"plane": "XY",
|
||||
"offset": "21 mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"diameter": 36
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"name": "03_Outer_transition_ellipse",
|
||||
"plane": "XY",
|
||||
"offset": "38 mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.ellipse",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"major": [
|
||||
30.0,
|
||||
0
|
||||
],
|
||||
"minor_radius": 20.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.loft",
|
||||
"params": {
|
||||
"sections": [
|
||||
{
|
||||
"sketch": "02_Outer_transition_round"
|
||||
},
|
||||
{
|
||||
"sketch": "03_Outer_transition_ellipse"
|
||||
}
|
||||
],
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"NATIVE_CAP_BODY"
|
||||
],
|
||||
"name": "04_Outer_round_to_oval_transition"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"name": "05_Upper_chamber_60x40",
|
||||
"plane": "XY",
|
||||
"offset": "38 mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.ellipse",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"major": [
|
||||
30.0,
|
||||
0
|
||||
],
|
||||
"minor_radius": 20.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "05_Upper_chamber_60x40",
|
||||
"distance": "chamberTop - 38 mm",
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"NATIVE_CAP_BODY"
|
||||
],
|
||||
"name": "06_Upper_chamber_blank"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"name": "07_Flange_70x50_R6",
|
||||
"plane": "XY",
|
||||
"offset": "60 mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.rounded",
|
||||
"params": {
|
||||
"p0": [
|
||||
-35,
|
||||
-25
|
||||
],
|
||||
"p1": [
|
||||
35,
|
||||
25
|
||||
],
|
||||
"radius": 6
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "07_Flange_70x50_R6",
|
||||
"distance": "flangeThickness",
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"NATIVE_CAP_BODY"
|
||||
],
|
||||
"name": "08_External_bolt_flange"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"name": "Handle_outer_D24",
|
||||
"plane": {
|
||||
"origin": [
|
||||
-5,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
30,
|
||||
47
|
||||
],
|
||||
"diameter": 24
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Handle_outer_D24",
|
||||
"distance": 10,
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"NATIVE_CAP_BODY"
|
||||
],
|
||||
"name": "Handle_outer_D24_thickness10"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"name": "Handle_lower_rib_X-8",
|
||||
"plane": {
|
||||
"origin": [
|
||||
-8,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.three_point",
|
||||
"params": {
|
||||
"start": [
|
||||
18.0,
|
||||
37.5
|
||||
],
|
||||
"end": [
|
||||
19.5,
|
||||
36.0
|
||||
],
|
||||
"through": [
|
||||
18.439339828220177,
|
||||
36.43933982822018
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
19.5,
|
||||
36.0
|
||||
],
|
||||
[
|
||||
24.4516191451179,
|
||||
36.0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.three_point",
|
||||
"params": {
|
||||
"start": [
|
||||
24.4516191451179,
|
||||
36.0
|
||||
],
|
||||
"end": [
|
||||
25.20742568340403,
|
||||
38.79566835134765
|
||||
],
|
||||
"through": [
|
||||
25.89963546529897,
|
||||
37.10853003117829
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
25.20742568340403,
|
||||
38.79566835134765
|
||||
],
|
||||
[
|
||||
20.25580653828613,
|
||||
41.68411285266642
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.three_point",
|
||||
"params": {
|
||||
"start": [
|
||||
20.25580653828613,
|
||||
41.68411285266642
|
||||
],
|
||||
"end": [
|
||||
18.0,
|
||||
40.38844450131877
|
||||
],
|
||||
"through": [
|
||||
18.75290891031588,
|
||||
41.68915773017231
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
18.0,
|
||||
40.38844450131877
|
||||
],
|
||||
[
|
||||
18.0,
|
||||
37.5
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Handle_lower_rib_X-8",
|
||||
"distance": 4,
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"NATIVE_CAP_BODY"
|
||||
],
|
||||
"name": "Handle_lower_rib_X-8_R1p5_thickness4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"name": "Handle_lower_rib_X4",
|
||||
"plane": {
|
||||
"origin": [
|
||||
4,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.three_point",
|
||||
"params": {
|
||||
"start": [
|
||||
18.0,
|
||||
37.5
|
||||
],
|
||||
"end": [
|
||||
19.5,
|
||||
36.0
|
||||
],
|
||||
"through": [
|
||||
18.439339828220177,
|
||||
36.43933982822018
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
19.5,
|
||||
36.0
|
||||
],
|
||||
[
|
||||
24.4516191451179,
|
||||
36.0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.three_point",
|
||||
"params": {
|
||||
"start": [
|
||||
24.4516191451179,
|
||||
36.0
|
||||
],
|
||||
"end": [
|
||||
25.20742568340403,
|
||||
38.79566835134765
|
||||
],
|
||||
"through": [
|
||||
25.89963546529897,
|
||||
37.10853003117829
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
25.20742568340403,
|
||||
38.79566835134765
|
||||
],
|
||||
[
|
||||
20.25580653828613,
|
||||
41.68411285266642
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.three_point",
|
||||
"params": {
|
||||
"start": [
|
||||
20.25580653828613,
|
||||
41.68411285266642
|
||||
],
|
||||
"end": [
|
||||
18.0,
|
||||
40.38844450131877
|
||||
],
|
||||
"through": [
|
||||
18.75290891031588,
|
||||
41.68915773017231
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
18.0,
|
||||
40.38844450131877
|
||||
],
|
||||
[
|
||||
18.0,
|
||||
37.5
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Handle_lower_rib_X4",
|
||||
"distance": 4,
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"NATIVE_CAP_BODY"
|
||||
],
|
||||
"name": "Handle_lower_rib_X4_R1p5_thickness4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"name": "Handle_root_pad_R3",
|
||||
"plane": {
|
||||
"origin": [
|
||||
0,
|
||||
18,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.rounded",
|
||||
"params": {
|
||||
"p0": [
|
||||
-8,
|
||||
36
|
||||
],
|
||||
"p1": [
|
||||
8,
|
||||
59
|
||||
],
|
||||
"radius": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Handle_root_pad_R3",
|
||||
"distance": 7,
|
||||
"direction": "negative",
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"NATIVE_CAP_BODY"
|
||||
],
|
||||
"name": "Native_root_pad_R3"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#4092"
|
||||
],
|
||||
"what": "the same without the top flange: the join fails with 'boolean Union: no result'",
|
||||
"source": "invariants",
|
||||
"method": "the pad (X -8..8, Y 18..25, Z 36..59) overlaps the body, ribs and ring, so the join is one connected solid; the join must succeed with one valid closed solid and no panic",
|
||||
"body_count": 1
|
||||
}
|
||||
@@ -0,0 +1,508 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "file.new",
|
||||
"params": {
|
||||
"name": "Native_loft_pad_union_repro"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "document.units",
|
||||
"params": {
|
||||
"units": "mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"diameter": "36 mm",
|
||||
"height": "21 mm",
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"operation": "new",
|
||||
"name": "01_Neck_outer_D36_H21",
|
||||
"body_name": "NATIVE_CAP_BODY"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"name": "02_Outer_transition_round",
|
||||
"plane": "XY",
|
||||
"offset": "21 mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"diameter": 36
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"name": "03_Outer_transition_ellipse",
|
||||
"plane": "XY",
|
||||
"offset": "38 mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.ellipse",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"major": [
|
||||
30.0,
|
||||
0
|
||||
],
|
||||
"minor_radius": 20.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.loft",
|
||||
"params": {
|
||||
"sections": [
|
||||
{
|
||||
"sketch": "02_Outer_transition_round"
|
||||
},
|
||||
{
|
||||
"sketch": "03_Outer_transition_ellipse"
|
||||
}
|
||||
],
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"NATIVE_CAP_BODY"
|
||||
],
|
||||
"name": "04_Outer_round_to_oval_transition"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"name": "05_Upper_chamber_60x40",
|
||||
"plane": "XY",
|
||||
"offset": "38 mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.ellipse",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"major": [
|
||||
30.0,
|
||||
0
|
||||
],
|
||||
"minor_radius": 20.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "05_Upper_chamber_60x40",
|
||||
"distance": 26,
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"NATIVE_CAP_BODY"
|
||||
],
|
||||
"name": "06_Upper_chamber_blank"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"name": "Handle_outer_D24",
|
||||
"plane": {
|
||||
"origin": [
|
||||
-5,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
30,
|
||||
47
|
||||
],
|
||||
"diameter": 24
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Handle_outer_D24",
|
||||
"distance": 10,
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"NATIVE_CAP_BODY"
|
||||
],
|
||||
"name": "Handle_outer_D24_thickness10"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"name": "Handle_lower_rib_X-8",
|
||||
"plane": {
|
||||
"origin": [
|
||||
-8,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.three_point",
|
||||
"params": {
|
||||
"start": [
|
||||
18.0,
|
||||
37.5
|
||||
],
|
||||
"end": [
|
||||
19.5,
|
||||
36.0
|
||||
],
|
||||
"through": [
|
||||
18.439339828220177,
|
||||
36.43933982822018
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
19.5,
|
||||
36.0
|
||||
],
|
||||
[
|
||||
24.4516191451179,
|
||||
36.0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.three_point",
|
||||
"params": {
|
||||
"start": [
|
||||
24.4516191451179,
|
||||
36.0
|
||||
],
|
||||
"end": [
|
||||
25.20742568340403,
|
||||
38.79566835134765
|
||||
],
|
||||
"through": [
|
||||
25.89963546529897,
|
||||
37.10853003117829
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
25.20742568340403,
|
||||
38.79566835134765
|
||||
],
|
||||
[
|
||||
20.25580653828613,
|
||||
41.68411285266642
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.three_point",
|
||||
"params": {
|
||||
"start": [
|
||||
20.25580653828613,
|
||||
41.68411285266642
|
||||
],
|
||||
"end": [
|
||||
18.0,
|
||||
40.38844450131877
|
||||
],
|
||||
"through": [
|
||||
18.75290891031588,
|
||||
41.68915773017231
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
18.0,
|
||||
40.38844450131877
|
||||
],
|
||||
[
|
||||
18.0,
|
||||
37.5
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Handle_lower_rib_X-8",
|
||||
"distance": 4,
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"NATIVE_CAP_BODY"
|
||||
],
|
||||
"name": "Handle_lower_rib_X-8_R1p5_thickness4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"name": "Handle_lower_rib_X4",
|
||||
"plane": {
|
||||
"origin": [
|
||||
4,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.three_point",
|
||||
"params": {
|
||||
"start": [
|
||||
18.0,
|
||||
37.5
|
||||
],
|
||||
"end": [
|
||||
19.5,
|
||||
36.0
|
||||
],
|
||||
"through": [
|
||||
18.439339828220177,
|
||||
36.43933982822018
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
19.5,
|
||||
36.0
|
||||
],
|
||||
[
|
||||
24.4516191451179,
|
||||
36.0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.three_point",
|
||||
"params": {
|
||||
"start": [
|
||||
24.4516191451179,
|
||||
36.0
|
||||
],
|
||||
"end": [
|
||||
25.20742568340403,
|
||||
38.79566835134765
|
||||
],
|
||||
"through": [
|
||||
25.89963546529897,
|
||||
37.10853003117829
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
25.20742568340403,
|
||||
38.79566835134765
|
||||
],
|
||||
[
|
||||
20.25580653828613,
|
||||
41.68411285266642
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.three_point",
|
||||
"params": {
|
||||
"start": [
|
||||
20.25580653828613,
|
||||
41.68411285266642
|
||||
],
|
||||
"end": [
|
||||
18.0,
|
||||
40.38844450131877
|
||||
],
|
||||
"through": [
|
||||
18.75290891031588,
|
||||
41.68915773017231
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
18.0,
|
||||
40.38844450131877
|
||||
],
|
||||
[
|
||||
18.0,
|
||||
37.5
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Handle_lower_rib_X4",
|
||||
"distance": 4,
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"NATIVE_CAP_BODY"
|
||||
],
|
||||
"name": "Handle_lower_rib_X4_R1p5_thickness4"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"name": "Handle_root_pad_R3",
|
||||
"plane": {
|
||||
"origin": [
|
||||
0,
|
||||
18,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.rounded",
|
||||
"params": {
|
||||
"p0": [
|
||||
-8,
|
||||
36
|
||||
],
|
||||
"p1": [
|
||||
8,
|
||||
59
|
||||
],
|
||||
"radius": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Handle_root_pad_R3",
|
||||
"distance": 7,
|
||||
"direction": "negative",
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"NATIVE_CAP_BODY"
|
||||
],
|
||||
"name": "Native_root_pad_R3"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,182 @@
|
||||
[
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#661",
|
||||
"why": "truck intersection_curve unwrap in solid.hole at a position on a design only in the reporter's crash folder; no recipe to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#1023",
|
||||
"why": "hole hang shown only in a video and a private design file; no recipe to rebuild"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#1024",
|
||||
"why": "not geometry: Windows heap corruption in the thread unit-test process (dependency/memory bug), and threads are another area (other area: threads)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#1104",
|
||||
"why": "truck intersection_curve unwrap in solid.extrude: needs the reporter's private design or replay (only a crash report), so it can't be rebuilt synthetically"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#1123",
|
||||
"why": "unclean exit in solid.extrude after a slot sketch dragged many times: needs the reporter's private design or replay (only a crash report), so it can't be rebuilt synthetically"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#1147",
|
||||
"why": "perf only, no wrong result: 1,300-body design built over MCP is slow in the engine and the UI (fixed by #1148/#1152/#1154/#1158)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#1337",
|
||||
"why": "extrude 'to object' on an imported STEP bracket: needs the user's STEP file"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#1351",
|
||||
"why": "unclean exit in solid.combine after a mirror of an extruded sketch: needs the reporter's private design or replay (only a crash report), so it can't be rebuilt synthetically"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#1374",
|
||||
"why": "other area: tessellation (STEP import meshing runs out of memory on a private 480-solid file; the mesher's curve division)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#1400",
|
||||
"why": "other area: tessellation (a far-out boundary parameter spikes a face; meshing takes minutes)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#1411",
|
||||
"why": "other area: threads (solid.coil crash, no geometry beyond the command; coil is a helical sweep)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#1597",
|
||||
"why": "not geometry: kernel roadmap and contribution guide"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#1856",
|
||||
"why": "20-tooth lofted helical pinion join is slow: the scripts are only in a downloadable zip (the body gives the join command, not the sketches and lofts); duplicate in spirit of #2992 (case 2992)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#1957",
|
||||
"why": "unclean exit in file.export of a bird-house design: needs the reporter's private design or replay (only a crash report), so it can't be rebuilt synthetically; the STEP-export hang family is case 1985"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2037",
|
||||
"why": "multi-face extrusion preview/OK freeze and failing cut on an imported STEP model: needs the user's STEP file, and a UI/preview responsiveness report"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2038",
|
||||
"why": "other area: threads (second modelled thread on one body; join of two faceted threaded bodies)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2451",
|
||||
"why": "other area: threads (solid.thread unclean exit)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2467",
|
||||
"why": "not geometry: renaming a body recomputes the features after it on the window thread (perf/UI only, no wrong result)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2470",
|
||||
"why": "other area: threads (solid.thread stack overflow on a modelled thread)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2508",
|
||||
"why": "other area: tessellation (bound on runaway closing polylines in the mesher); the STEP export hang itself is case 1985"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2552",
|
||||
"why": "other area: threads (solid.coil crash, helical sweep cut; no backtrace)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2570",
|
||||
"why": "loft freeze from a design with an arc profile and a non-convex polyline profile that the report does not give; the web build only"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2796",
|
||||
"why": "other area: threads (solid.thread unclean exit)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2891",
|
||||
"why": "other area: sweeps (twisted sweep cut through a tube freezes)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#2974",
|
||||
"why": "perf only, no wrong result: a counterbored hole pattern is ~8x slower with a joined cylinder elsewhere; results already match hand calculation"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3066",
|
||||
"why": "unclean exit in solid.extrude with a parametric sketch (nozL): needs the reporter's private design or replay (only a crash report), so it can't be rebuilt synthetically"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3085",
|
||||
"why": "fillet/chamfer crash after combine with an imported STEP body: needs the user's STEP file (and edge selection is UI)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3088",
|
||||
"why": "other area: threads (solid.coil join crash, no backtrace)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3207",
|
||||
"why": "perf only: faster slow unit tests (clearance, inside_index, fill reference), same answers"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3368",
|
||||
"why": "other area: threads (finely faceted booleans, repro is a modelled-thread join; thread cases cover it)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3386",
|
||||
"why": "other area: threads (solid.thread unclean exit)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3410",
|
||||
"why": "other area: threads (faceted-boolean stack overflow on a modelled thread, #2470)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3430",
|
||||
"why": "not a kernel operation: unclean exit at startup in the graphics surface configure on macOS"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3473",
|
||||
"why": "unclean exit in a 16-fold circular pattern of a cylinder cut driven by parameters: the recipe is only in an attached replay.json, and the issue gives no dimensions"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3695",
|
||||
"why": "other area: sweeps (twisted sweep cut through a tube, bounded intersection work)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3731",
|
||||
"why": "perf only, no wrong result: joins onto drafted walls are 20-100x slower than onto vertical ones (results are correct apart from a 4e-4 mm retry displacement); the 67-flute design takes tens of minutes and a one-line recipe can't pin it"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3737",
|
||||
"why": "not geometry: UI highlight work on the main thread while orbiting an imported model (edge highlight)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3745",
|
||||
"why": "not geometry: hover highlight of a large thread freezes the UI (fixed by #3766/#3818)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3818",
|
||||
"why": "not geometry: hover highlight of a helical edge (mesh tangent chain), UI freeze fixed, same results"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3892",
|
||||
"why": "not geometry: browser tree frame time on a large nested STEP assembly (UI)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3897",
|
||||
"why": "other area: sweeps (ring profile swept along a short arc with Join freezes)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#3962",
|
||||
"why": "unclean exit in solid.combine cut on macOS: needs the reporter's private design or replay (only a crash report), so it can't be rebuilt synthetically"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4031",
|
||||
"why": "spade CDT assertion in solid.extrude of a face with Join: needs the reporter's private design or replay (only a crash report), so it can't be rebuilt synthetically (no geometry given)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4102",
|
||||
"why": "booleans on a FreeCAD-exported STEP are ~15x slower: needs the 104 KB FreeCAD STEP file (written by another CAD, can't be rebuilt by hand), results are correct (perf only)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4149",
|
||||
"why": "other area: threads (solid.thread stack overflow on an internal M10x1.5 modelled thread)"
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user