mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-05 19:45:54 +00:00
Folds of tabs and plates, graded by closed form: a fold keeps the blank's flat length, so V = flat area * t + theta * w * t^2 * (1/2 - K). Tabs on one line (#264, #638), a tab on an L's inside edge (#639), a fold just inside a tab root and a refusal at the root (#262), a fixed point on the top face of a large plate (#685). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#262",
|
||||
"tangency-labs/solidcraft#277"
|
||||
],
|
||||
"what": "a 20 x 20 tab folded 90 degrees on a line 1 mm inside its root, where the bend zone stays clear of the blank's outline",
|
||||
"source": "analytic",
|
||||
"method": "blank area 100*50 + 20*20 = 5400 mm2 at t = 0.8; the fold has width 20: a fold keeps the flat length of the blank, so a fold of angle th, inner radius R, thickness t and K-factor K over a width w takes a flat strip of BA = th(R+Kt) and puts a bend of volume th((R+t)^2-R^2)w/2 in its place: V = V_flat + th w t^2 (1/2 - K) (the bend's mid-surface lies at R+t/2, the neutral axis at R+Kt). V = 5400*0.8 + (pi/2)*20*0.64*0.06",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 4321.206371578978
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sheet.manage_rules",
|
||||
"params": {
|
||||
"name": "Steel 0.8",
|
||||
"thickness": "0.8 mm",
|
||||
"active": true,
|
||||
"bend_radius": "0.8 mm",
|
||||
"k_factor": 0.44
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Blank"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
100,
|
||||
0
|
||||
],
|
||||
[
|
||||
100,
|
||||
50
|
||||
],
|
||||
[
|
||||
60,
|
||||
50
|
||||
],
|
||||
[
|
||||
60,
|
||||
70
|
||||
],
|
||||
[
|
||||
40,
|
||||
70
|
||||
],
|
||||
[
|
||||
40,
|
||||
50
|
||||
],
|
||||
[
|
||||
0,
|
||||
50
|
||||
]
|
||||
],
|
||||
"closed": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "base",
|
||||
"sketch": "Blank"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.fold",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
40,
|
||||
51,
|
||||
0.8
|
||||
],
|
||||
[
|
||||
60,
|
||||
51,
|
||||
0.8
|
||||
]
|
||||
],
|
||||
"fixed": [
|
||||
50,
|
||||
25,
|
||||
0.8
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "inspect.measure",
|
||||
"params": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#262",
|
||||
"tangency-labs/solidcraft#277"
|
||||
],
|
||||
"what": "a fold exactly at a tab's root, where the bend zone (+-BA/2) would reach the blank's outline beside the tab, needs a bend relief",
|
||||
"source": "invariants",
|
||||
"method": "the fold line y = 50 is the tab's root: its bend zone reaches the corners (40,50) and (60,50) of the outline, so a clean bend is impossible without a relief that fold does not cut; the right behaviour is a refusal that names the cause, not a panic, a hang or a malformed body (BA/2 = (pi/2)(0.8+0.352)/2 = 0.905 mm)",
|
||||
"outcome": "refused"
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sheet.manage_rules",
|
||||
"params": {
|
||||
"name": "Steel 0.8",
|
||||
"thickness": "0.8 mm",
|
||||
"active": true,
|
||||
"bend_radius": "0.8 mm",
|
||||
"k_factor": 0.44
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Blank"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
100,
|
||||
0
|
||||
],
|
||||
[
|
||||
100,
|
||||
50
|
||||
],
|
||||
[
|
||||
60,
|
||||
50
|
||||
],
|
||||
[
|
||||
60,
|
||||
70
|
||||
],
|
||||
[
|
||||
40,
|
||||
70
|
||||
],
|
||||
[
|
||||
40,
|
||||
50
|
||||
],
|
||||
[
|
||||
0,
|
||||
50
|
||||
]
|
||||
],
|
||||
"closed": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "base",
|
||||
"sketch": "Blank"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.fold",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
40,
|
||||
50,
|
||||
0.8
|
||||
],
|
||||
[
|
||||
60,
|
||||
50,
|
||||
0.8
|
||||
]
|
||||
],
|
||||
"fixed": [
|
||||
50,
|
||||
25,
|
||||
0.8
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#264",
|
||||
"tangency-labs/solidcraft#279"
|
||||
],
|
||||
"what": "a 100 x 40 blank with two 15 x 7 tabs on one line, one tab folded 90 degrees on a line that the other tab also lies on",
|
||||
"source": "analytic",
|
||||
"method": "blank area 100*40 + 2*15*7 = 4210 mm2 at t = 0.8; the one fold (width 7, R = t = 0.8, K = 0.44): a fold keeps the flat length of the blank, so a fold of angle th, inner radius R, thickness t and K-factor K over a width w takes a flat strip of BA = th(R+Kt) and puts a bend of volume th((R+t)^2-R^2)w/2 in its place: V = V_flat + th w t^2 (1/2 - K) (the bend's mid-surface lies at R+t/2, the neutral axis at R+Kt). V = 4210*0.8 + (pi/2)*7*0.64*0.06",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 3368.4222300526426
|
||||
}
|
||||
@@ -0,0 +1,114 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sheet.manage_rules",
|
||||
"params": {
|
||||
"name": "Steel 0.8",
|
||||
"thickness": "0.8 mm",
|
||||
"active": true,
|
||||
"bend_radius": "0.8 mm",
|
||||
"k_factor": 0.44
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Blank"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
100,
|
||||
0
|
||||
],
|
||||
[
|
||||
100,
|
||||
5
|
||||
],
|
||||
[
|
||||
115,
|
||||
5
|
||||
],
|
||||
[
|
||||
115,
|
||||
12
|
||||
],
|
||||
[
|
||||
100,
|
||||
12
|
||||
],
|
||||
[
|
||||
100,
|
||||
28
|
||||
],
|
||||
[
|
||||
115,
|
||||
28
|
||||
],
|
||||
[
|
||||
115,
|
||||
35
|
||||
],
|
||||
[
|
||||
100,
|
||||
35
|
||||
],
|
||||
[
|
||||
100,
|
||||
40
|
||||
],
|
||||
[
|
||||
0,
|
||||
40
|
||||
]
|
||||
],
|
||||
"closed": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "base",
|
||||
"sketch": "Blank"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.fold",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
107,
|
||||
5,
|
||||
0.8
|
||||
],
|
||||
[
|
||||
107,
|
||||
12,
|
||||
0.8
|
||||
]
|
||||
],
|
||||
"fixed": [
|
||||
50,
|
||||
20,
|
||||
0.8
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "inspect.measure",
|
||||
"params": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#264"
|
||||
],
|
||||
"what": "one fold line spanning both of two collinear tabs folds both",
|
||||
"source": "analytic",
|
||||
"method": "blank area 4210 mm2 at t = 0.8; one fold line over both tabs bends both (width 7 each): a fold keeps the flat length of the blank, so a fold of angle th, inner radius R, thickness t and K-factor K over a width w takes a flat strip of BA = th(R+Kt) and puts a bend of volume th((R+t)^2-R^2)w/2 in its place: V = V_flat + th w t^2 (1/2 - K) (the bend's mid-surface lies at R+t/2, the neutral axis at R+Kt). V = 4210*0.8 + 2*(pi/2)*7*0.64*0.06",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 3368.8444601052847
|
||||
}
|
||||
@@ -0,0 +1,114 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sheet.manage_rules",
|
||||
"params": {
|
||||
"name": "Steel 0.8",
|
||||
"thickness": "0.8 mm",
|
||||
"active": true,
|
||||
"bend_radius": "0.8 mm",
|
||||
"k_factor": 0.44
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Blank"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
100,
|
||||
0
|
||||
],
|
||||
[
|
||||
100,
|
||||
5
|
||||
],
|
||||
[
|
||||
115,
|
||||
5
|
||||
],
|
||||
[
|
||||
115,
|
||||
12
|
||||
],
|
||||
[
|
||||
100,
|
||||
12
|
||||
],
|
||||
[
|
||||
100,
|
||||
28
|
||||
],
|
||||
[
|
||||
115,
|
||||
28
|
||||
],
|
||||
[
|
||||
115,
|
||||
35
|
||||
],
|
||||
[
|
||||
100,
|
||||
35
|
||||
],
|
||||
[
|
||||
100,
|
||||
40
|
||||
],
|
||||
[
|
||||
0,
|
||||
40
|
||||
]
|
||||
],
|
||||
"closed": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "base",
|
||||
"sketch": "Blank"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.fold",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
107,
|
||||
5,
|
||||
0.8
|
||||
],
|
||||
[
|
||||
107,
|
||||
35,
|
||||
0.8
|
||||
]
|
||||
],
|
||||
"fixed": [
|
||||
50,
|
||||
20,
|
||||
0.8
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "inspect.measure",
|
||||
"params": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#638",
|
||||
"tangency-labs/solidcraft#652",
|
||||
"tangency-labs/solidcraft#963"
|
||||
],
|
||||
"what": "two collinear tabs folded in two features on the same line; the second fold used to be refused as crossing a slanted edge",
|
||||
"source": "analytic",
|
||||
"method": "blank area 4210 mm2 at t = 0.8, two folds of width 7: a fold keeps the flat length of the blank, so a fold of angle th, inner radius R, thickness t and K-factor K over a width w takes a flat strip of BA = th(R+Kt) and puts a bend of volume th((R+t)^2-R^2)w/2 in its place: V = V_flat + th w t^2 (1/2 - K) (the bend's mid-surface lies at R+t/2, the neutral axis at R+Kt). V = 4210*0.8 + 2*(pi/2)*7*0.64*0.06",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 3368.8444601052847
|
||||
}
|
||||
+136
@@ -0,0 +1,136 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sheet.manage_rules",
|
||||
"params": {
|
||||
"name": "Steel 0.8",
|
||||
"thickness": "0.8 mm",
|
||||
"active": true,
|
||||
"bend_radius": "0.8 mm",
|
||||
"k_factor": 0.44
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Blank"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
100,
|
||||
0
|
||||
],
|
||||
[
|
||||
100,
|
||||
5
|
||||
],
|
||||
[
|
||||
115,
|
||||
5
|
||||
],
|
||||
[
|
||||
115,
|
||||
12
|
||||
],
|
||||
[
|
||||
100,
|
||||
12
|
||||
],
|
||||
[
|
||||
100,
|
||||
28
|
||||
],
|
||||
[
|
||||
115,
|
||||
28
|
||||
],
|
||||
[
|
||||
115,
|
||||
35
|
||||
],
|
||||
[
|
||||
100,
|
||||
35
|
||||
],
|
||||
[
|
||||
100,
|
||||
40
|
||||
],
|
||||
[
|
||||
0,
|
||||
40
|
||||
]
|
||||
],
|
||||
"closed": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "base",
|
||||
"sketch": "Blank"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.fold",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
107,
|
||||
5,
|
||||
0.8
|
||||
],
|
||||
[
|
||||
107,
|
||||
12,
|
||||
0.8
|
||||
]
|
||||
],
|
||||
"fixed": [
|
||||
50,
|
||||
20,
|
||||
0.8
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.fold",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
107,
|
||||
28,
|
||||
0.8
|
||||
],
|
||||
[
|
||||
107,
|
||||
35,
|
||||
0.8
|
||||
]
|
||||
],
|
||||
"fixed": [
|
||||
50,
|
||||
20,
|
||||
0.8
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "inspect.measure",
|
||||
"params": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#639",
|
||||
"tangency-labs/solidcraft#653",
|
||||
"tangency-labs/solidcraft#963"
|
||||
],
|
||||
"what": "a tab (x 45..60, y 60..90) on an inside edge of an L-shaped blank folded 90 degrees at x = 59 with the fixed point on the other leg; refused as folding tabs that join again",
|
||||
"source": "analytic",
|
||||
"method": "blank area by the shoelace formula 7450.0 mm2 at t = 0.8; the fold has width 30 (the tab's height along the line): a fold keeps the flat length of the blank, so a fold of angle th, inner radius R, thickness t and K-factor K over a width w takes a flat strip of BA = th(R+Kt) and puts a bend of volume th((R+t)^2-R^2)w/2 in its place: V = V_flat + th w t^2 (1/2 - K) (the bend's mid-surface lies at R+t/2, the neutral axis at R+Kt). V = 7450.0*0.8 + (pi/2)*30*0.64*0.06",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 5961.809557368468
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sheet.manage_rules",
|
||||
"params": {
|
||||
"name": "Steel 0.8",
|
||||
"thickness": "0.8 mm",
|
||||
"active": true,
|
||||
"bend_radius": "0.8 mm",
|
||||
"k_factor": 0.44
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Blank"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
100,
|
||||
0
|
||||
],
|
||||
[
|
||||
100,
|
||||
100
|
||||
],
|
||||
[
|
||||
60,
|
||||
100
|
||||
],
|
||||
[
|
||||
60,
|
||||
90
|
||||
],
|
||||
[
|
||||
45,
|
||||
90
|
||||
],
|
||||
[
|
||||
45,
|
||||
60
|
||||
],
|
||||
[
|
||||
60,
|
||||
60
|
||||
],
|
||||
[
|
||||
60,
|
||||
50
|
||||
],
|
||||
[
|
||||
0,
|
||||
50
|
||||
]
|
||||
],
|
||||
"closed": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "base",
|
||||
"sketch": "Blank"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.fold",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
59,
|
||||
60,
|
||||
0.8
|
||||
],
|
||||
[
|
||||
59,
|
||||
90,
|
||||
0.8
|
||||
]
|
||||
],
|
||||
"fixed": [
|
||||
40,
|
||||
30,
|
||||
0.8
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "inspect.measure",
|
||||
"params": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#958"
|
||||
],
|
||||
"what": "a large thin blank folded across its whole width with the fixed point exactly on the sheet's top face",
|
||||
"source": "analytic",
|
||||
"method": "465 x 200 x 0.8 plate: V_flat = 74400 mm3; one fold of width 200 across it: a fold keeps the flat length of the blank, so a fold of angle th, inner radius R, thickness t and K-factor K over a width w takes a flat strip of BA = th(R+Kt) and puts a bend of volume th((R+t)^2-R^2)w/2 in its place: V = V_flat + th w t^2 (1/2 - K) (the bend's mid-surface lies at R+t/2, the neutral axis at R+Kt). V = 74400 + (pi/2)*200*0.64*0.06",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 74412.06371578979
|
||||
}
|
||||
+71
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sheet.manage_rules",
|
||||
"params": {
|
||||
"name": "Steel 0.8",
|
||||
"thickness": "0.8 mm",
|
||||
"active": true,
|
||||
"bend_radius": "0.8 mm",
|
||||
"k_factor": 0.44
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
465,
|
||||
200
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "base",
|
||||
"sketch": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.fold",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
300,
|
||||
0,
|
||||
0.8
|
||||
],
|
||||
[
|
||||
300,
|
||||
200,
|
||||
0.8
|
||||
]
|
||||
],
|
||||
"fixed": [
|
||||
100,
|
||||
100,
|
||||
0.8
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "inspect.measure",
|
||||
"params": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user