mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-03 10:35:58 +00:00
kernel-cases: sheet-metal cut-out, flange and refusal cases from #296, #1095, #1280, #1295, #1311, #1979, #3078, #3234, #3324, #3353
Cut-outs folded and refolded, a hole square to a 45 degree flange, a slot that parts a flange from its base, an inside flange on a plate turned 62 degrees, cuts after cuts, a hole beside two adjacent flanges and a flange on a flange's side edge; refusals for a flange on a bend line and a flat pattern after a fillet; a mirrored sheet body that must stay sheet metal. Volumes by hand (K = 0.5 folds: flat area * t; otherwise bend volumes). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
+10
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#1095"
|
||||
],
|
||||
"what": "a flange unfolded, a triangular cut-out with a corner on the sheet's own edge at the middle of the bend zone, refolded: sew failed (this wire is not simple)",
|
||||
"source": "analytic",
|
||||
"method": "T = 2, R = 2, K = 0.5. Flat area: base 100 x (60 - 4) + bend 100*BA with BA = (pi/2)(2 + 1) + flange straight 100*(20 - 4) = 7671.2389; the triangle (0, yc), (3, yc-1), (3, yc+1) has area 3 and lies inside it. K = 0.5, so the folded volume is the flat area times t: V = 2*(7671.2389 - 3)",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 15336.477796076937
|
||||
}
|
||||
+112
@@ -0,0 +1,112 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sheet.manage_rules",
|
||||
"params": {
|
||||
"name": "Rule",
|
||||
"thickness": "2 mm",
|
||||
"active": true,
|
||||
"bend_radius": "2 mm",
|
||||
"k_factor": 0.5
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Plate"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
100,
|
||||
60
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "base",
|
||||
"sketch": "Plate"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "edge",
|
||||
"edges": [
|
||||
[
|
||||
50,
|
||||
60,
|
||||
2
|
||||
]
|
||||
],
|
||||
"height": 20,
|
||||
"angle": 90
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.unfold",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Cutout"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
58.356194
|
||||
],
|
||||
[
|
||||
3,
|
||||
57.356194
|
||||
],
|
||||
[
|
||||
3,
|
||||
59.356194
|
||||
]
|
||||
],
|
||||
"closed": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Cutout",
|
||||
"through_all": true,
|
||||
"direction": "symmetric",
|
||||
"operation": "cut"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.refold",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "inspect.measure",
|
||||
"params": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#1280"
|
||||
],
|
||||
"what": "a 5 mm hole drilled square to the face of a 45 degree flange: the drill cap's certificate refused it by 1e-11 mm",
|
||||
"source": "analytic",
|
||||
"method": "T = 2.5, R = 2.5, K = 0.44, 100 x 60 base and a 15 mm flange at 45 degrees, setback s = 5*tan(22.5 deg) = 2.0711: V45 = 100*(60 - s)*2.5 + 100*(15 - s)*2.5 + (pi/4)(25 - 6.25)*100/2 = 18450.78; the hole removes pi*2.5^2*2.5 = 49.087 of the flange: V = V45 - 15.625*pi",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 18401.68948704003
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sheet.manage_rules",
|
||||
"params": {
|
||||
"name": "Steel (mm)",
|
||||
"thickness": "2.5 mm",
|
||||
"active": true,
|
||||
"bend_radius": "2.5 mm",
|
||||
"k_factor": 0.44
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
100,
|
||||
60
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "base",
|
||||
"sketch": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
50,
|
||||
0,
|
||||
2.5
|
||||
]
|
||||
],
|
||||
"height": 15,
|
||||
"angle": 45
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.hole",
|
||||
"params": {
|
||||
"position": [
|
||||
50,
|
||||
-5.656854,
|
||||
5.656854
|
||||
],
|
||||
"diameter": 5
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "inspect.measure",
|
||||
"params": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#1295",
|
||||
"tangency-labs/solidcraft#1338"
|
||||
],
|
||||
"what": "a 100 x 60 sheet with a 45 degree 40 mm flange and a slot cut across the flange just past its bend: the rest of the flange keeps no material joining it to the base",
|
||||
"source": "analytic",
|
||||
"method": "T = 2.5, R = 2.5, setback s = (R+T)tan(22.5 deg) = 2.0711: base 100*(60 - s)*2.5, leg 100*(40 - s)*2.5, bend (pi/4)((R+T)^2 - R^2)*100/2; V0 = 24700.7. The slot (110 x 1.5 drawn, 100 x 1.5 over the sheet) lies in the flat flange panel past the bend zone and removes 100*1.5*2.5 = 375. A cut keeps every piece of material it leaves, so the rest of the flange stays in the body as a shell of its own: V = V0 - 375 (valid is false because the body then has two shells)",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 24325.77687225237,
|
||||
"valid": false
|
||||
}
|
||||
+102
@@ -0,0 +1,102 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sheet.manage_rules",
|
||||
"params": {
|
||||
"name": "Steel (mm)",
|
||||
"thickness": "2.5 mm",
|
||||
"active": true,
|
||||
"bend_radius": "2.5 mm",
|
||||
"k_factor": 0.44
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
100,
|
||||
60
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "base",
|
||||
"sketch": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
50,
|
||||
0,
|
||||
2.5
|
||||
]
|
||||
],
|
||||
"height": 40,
|
||||
"angle": 45
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"face": [
|
||||
50,
|
||||
-11.4645,
|
||||
15
|
||||
]
|
||||
},
|
||||
"name": "Slot"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
-5,
|
||||
-3
|
||||
],
|
||||
"p1": [
|
||||
105,
|
||||
-1.5
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Slot",
|
||||
"through_all": true,
|
||||
"direction": "negative",
|
||||
"operation": "cut"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "inspect.measure",
|
||||
"params": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#1311"
|
||||
],
|
||||
"what": "a 100 x 60 plate turned 62 degrees about the origin with a 90 degree inside flange on one edge: the trimmed corner falls on the sew grid and the flange failed to close",
|
||||
"source": "analytic",
|
||||
"method": "T = 2, R = 1, K = 0.5, setback R + T = 3. Plate 100 x 57 x 2 after the setback = 11400; the bend is a quarter annulus of radii 1 and 3 over 100 mm = (pi/4)(9 - 1)*100*... = (pi/2)(9-1)*100/2 = 628.319; the leg 20 - 3 = 17 long: 17*2*100 = 3400. V = 11400 + 628.319 + 3400",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 15428.31853071796
|
||||
}
|
||||
+77
@@ -0,0 +1,77 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sheet.manage_rules",
|
||||
"params": {
|
||||
"name": "Steel 2",
|
||||
"thickness": "2 mm",
|
||||
"active": true,
|
||||
"bend_radius": "1 mm",
|
||||
"k_factor": 0.5
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Plate"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
[
|
||||
46.947156279,
|
||||
88.294759286
|
||||
],
|
||||
[
|
||||
-6.029699293,
|
||||
116.463053053
|
||||
],
|
||||
[
|
||||
-52.976855572,
|
||||
28.168293767
|
||||
]
|
||||
],
|
||||
"closed": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "base",
|
||||
"sketch": "Plate"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "edge",
|
||||
"edges": [
|
||||
[
|
||||
23.473578139,
|
||||
44.147379643,
|
||||
2
|
||||
]
|
||||
],
|
||||
"height": 20,
|
||||
"angle": 90,
|
||||
"radius": 1,
|
||||
"position": "inside"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "inspect.measure",
|
||||
"params": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#1979",
|
||||
"tangency-labs/solidcraft#1980"
|
||||
],
|
||||
"what": "on a folded sheet a rectangular cut-out and then twenty 4 mm holes in one sketch: a cut after a cut was dropped without a word, and many holes ran out of budget",
|
||||
"source": "analytic",
|
||||
"method": "T = 2, R = 2: base 60 x 36 + flange straight 16, 60 wide, bend (pi/2)(16-4)*60/2 = 565.487: V0 = 60*2*(36 + 16) + 565.487. Cuts through the flat base, clear of each other and of the bend: a 7 x 6 rectangle (42 mm2) and twenty holes of radius 2 (20*pi*4 mm2), each removing area*2. V = V0 - 2*(42 + 80*pi)",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 6218.831853071796
|
||||
}
|
||||
+316
@@ -0,0 +1,316 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sheet.manage_rules",
|
||||
"params": {
|
||||
"name": "S",
|
||||
"thickness": "2 mm",
|
||||
"active": true,
|
||||
"bend_radius": "2 mm",
|
||||
"k_factor": 0.4
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
60,
|
||||
40
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "base",
|
||||
"sketch": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "edge",
|
||||
"edges": [
|
||||
[
|
||||
30,
|
||||
0,
|
||||
2
|
||||
]
|
||||
],
|
||||
"height": 20
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Slot"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
50,
|
||||
14
|
||||
],
|
||||
"p1": [
|
||||
57,
|
||||
20
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Slot",
|
||||
"through_all": true,
|
||||
"direction": "symmetric",
|
||||
"operation": "cut"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Holes"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
8,
|
||||
10
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
8,
|
||||
18
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
8,
|
||||
26
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
8,
|
||||
34
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
17,
|
||||
10
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
17,
|
||||
18
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
17,
|
||||
26
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
17,
|
||||
34
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
26,
|
||||
10
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
26,
|
||||
18
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
26,
|
||||
26
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
26,
|
||||
34
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
35,
|
||||
10
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
35,
|
||||
18
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
35,
|
||||
26
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
35,
|
||||
34
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
44,
|
||||
10
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
44,
|
||||
18
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
44,
|
||||
26
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
44,
|
||||
34
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Holes",
|
||||
"through_all": true,
|
||||
"direction": "symmetric",
|
||||
"operation": "cut"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "inspect.measure",
|
||||
"params": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#296",
|
||||
"tangency-labs/solidcraft#355"
|
||||
],
|
||||
"what": "an 80 x 40 base with a 30 mm flange on the y = 0 edge and a 15 mm flange on the x = 80 edge, and a round hole through the base beside them: sew failed with a non-manifold edge contact",
|
||||
"source": "invariants",
|
||||
"method": "the hole is cut straight through the flat base, clear of both bends and of the corner, so it must give one valid closed body; the corner geometry of two adjacent flanges has no simple closed form, so no volume is graded",
|
||||
"body_count": 1
|
||||
}
|
||||
+107
@@ -0,0 +1,107 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sheet.manage_rules",
|
||||
"params": {
|
||||
"name": "S",
|
||||
"thickness": "2 mm",
|
||||
"active": true,
|
||||
"bend_radius": "2 mm",
|
||||
"k_factor": 0.4
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
80,
|
||||
40
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "base",
|
||||
"sketch": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "edge",
|
||||
"edges": [
|
||||
[
|
||||
40,
|
||||
0,
|
||||
2
|
||||
]
|
||||
],
|
||||
"height": 30
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "edge",
|
||||
"edges": [
|
||||
[
|
||||
80,
|
||||
20,
|
||||
2
|
||||
]
|
||||
],
|
||||
"height": 15
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Hole"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
25,
|
||||
20
|
||||
],
|
||||
"radius": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Hole",
|
||||
"through_all": true,
|
||||
"direction": "symmetric",
|
||||
"operation": "cut"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "inspect.measure",
|
||||
"params": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#3078",
|
||||
"tangency-labs/solidcraft#3274"
|
||||
],
|
||||
"what": "an edge flange on the side edge of an existing wall, meeting a flange on the base across the existing bend with a round corner relief (not supported yet: a flange on the side of another flange)",
|
||||
"source": "invariants",
|
||||
"method": "one valid closed body: a 120 x 90 base with a 30 mm wall on its y = 0 edge and a 20 mm flange on its x = 120 edge, plus a flange on the wall's side edge (x = 120) that mitres with it. The outer faces stand on the base's outline and the tallest wall is 30 high, so the bounding box is 120 x 90 x 30 (x 0..120, y 0..90, z 0..30)",
|
||||
"body_count": 1,
|
||||
"bbox": {
|
||||
"min": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"max": [
|
||||
120,
|
||||
90,
|
||||
30
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sheet.manage_rules",
|
||||
"params": {
|
||||
"name": "Sheet 2 mm",
|
||||
"thickness": "2 mm",
|
||||
"active": true,
|
||||
"bend_radius": "1 mm",
|
||||
"k_factor": 0.5,
|
||||
"gap": "0.5 mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
120,
|
||||
90
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "base",
|
||||
"sketch": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
60,
|
||||
0,
|
||||
2
|
||||
]
|
||||
],
|
||||
"height": "30 mm",
|
||||
"angle": "90 deg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
120,
|
||||
45,
|
||||
2
|
||||
],
|
||||
[
|
||||
120,
|
||||
2,
|
||||
16.5
|
||||
]
|
||||
],
|
||||
"height": "20 mm",
|
||||
"angle": "90 deg",
|
||||
"position": "inside",
|
||||
"corner_relief_shape": "round",
|
||||
"corner_relief": "4 mm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "inspect.measure",
|
||||
"params": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#3234",
|
||||
"tangency-labs/solidcraft#3273"
|
||||
],
|
||||
"what": "a second edge flange picked on the bend line of an existing flange made a doubled flange with a gap and two shells in one body",
|
||||
"source": "invariants",
|
||||
"method": "the base's edge at y = 5 (the setback R + T = 5 from the first flange) is the bend line of the existing flange, not a free edge; a flange there would stand on material the first bend already occupies. The right behaviour is a clean refusal that leaves the sheet unchanged",
|
||||
"outcome": "refused"
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sheet.manage_rules",
|
||||
"params": {
|
||||
"name": "Steel",
|
||||
"thickness": "2.5 mm",
|
||||
"active": true,
|
||||
"bend_radius": "2.5 mm",
|
||||
"k_factor": 0.44
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
100,
|
||||
60
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "base",
|
||||
"sketch": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "edge",
|
||||
"edges": [
|
||||
[
|
||||
50,
|
||||
0,
|
||||
2.5
|
||||
]
|
||||
],
|
||||
"height": 20
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "edge",
|
||||
"edges": [
|
||||
[
|
||||
50,
|
||||
5,
|
||||
2.5
|
||||
]
|
||||
],
|
||||
"height": 10
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#3324",
|
||||
"tangency-labs/solidcraft#3325",
|
||||
"tangency-labs/solidcraft#3418"
|
||||
],
|
||||
"what": "a fillet on a sheet metal corner changes the body but not its sheet model, so the flat pattern would be a sharp rectangle: it must refuse",
|
||||
"source": "invariants",
|
||||
"method": "after Fillet R10 on a corner of a 100 x 60 sheet the body has a round, and a flat pattern written from the sheet model would be the sharp 100 x 60 rectangle, a different part from the design; the right behaviour is a clean refusal naming the feature",
|
||||
"outcome": "refused"
|
||||
}
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sheet.manage_rules",
|
||||
"params": {
|
||||
"name": "S",
|
||||
"thickness": "2 mm",
|
||||
"active": true,
|
||||
"bend_radius": "2 mm",
|
||||
"k_factor": 0.4
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
100,
|
||||
60
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "base",
|
||||
"sketch": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
100,
|
||||
60,
|
||||
1
|
||||
]
|
||||
],
|
||||
"radius": 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flat_pattern",
|
||||
"params": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#3353",
|
||||
"tangency-labs/solidcraft#3354"
|
||||
],
|
||||
"what": "a sheet metal body mirrored into a new body must still be sheet metal (flat pattern, bend table): it was a plain solid",
|
||||
"source": "analytic",
|
||||
"method": "T = 2, R = 2, K = 0.4, setback 4. One body: base 100 x 52, flanges 20 and 15 high (straights 16 and 11), all 100 wide, 2 thick, two bends of (pi/2)(16 - 4)*100/2 = 942.478 each, a 10 mm hole through the base (pi*25*2). V1 = 2*100*(52 + 16 + 11) + 2*942.478 - 50*pi. The mirror copy is congruent: two bodies, total 2*V1. The flat pattern of the copy must exist",
|
||||
"body_count": 2,
|
||||
"volume_mm3": 35055.75191894878
|
||||
}
|
||||
+122
@@ -0,0 +1,122 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sheet.manage_rules",
|
||||
"params": {
|
||||
"name": "S",
|
||||
"thickness": "2 mm",
|
||||
"active": true,
|
||||
"bend_radius": "2 mm",
|
||||
"k_factor": 0.4
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
100,
|
||||
60
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "base",
|
||||
"sketch": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "edge",
|
||||
"edges": [
|
||||
[
|
||||
50,
|
||||
0,
|
||||
2
|
||||
]
|
||||
],
|
||||
"height": 20
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "edge",
|
||||
"edges": [
|
||||
[
|
||||
50,
|
||||
60,
|
||||
2
|
||||
]
|
||||
],
|
||||
"height": 15
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Hole"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
50,
|
||||
30
|
||||
],
|
||||
"radius": 5
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Hole",
|
||||
"through_all": true,
|
||||
"direction": "symmetric",
|
||||
"operation": "cut"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.mirror",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"Body1"
|
||||
],
|
||||
"plane": "YZ"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flat_pattern",
|
||||
"params": {
|
||||
"body": "Body1 (2)"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "inspect.measure",
|
||||
"params": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user