mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-03 02:25:55 +00:00
kernel-cases: booleans from #2564-#2896 (11 cases)
Hand-derived cases for tapered and collinear extrudes, pattern and mirror copies keeping their targets, a cut up to a face, a prism joined to a round-cornered slab, a clip round a small hole, and near-contact joins. 2564, 2583, 2601, 2754, 2755 (pattern, mirror), 2801, 2810, 2826, 2580, 2896 (overlap) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+15
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#2564",
|
||||
"tangency-labs/solidcraft#1949"
|
||||
],
|
||||
"what": "an extrude of an outline whose bottom side is drawn as two collinear pieces that wrap past the loop's first segment ((10,0)->(20,0) ... (0,0)->(10,0)): the bottom is one face",
|
||||
"source": "analytic",
|
||||
"method": "outline (10,0),(20,0),(20,10),(0,10),(0,0) is the rectangle 20x10 extruded 5: V = 200*5 = 1000, area = 2*200 + 60*5 = 700. Faces: 4 sides (the bottom one joined from its two pieces) + top + bottom = 6, edges 12, vertices 8",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 1000.0,
|
||||
"area_mm2": 700.0,
|
||||
"faces": 6,
|
||||
"edges": 12,
|
||||
"vertices": 8
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
10,
|
||||
0
|
||||
],
|
||||
[
|
||||
20,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
20,
|
||||
0
|
||||
],
|
||||
[
|
||||
20,
|
||||
10
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
20,
|
||||
10
|
||||
],
|
||||
[
|
||||
0,
|
||||
10
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
10
|
||||
],
|
||||
[
|
||||
0,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
10,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"distance": 5,
|
||||
"operation": "new"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#2580",
|
||||
"tangency-labs/solidcraft#2579"
|
||||
],
|
||||
"what": "a 16 mm box cut out round a small (r 1.8) hole of a 3 m long, 2 mm plate keeps the hole in both faces",
|
||||
"source": "analytic",
|
||||
"method": "plate 3000x300x2 with ten through holes r1.8, intersected with the 16x16 box centred on the first hole: a 16x16x2 piece with one through hole, V = 16*16*2 - pi*1.8^2*2. Faces: top and bottom (each with the hole), 4 sides, hole wall = 7",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 491.6424796047381,
|
||||
"faces": 7
|
||||
}
|
||||
@@ -0,0 +1,190 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 3000,
|
||||
"width": 300,
|
||||
"height": 2,
|
||||
"body_name": "Plate"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 1.8,
|
||||
"height": 6,
|
||||
"base": [
|
||||
150,
|
||||
150,
|
||||
-2
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Plate"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 1.8,
|
||||
"height": 6,
|
||||
"base": [
|
||||
450,
|
||||
150,
|
||||
-2
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Plate"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 1.8,
|
||||
"height": 6,
|
||||
"base": [
|
||||
750,
|
||||
150,
|
||||
-2
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Plate"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 1.8,
|
||||
"height": 6,
|
||||
"base": [
|
||||
1050,
|
||||
150,
|
||||
-2
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Plate"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 1.8,
|
||||
"height": 6,
|
||||
"base": [
|
||||
1350,
|
||||
150,
|
||||
-2
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Plate"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 1.8,
|
||||
"height": 6,
|
||||
"base": [
|
||||
1650,
|
||||
150,
|
||||
-2
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Plate"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 1.8,
|
||||
"height": 6,
|
||||
"base": [
|
||||
1950,
|
||||
150,
|
||||
-2
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Plate"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 1.8,
|
||||
"height": 6,
|
||||
"base": [
|
||||
2250,
|
||||
150,
|
||||
-2
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Plate"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 1.8,
|
||||
"height": 6,
|
||||
"base": [
|
||||
2550,
|
||||
150,
|
||||
-2
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Plate"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 1.8,
|
||||
"height": 6,
|
||||
"base": [
|
||||
2850,
|
||||
150,
|
||||
-2
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Plate"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 16,
|
||||
"width": 16,
|
||||
"height": 10,
|
||||
"center": [
|
||||
150,
|
||||
150,
|
||||
1
|
||||
],
|
||||
"operation": "intersect",
|
||||
"targets": [
|
||||
"Plate"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#2583"
|
||||
],
|
||||
"what": "a tapered extrude of a 20x10 rectangle whose bottom side is drawn as two collinear pieces: the sloped side is one face",
|
||||
"source": "analytic",
|
||||
"method": "sections are (20+2d)x(10+2d) with d = z*tan5deg (positive taper grows outward); V = Int (200 + 60d + 4d^2) dz over z in 0..10 = 200*10 + 30*tan5*100 + 4*tan5^2*1000/3 = 2272.672. Four side faces, top and bottom = 6 (not 7)",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 2272.671678905175,
|
||||
"faces": 6
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
10,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
10,
|
||||
0
|
||||
],
|
||||
[
|
||||
20,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
20,
|
||||
0
|
||||
],
|
||||
[
|
||||
20,
|
||||
10
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
20,
|
||||
10
|
||||
],
|
||||
[
|
||||
0,
|
||||
10
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
10
|
||||
],
|
||||
[
|
||||
0,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"distance": 10,
|
||||
"taper": "5 deg",
|
||||
"operation": "new"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#2601"
|
||||
],
|
||||
"what": "a tapered extrude whose start is offset along the sketch normal (the app says: not supported yet: taper with two-sided, symmetric or offset extents)",
|
||||
"source": "analytic",
|
||||
"method": "the profile 20x10 is moved to z=-8 and extruded 8 along +z, so the solid spans z -8..0, tapered from the offset plane; positive taper grows outward: sections (20+2d)x(10+2d), d = t*tan5deg, t = 0..8 from the offset plane; V = Int (200 + 60d + 4d^2) dt = 200*8 + 30*tan5*64 + 4*tan5^2*512/3 = 1773.204. Faces 6. Sign of the offset and taper reading is from the command docs",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 1773.2035463934044,
|
||||
"faces": 6
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
20,
|
||||
10
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"distance": 8,
|
||||
"start_offset": -8,
|
||||
"taper": "5 deg",
|
||||
"operation": "new"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#2754"
|
||||
],
|
||||
"what": "a tapered extrude of a profile in which an arc meets a line at a corner (a half disc)",
|
||||
"source": "analytic",
|
||||
"method": "positive taper grows the profile outward (as tests/oracle/05): at height z, d = z*tan3deg, the half disc R20 becomes the arc R'=20+d and the line moves to y=-d; area(z) = Int from y=-d to R' of 2*sqrt(R'^2-y^2) dy = R'^2*(pi/2+asin(d/R')) + d*sqrt(R'^2-d^2). V = Int area dz over z in 0..10 (Simpson) = 6555.91. Faces: top, bottom, flat wall, conical wall",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 6555.908038909024,
|
||||
"faces": 4
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-20,
|
||||
0
|
||||
],
|
||||
[
|
||||
20,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.center_point",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"start": [
|
||||
20,
|
||||
0
|
||||
],
|
||||
"end": [
|
||||
-20,
|
||||
0
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"distance": 10,
|
||||
"taper": "3 deg",
|
||||
"operation": "new"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#2755"
|
||||
],
|
||||
"what": "the mirror copy of a primitive cut changes only the seed's targets, not a body the seed was told to leave alone",
|
||||
"source": "analytic",
|
||||
"method": "Plaque loses two through holes r3 (seed at x=10, its mirror in x=50 at x=90, both inside the plate). Voisin (60000) and Loin (1000) are not targets and stay whole. Total = 121000 - 2*pi*3^2*10",
|
||||
"body_count": 3,
|
||||
"volume_mm3": 120434.51332235384
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 100,
|
||||
"width": 60,
|
||||
"height": 10,
|
||||
"body_name": "Plaque"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 100,
|
||||
"width": 60,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
0,
|
||||
0,
|
||||
5
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "Voisin"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 10,
|
||||
"width": 10,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
200,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "Loin"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 3,
|
||||
"height": 30,
|
||||
"base": [
|
||||
10,
|
||||
10,
|
||||
-5
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Plaque"
|
||||
],
|
||||
"name": "Trou"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.mirror",
|
||||
"params": {
|
||||
"features": [
|
||||
"Trou"
|
||||
],
|
||||
"plane": {
|
||||
"origin": [
|
||||
50,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"normal": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#2755"
|
||||
],
|
||||
"what": "copies of a primitive cut made with a rectangular pattern change only the seed's targets, not a body the seed was told to leave alone",
|
||||
"source": "analytic",
|
||||
"method": "Plaque 100x60x10 loses three through holes r3 (seed at x=10, copies at 40 and 70, all inside the plate): 60000 - 3*pi*3^2*10. Voisin (z 5..15, overlapping the plate) and Loin are not targets, so they stay whole: 60000 and 1000. Total = 121000 - 3*pi*90",
|
||||
"body_count": 3,
|
||||
"volume_mm3": 120151.76998353076
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 100,
|
||||
"width": 60,
|
||||
"height": 10,
|
||||
"body_name": "Plaque"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 100,
|
||||
"width": 60,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
0,
|
||||
0,
|
||||
5
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "Voisin"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 10,
|
||||
"width": 10,
|
||||
"height": 10,
|
||||
"corner": [
|
||||
200,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "Loin"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 3,
|
||||
"height": 30,
|
||||
"base": [
|
||||
10,
|
||||
10,
|
||||
-5
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Plaque"
|
||||
],
|
||||
"name": "Trou"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.pattern.rectangular",
|
||||
"params": {
|
||||
"features": [
|
||||
"Trou"
|
||||
],
|
||||
"dir1": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"count1": 3,
|
||||
"spacing1": 30
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#2801"
|
||||
],
|
||||
"what": "a join of a triangular prism and a thin slab with rounded corners (r 4.9) that share their bottom plane, the prism's edge in that plane lying in the slab's end face",
|
||||
"source": "analytic",
|
||||
"method": "prism: triangle (y,z) = (-63,0), (-3,0), (-63,60) extruded 1.2 along x (x 4.4..5.6): 1.2*0.5*60*60 = 2160. slab: rounded rectangle 10x64 (y -67..-3), r 4.9, 0.4 thick: 0.4*(640-(4-pi)*4.9^2). The prism's sloped face is z = -3-y, so at height z it reaches y = -3-z; overlap = Int over z in 0..0.4 of the area of {x in 4.4..5.6, -63 <= y <= -3-z} inside the slab (the corner arcs, centres (4.9,-7.9) and (5.1,-7.9), narrow it for y > -7.9), integrated numerically with Simpson = 28.704. Union = prism + slab - overlap",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 2379.051921236255
|
||||
}
|
||||
+110
@@ -0,0 +1,110 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "YZ"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-63,
|
||||
0
|
||||
],
|
||||
[
|
||||
-3,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-3,
|
||||
0
|
||||
],
|
||||
[
|
||||
-63,
|
||||
60
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-63,
|
||||
60
|
||||
],
|
||||
[
|
||||
-63,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"distance": 1.2,
|
||||
"start_offset": 4.4,
|
||||
"operation": "new",
|
||||
"body_name": "Prism"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.rounded",
|
||||
"params": {
|
||||
"p0": [
|
||||
0,
|
||||
-67
|
||||
],
|
||||
"p1": [
|
||||
10,
|
||||
-3
|
||||
],
|
||||
"radius": 4.9
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"distance": 0.4,
|
||||
"operation": "new",
|
||||
"body_name": "Slab"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.combine",
|
||||
"params": {
|
||||
"target": "Prism",
|
||||
"tools": [
|
||||
"Slab"
|
||||
],
|
||||
"operation": "join"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#2810",
|
||||
"tangency-labs/solidcraft#2813"
|
||||
],
|
||||
"what": "a tapered extrude of a loop of arcs on three circles meeting at sharp corners (a circle with a lobe on each side); the walls must meet at the corners",
|
||||
"source": "analytic",
|
||||
"method": "the section at depth z is the profile offset inward by z*tan45 = z: the union of the circle R 49.2 -> 49.2-z (centre 0) and two lobes r 16.2 -> 16.2-z (centres +-41). Area(z) = pi*R'^2 + 2*(pi*r'^2 - lens(R', r', d=41)) with the circle-circle lens in closed form; V = Int Area(z) dz over z in 0..2.5 (Simpson) = 18907.67. Faces: top, bottom, 4 walls",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 18907.67402576133,
|
||||
"faces": 6
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Pocket"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.center_point",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"start": [
|
||||
46.819512,
|
||||
15.11864
|
||||
],
|
||||
"end": [
|
||||
-46.819512,
|
||||
15.11864
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.center_point",
|
||||
"params": {
|
||||
"center": [
|
||||
-41.0,
|
||||
0
|
||||
],
|
||||
"start": [
|
||||
-46.819512,
|
||||
15.11864
|
||||
],
|
||||
"end": [
|
||||
-46.819512,
|
||||
-15.11864
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.center_point",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"start": [
|
||||
-46.819512,
|
||||
-15.11864
|
||||
],
|
||||
"end": [
|
||||
46.819512,
|
||||
-15.11864
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.center_point",
|
||||
"params": {
|
||||
"center": [
|
||||
41.0,
|
||||
0
|
||||
],
|
||||
"start": [
|
||||
46.819512,
|
||||
-15.11864
|
||||
],
|
||||
"end": [
|
||||
46.819512,
|
||||
15.11864
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Pocket",
|
||||
"distance": 2.5,
|
||||
"direction": "negative",
|
||||
"taper": "-45 deg",
|
||||
"operation": "new"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#2826",
|
||||
"tangency-labs/solidcraft#2827"
|
||||
],
|
||||
"what": "a cut that ends exactly in a face of its target (the plate's top face) must open the hole, not leave a zero-thickness skin over it",
|
||||
"source": "analytic",
|
||||
"method": "plate 40x40x2.8 minus the barrel r6 x 1.6 from below minus the hole r3.04 x 1.2 from the barrel floor (z 1.6) to the top face (z 2.8): V = 4480 - pi*36*1.6 - pi*3.04^2*1.2. Faces: bottom (with the barrel opening), top (with the hole), 4 sides, barrel wall, barrel floor (annulus), hole wall = 9; a skin would add a 10th",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 4264.204251952329,
|
||||
"faces": 9
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 40,
|
||||
"height": 2.8,
|
||||
"corner": [
|
||||
-20,
|
||||
-20,
|
||||
0
|
||||
],
|
||||
"body_name": "Plate"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 6,
|
||||
"height": 1.6,
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Plate"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 3.04,
|
||||
"height": 1.2,
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
1.6
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Plate"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#2896"
|
||||
],
|
||||
"what": "a join of a ring (R30/R24, 6 tall) and an arm with a convex R5 end whose tip runs 0.1 mm into the ring's outer wall (curved faces that nearly graze)",
|
||||
"source": "analytic",
|
||||
"method": "ring pi*(30^2-24^2)*6; arm = box 35x10x6 plus the half disc r5 at its end, 6*(350+12.5*pi); the arm's end circle (centre x=34.9, r5) meets the ring's outer circle R30 in a lens of area 0.1232 (closed-form circle-circle lens), so the overlap is 0.739 mm^3 and V = ring + arm - overlap = 8442.14. The overlap is real material, so one fused body",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 8442.136556424508
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 30,
|
||||
"height": 6,
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"body_name": "Ring"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 24,
|
||||
"height": 6,
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Ring"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 35,
|
||||
"width": 10,
|
||||
"height": 6,
|
||||
"corner": [
|
||||
34.9,
|
||||
-5,
|
||||
0
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "Arm"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 5,
|
||||
"height": 6,
|
||||
"base": [
|
||||
34.9,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"Arm"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.combine",
|
||||
"params": {
|
||||
"target": "Ring",
|
||||
"tools": [
|
||||
"Arm"
|
||||
],
|
||||
"operation": "join"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user