mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-04 19:15:57 +00:00
Kernel rig: perforation cases, square and staggered fields counted hole by hole, a field kept clear of a bend zone, and a pitch refused
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "sheet.perforate, a square field over a 40 x 20 x 1 base with a 10 mm flange on its x = 40 edge: no hole within the margin of the bend zone",
|
||||
"source": "analytic",
|
||||
"method": "T = 1, R = 1, K = 0.5: the flange sets the base back R + T = 2 (flat x 0..38), its bend zone is BA = (pi/2)(R + K*T) = 2.356194 wide (x 38..40.356194), its leg 10 - 2 = 8 (to x 48.356194). 1 mm holes, pitch 4, margin 1 (clear 1.5): rows y 1.5, 5.5, 9.5, 13.5, 17.5 (5); per row x 1.5, 5.5, ..., 45.5 (<= 46.8562) less those within 1.5 of the zone (37.5 and 41.5): 9 on the base, 1 on the flange (45.5): 50 holes",
|
||||
"body_count": 1,
|
||||
"results": [
|
||||
{
|
||||
"step": 8,
|
||||
"json": {
|
||||
"perforations": [
|
||||
{
|
||||
"count": 50,
|
||||
"pattern": "square"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sheet.manage_rules",
|
||||
"params": {
|
||||
"name": "Steel 1",
|
||||
"thickness": "1 mm",
|
||||
"active": true,
|
||||
"bend_radius": "1 mm",
|
||||
"k_factor": 0.5
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
40,
|
||||
20
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "base",
|
||||
"sketch": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "edge",
|
||||
"edges": [
|
||||
[
|
||||
40,
|
||||
10,
|
||||
1
|
||||
]
|
||||
],
|
||||
"height": 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.perforate",
|
||||
"params": {
|
||||
"diameter": "1",
|
||||
"pitch": "4",
|
||||
"margin": "1",
|
||||
"pattern": "square"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flat_pattern",
|
||||
"params": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "sheet.perforate with a pitch equal to the hole's diameter: the holes would touch",
|
||||
"source": "invariants",
|
||||
"method": "holes 2 mm across at a 2 mm pitch leave no web between them; the documented rule is pitch > diameter, so the field is refused",
|
||||
"outcome": "refused",
|
||||
"refusal": "pitch > diameter"
|
||||
}
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sheet.manage_rules",
|
||||
"params": {
|
||||
"name": "Steel 1",
|
||||
"thickness": "1 mm",
|
||||
"active": true,
|
||||
"bend_radius": "1 mm",
|
||||
"k_factor": 0.5
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
30,
|
||||
20
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "base",
|
||||
"sketch": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.perforate",
|
||||
"params": {
|
||||
"diameter": "2",
|
||||
"pitch": "2",
|
||||
"margin": "1"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "sheet.perforate, a square field of 2 mm holes at 5 mm pitch, 1 mm margin, over a 30 x 20 x 1 plate",
|
||||
"source": "analytic",
|
||||
"method": "holes start at margin + radius = 2 from the flat's lower-left corner and step 5: x 2, 7, ..., 27 (6, each <= 30 - 2), y 2, 7, 12, 17 (4): 24 holes, open area 24*pi*1^2. The field is stored, not cut into the B-rep: the body stays the 30 x 20 x 1 plate, V = 600, 6 faces",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 600.0,
|
||||
"faces": 6,
|
||||
"results": [
|
||||
{
|
||||
"step": 7,
|
||||
"json": {
|
||||
"perforations": [
|
||||
{
|
||||
"count": 24,
|
||||
"pattern": "square",
|
||||
"diameter": 2.0,
|
||||
"pitch": 5.0,
|
||||
"margin": 1.0,
|
||||
"open_area_mm2": 75.39822368615503
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sheet.manage_rules",
|
||||
"params": {
|
||||
"name": "Steel 1",
|
||||
"thickness": "1 mm",
|
||||
"active": true,
|
||||
"bend_radius": "1 mm",
|
||||
"k_factor": 0.5
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
30,
|
||||
20
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "base",
|
||||
"sketch": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.perforate",
|
||||
"params": {
|
||||
"diameter": "2",
|
||||
"pitch": "5",
|
||||
"margin": "1",
|
||||
"pattern": "square"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flat_pattern",
|
||||
"params": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"sources": [],
|
||||
"what": "sheet.perforate, a staggered (60 degree) field of 1 mm holes at 3 mm pitch, 1 mm margin, over a 20 x 10 x 1 plate, exported to DXF",
|
||||
"source": "analytic",
|
||||
"method": "clear = radius + margin = 1.5; rows every 3*sqrt(3)/2 = 2.598 from y 1.5: y 1.5, 4.098, 6.696 (9.294 > 8.5); even rows x 1.5, 4.5, ..., 16.5 (6), the odd row shifted 1.5: x 3, ..., 18 (6): 18 holes. In the DXF, 18 circles on layer PERFORATION, length 18*pi*1; the plate's outline 4 lines, 60 long. The B-rep is not cut: V = 200",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 200.0,
|
||||
"faces": 6,
|
||||
"results": [
|
||||
{
|
||||
"step": 7,
|
||||
"json": {
|
||||
"perforations": [
|
||||
{
|
||||
"count": 18,
|
||||
"pattern": "staggered",
|
||||
"open_area_mm2": 14.137166941154069
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"files": [
|
||||
{
|
||||
"path": "flat.dxf",
|
||||
"dxf": {
|
||||
"PERFORATION": {
|
||||
"CIRCLE": 18,
|
||||
"length_mm": 56.548667764616276
|
||||
},
|
||||
"OUTLINE": {
|
||||
"LINE": 4,
|
||||
"length_mm": 60.0
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sheet.manage_rules",
|
||||
"params": {
|
||||
"name": "Steel 1",
|
||||
"thickness": "1 mm",
|
||||
"active": true,
|
||||
"bend_radius": "1 mm",
|
||||
"k_factor": 0.5
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
20,
|
||||
10
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flange",
|
||||
"params": {
|
||||
"type": "base",
|
||||
"sketch": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.perforate",
|
||||
"params": {
|
||||
"diameter": "1",
|
||||
"pitch": "3",
|
||||
"margin": "1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sheet.flat_pattern",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sheet.export_dxf",
|
||||
"params": {
|
||||
"path": "$OUT/flat.dxf"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user