mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-03 18:45:55 +00:00
kernel-cases: #4830–#5197 triaged: 21 cases, 110 skipped
Cases from the issues filed after #4160, each a synthetic recipe with its own answer (analysis or invariants); every other issue in the range is listed with why it was skipped. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#4877",
|
||||
"tangency-labs/solidcraft#5413"
|
||||
],
|
||||
"what": "a 0.6 mm pocket cut from the top of a tab joined to a disc with a chamfered bottom edge (the join fell back to truck's tool nudge, which lifted the tab's top by 5e-5 mm): the pocket never opened, it left a sealed void under a 0.00005 mm skin",
|
||||
"source": "analytic",
|
||||
"method": "disc r25 h10 less its 1 mm bottom chamfer ring (Pappus: pi*(25-1/3)) plus the tab 20x12x4 less their overlap: Int_0^4 of the tab rectangle's area inside the disc's radius at z (24+z below z = 1, 25 above) (python quadrature); minus the pocket 10x4x0.6 = 24, wholly in the tab outside the disc. One shell: the pocket opens through the tab's top",
|
||||
"body_count": 1,
|
||||
"shells": 1,
|
||||
"volume_mm3": 20403.0482
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"diameter": 50,
|
||||
"height": 10,
|
||||
"body_name": "Disc"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.chamfer",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
25,
|
||||
0,
|
||||
0
|
||||
]
|
||||
],
|
||||
"distance": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 20,
|
||||
"width": 12,
|
||||
"height": 4,
|
||||
"corner": [
|
||||
0,
|
||||
-34,
|
||||
0
|
||||
],
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"Disc"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Pocket",
|
||||
"offset": 4
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
5,
|
||||
-31
|
||||
],
|
||||
"p1": [
|
||||
15,
|
||||
-27
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Pocket",
|
||||
"distance": 0.6,
|
||||
"direction": "negative",
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Disc"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#4879",
|
||||
"tangency-labs/solidcraft#4484"
|
||||
],
|
||||
"what": "a symmetric through-all cut of a window across a thickened (2 mm) surface revolve of a control-point spline (100 deg about X): truck ran ~20 s to 'boolean Cut: no result' (or never finished)",
|
||||
"source": "invariants",
|
||||
"method": "the window (x -2..6, z 6..20, through all y) crosses the shell where it is near the XZ plane and leaves it joined round the rest of its 100 deg, so the result is one valid closed body. The spline shell has no closed-form volume",
|
||||
"body_count": 1
|
||||
}
|
||||
@@ -0,0 +1,138 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"name": "Profile"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.spline.control_point",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-10,
|
||||
8
|
||||
],
|
||||
[
|
||||
-4,
|
||||
12
|
||||
],
|
||||
[
|
||||
2,
|
||||
9
|
||||
],
|
||||
[
|
||||
8,
|
||||
13
|
||||
],
|
||||
[
|
||||
14,
|
||||
10
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "surface.revolve",
|
||||
"params": {
|
||||
"sketch": "Profile",
|
||||
"curves": [
|
||||
"s1"
|
||||
],
|
||||
"axis": "X",
|
||||
"angle": "100 deg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "surface.thicken",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"Body1"
|
||||
],
|
||||
"thickness": "2 mm",
|
||||
"operation": "new"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.remove",
|
||||
"params": {
|
||||
"bodies": [
|
||||
"Body1"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"name": "Window",
|
||||
"project_edges": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
-2,
|
||||
6
|
||||
],
|
||||
"p1": [
|
||||
6,
|
||||
20
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Window",
|
||||
"distance": 10,
|
||||
"direction": "symmetric",
|
||||
"through_all": true,
|
||||
"operation": "cut"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#4927"
|
||||
],
|
||||
"what": "a 5 mm slot cut end to end through one wall of a tube (r 20..30 x 100) whose top rims are chamfered (2.5 outside, 4 inside): the cut hung (moving the chamfers after the cut worked)",
|
||||
"source": "analytic",
|
||||
"method": "tube pi (30^2-20^2) 100 less the chamfer rings (Pappus: 2 pi (30 - 2.5/3) 2.5^2/2 and 2 pi (20 + 4/3) 4^2/2). The slot y -2.3..2.7, x > 0 through all removes Int_0^100 Int_-2.3^2.7 (sqrt(ro^2-y^2) - sqrt(ri^2-y^2)) dy dz, the radii following the chamfers near the top (python quadrature). The C-shaped tube is one body",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 150481.462
|
||||
}
|
||||
@@ -0,0 +1,114 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Tube"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"radius": 30
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"radius": 20
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Tube",
|
||||
"distance": 100,
|
||||
"profiles": [
|
||||
{
|
||||
"point": [
|
||||
25,
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"body_name": "Clamp"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.chamfer",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
30,
|
||||
0,
|
||||
100
|
||||
]
|
||||
],
|
||||
"distance": 2.5
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.chamfer",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
20,
|
||||
0,
|
||||
100
|
||||
]
|
||||
],
|
||||
"distance": 4
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Slot",
|
||||
"project_edges": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
15,
|
||||
-2.3
|
||||
],
|
||||
"p1": [
|
||||
35,
|
||||
2.7
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Slot",
|
||||
"distance": 100,
|
||||
"through_all": true,
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Clamp"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#5024"
|
||||
],
|
||||
"what": "a drilled O8 hole, 10 deep with a 118 deg point, placed 1 mm off a 40x30x20 box's top face, across its edge: 17-54 s in truck",
|
||||
"source": "analytic",
|
||||
"method": "the hole's axis is at x = -1, y = 15, so only its part at x >= 0 removes material: the circular segment of the O8 section beyond x = 0 (r^2 acos(d/r) - d sqrt(r^2-d^2), d = 1) over the 10 mm to the shoulder, plus the same segment of the point cone's section (radius 4 - s tan59 at s below the shoulder, down to radius 1), integrated (python quadrature). V = 24000 - 172.16874 - 11.10370",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 23816.7276
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 20
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.hole",
|
||||
"params": {
|
||||
"position": [
|
||||
-1,
|
||||
15,
|
||||
20
|
||||
],
|
||||
"diameter": 8,
|
||||
"depth": 10,
|
||||
"type": "drilled",
|
||||
"tip_angle": 118
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#5041"
|
||||
],
|
||||
"what": "a countersunk O6.4 hole (O13.7, 90 deg) through a plate 0.15 mm from a wall standing on it: the countersink tool reached ~0.7 mm above the entry face and notched the wall",
|
||||
"source": "analytic",
|
||||
"method": "the countersink's rim (y = 23 + 6.85 = 29.85) stays clear of the wall (y = 30), so nothing above z = 8 changes. Plate 40x40x8 + wall 40x10x30 = 24800; the hole removes the O6.4 cylinder through 8 plus the countersink cone over it (depth (13.7-6.4)/2 = 3.65: pi h/3 (R^2+Rr+r^2) - pi r^2 h). Faces: bottom, the two L-shaped x faces, y=0, y=40 (plate and wall coplanar), the plate top, the wall's -y face and top, the cone and the bore = 10. Area: 7480 - pi 6.85^2 - pi 3.2^2 + pi (6.85+3.2) 3.65 sqrt2 + 2 pi 3.2 (8-3.65). The report's clearance M6 is given as its O6.4 so the answer doesn't depend on the clearance table",
|
||||
"body_count": 1,
|
||||
"faces": 10,
|
||||
"volume_mm3": 24357.7861,
|
||||
"area_mm2": 7550.8567
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 40,
|
||||
"height": 8,
|
||||
"corner": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"name": "Plate"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 10,
|
||||
"height": 30,
|
||||
"corner": [
|
||||
0,
|
||||
30,
|
||||
8
|
||||
],
|
||||
"operation": "join",
|
||||
"name": "Wall"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.hole",
|
||||
"params": {
|
||||
"position": [
|
||||
20,
|
||||
23.0,
|
||||
8
|
||||
],
|
||||
"direction": [
|
||||
0,
|
||||
0,
|
||||
-1
|
||||
],
|
||||
"diameter": 6.4,
|
||||
"type": "countersink",
|
||||
"cs_diameter": 13.7,
|
||||
"cs_angle": 90,
|
||||
"name": "CS"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#5126"
|
||||
],
|
||||
"what": "a join of the 20 level-2 Menger sponges (45 mm, 5 mm cubes) of a level-3 sponge, touching face to face with the same hole pattern on both faces of each contact: truck failed depending on the tools' order ('coincident faces were left in place', 'shell not oriented and closed')",
|
||||
"source": "analytic",
|
||||
"method": "each level-2 sponge is a 45 mm cube less its 3 central 15 mm tunnels and the 24 5 mm tunnels of its sub-cubes: 45^3 * (20/27)^2 = 50000. The 20 sponges of level 3 touch only face to face, so the join is one body of 20 * 50000 = 1000000 (= 135^3 * (20/27)^3). The tools are listed round the bottom ring first, then the rest, as in the failing session",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 1000000.0,
|
||||
"timeout_s": 1200
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
+11
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#5149"
|
||||
],
|
||||
"what": "a 25x2x10 fin standing on a disc plate, circular-patterned 40 times about the plate's axis (joined): 'boolean Union: no result' past about 15 copies",
|
||||
"source": "analytic",
|
||||
"method": "fins r 20..45, 2 wide: at r = 20 the 40 copies are 2 pi 20/40 = 3.14 apart, wider than a fin, so none overlap. V = pi 50^2 5 + 40*25*2*10 = 39269.908 + 20000. Faces: the plate's bottom, side and top + 5 per fin = 203",
|
||||
"body_count": 1,
|
||||
"faces": 203,
|
||||
"volume_mm3": 59269.9082
|
||||
}
|
||||
+66
@@ -0,0 +1,66 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 50,
|
||||
"height": 5,
|
||||
"body_name": "Plate"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"face": [
|
||||
0,
|
||||
0,
|
||||
5
|
||||
]
|
||||
},
|
||||
"name": "FinSketch",
|
||||
"project_edges": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
20,
|
||||
-1
|
||||
],
|
||||
"p1": [
|
||||
45,
|
||||
1
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "FinSketch",
|
||||
"distance": 10,
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"Plate"
|
||||
],
|
||||
"name": "Fin"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.pattern.circular",
|
||||
"params": {
|
||||
"features": [
|
||||
"Fin"
|
||||
],
|
||||
"axis": "Z",
|
||||
"count": 40,
|
||||
"angle": "360 deg"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#5197",
|
||||
"tangency-labs/solidcraft#3396"
|
||||
],
|
||||
"what": "a join of flush layers: a disc r37 (z -1.2..0) carrying 15 of the 19 regions of a sketch of 18 chords (z -3.6..-1.2; four bands left out), on an annulus r35..37 (z -5.6..-3.6) joined to a disc of all the chord regions (z -8..-5.6): SMLib's result came back with 'loop encloses no (u, v) area' though both operands are valid",
|
||||
"source": "analytic",
|
||||
"method": "the layers only meet face to face, so V is their sum: Body1 = pi 37^2 1.2 + (pi 37^2 - the four bands y -29..-24, -13..-8, 8..11, 24..27 of the disc, Int 2 sqrt(37^2 - y^2) dy) 2.4; Body2 = pi (37^2-35^2) 2; Body3 = pi 37^2 2.4. The bands run out to the rim, so the space inside r35 under Body1 opens to the outside: one shell (the reporter's 52-command script, generic dimensions)",
|
||||
"body_count": 1,
|
||||
"shells": 1,
|
||||
"volume_mm3": 24340.9358
|
||||
}
|
||||
@@ -0,0 +1,792 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "S1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"radius": 37
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-18.57417562100671,
|
||||
-32
|
||||
],
|
||||
[
|
||||
18.57417562100671,
|
||||
-32
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-22.978250586152114,
|
||||
-29
|
||||
],
|
||||
[
|
||||
22.978250586152114,
|
||||
-29
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-28.160255680657446,
|
||||
-24
|
||||
],
|
||||
[
|
||||
28.160255680657446,
|
||||
-24
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-30.463092423455635,
|
||||
-21
|
||||
],
|
||||
[
|
||||
30.463092423455635,
|
||||
-21
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-33.36165463522455,
|
||||
-16
|
||||
],
|
||||
[
|
||||
33.36165463522455,
|
||||
-16
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-34.64101615137755,
|
||||
-13
|
||||
],
|
||||
[
|
||||
34.64101615137755,
|
||||
-13
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-36.124783736376884,
|
||||
-8
|
||||
],
|
||||
[
|
||||
36.124783736376884,
|
||||
-8
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-36.66060555964672,
|
||||
-5
|
||||
],
|
||||
[
|
||||
36.66060555964672,
|
||||
-5
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-37.0,
|
||||
0
|
||||
],
|
||||
[
|
||||
37.0,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-36.87817782917155,
|
||||
3
|
||||
],
|
||||
[
|
||||
36.87817782917155,
|
||||
3
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-36.124783736376884,
|
||||
8
|
||||
],
|
||||
[
|
||||
36.124783736376884,
|
||||
8
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-35.32704346531139,
|
||||
11
|
||||
],
|
||||
[
|
||||
35.32704346531139,
|
||||
11
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-33.36165463522455,
|
||||
16
|
||||
],
|
||||
[
|
||||
33.36165463522455,
|
||||
16
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-31.74901573277509,
|
||||
19
|
||||
],
|
||||
[
|
||||
31.74901573277509,
|
||||
19
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-28.160255680657446,
|
||||
24
|
||||
],
|
||||
[
|
||||
28.160255680657446,
|
||||
24
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-25.298221281347036,
|
||||
27
|
||||
],
|
||||
[
|
||||
25.298221281347036,
|
||||
27
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-18.57417562100671,
|
||||
32
|
||||
],
|
||||
[
|
||||
18.57417562100671,
|
||||
32
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-12.0,
|
||||
35
|
||||
],
|
||||
[
|
||||
12.0,
|
||||
35
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "S3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"radius": 37
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-18.57417562100671,
|
||||
-32
|
||||
],
|
||||
[
|
||||
18.57417562100671,
|
||||
-32
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-22.978250586152114,
|
||||
-29
|
||||
],
|
||||
[
|
||||
22.978250586152114,
|
||||
-29
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-28.160255680657446,
|
||||
-24
|
||||
],
|
||||
[
|
||||
28.160255680657446,
|
||||
-24
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-30.463092423455635,
|
||||
-21
|
||||
],
|
||||
[
|
||||
30.463092423455635,
|
||||
-21
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-33.36165463522455,
|
||||
-16
|
||||
],
|
||||
[
|
||||
33.36165463522455,
|
||||
-16
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-34.64101615137755,
|
||||
-13
|
||||
],
|
||||
[
|
||||
34.64101615137755,
|
||||
-13
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-36.124783736376884,
|
||||
-8
|
||||
],
|
||||
[
|
||||
36.124783736376884,
|
||||
-8
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-36.66060555964672,
|
||||
-5
|
||||
],
|
||||
[
|
||||
36.66060555964672,
|
||||
-5
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-37.0,
|
||||
0
|
||||
],
|
||||
[
|
||||
37.0,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-36.87817782917155,
|
||||
3
|
||||
],
|
||||
[
|
||||
36.87817782917155,
|
||||
3
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-36.124783736376884,
|
||||
8
|
||||
],
|
||||
[
|
||||
36.124783736376884,
|
||||
8
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-35.32704346531139,
|
||||
11
|
||||
],
|
||||
[
|
||||
35.32704346531139,
|
||||
11
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-33.36165463522455,
|
||||
16
|
||||
],
|
||||
[
|
||||
33.36165463522455,
|
||||
16
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-31.74901573277509,
|
||||
19
|
||||
],
|
||||
[
|
||||
31.74901573277509,
|
||||
19
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-28.160255680657446,
|
||||
24
|
||||
],
|
||||
[
|
||||
28.160255680657446,
|
||||
24
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-25.298221281347036,
|
||||
27
|
||||
],
|
||||
[
|
||||
25.298221281347036,
|
||||
27
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-18.57417562100671,
|
||||
32
|
||||
],
|
||||
[
|
||||
18.57417562100671,
|
||||
32
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-12.0,
|
||||
35
|
||||
],
|
||||
[
|
||||
12.0,
|
||||
35
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Rings"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"radius": 37
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"radius": 35
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Rings",
|
||||
"profiles": "all",
|
||||
"distance": 1.2,
|
||||
"direction": "negative",
|
||||
"body_name": "Body1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "S1",
|
||||
"profiles": [
|
||||
{
|
||||
"point": [
|
||||
0,
|
||||
-34.5
|
||||
]
|
||||
},
|
||||
{
|
||||
"point": [
|
||||
0,
|
||||
-30.5
|
||||
]
|
||||
},
|
||||
{
|
||||
"point": [
|
||||
0,
|
||||
-22.5
|
||||
]
|
||||
},
|
||||
{
|
||||
"point": [
|
||||
0,
|
||||
-18.5
|
||||
]
|
||||
},
|
||||
{
|
||||
"point": [
|
||||
0,
|
||||
-14.5
|
||||
]
|
||||
},
|
||||
{
|
||||
"point": [
|
||||
0,
|
||||
-6.5
|
||||
]
|
||||
},
|
||||
{
|
||||
"point": [
|
||||
0,
|
||||
-2.5
|
||||
]
|
||||
},
|
||||
{
|
||||
"point": [
|
||||
0,
|
||||
1.5
|
||||
]
|
||||
},
|
||||
{
|
||||
"point": [
|
||||
0,
|
||||
5.5
|
||||
]
|
||||
},
|
||||
{
|
||||
"point": [
|
||||
0,
|
||||
13.5
|
||||
]
|
||||
},
|
||||
{
|
||||
"point": [
|
||||
0,
|
||||
17.5
|
||||
]
|
||||
},
|
||||
{
|
||||
"point": [
|
||||
0,
|
||||
21.5
|
||||
]
|
||||
},
|
||||
{
|
||||
"point": [
|
||||
0,
|
||||
29.5
|
||||
]
|
||||
},
|
||||
{
|
||||
"point": [
|
||||
0,
|
||||
33.5
|
||||
]
|
||||
},
|
||||
{
|
||||
"point": [
|
||||
0,
|
||||
36.0
|
||||
]
|
||||
}
|
||||
],
|
||||
"distance": 2.4,
|
||||
"direction": "negative",
|
||||
"from": [
|
||||
0,
|
||||
0,
|
||||
-1.2
|
||||
],
|
||||
"operation": "join"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Rings",
|
||||
"profiles": [
|
||||
{
|
||||
"point": [
|
||||
36,
|
||||
0
|
||||
]
|
||||
}
|
||||
],
|
||||
"distance": 2,
|
||||
"direction": "negative",
|
||||
"from": [
|
||||
36,
|
||||
0,
|
||||
-3.6
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "Body2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "S3",
|
||||
"profiles": "all",
|
||||
"distance": 2.4,
|
||||
"direction": "negative",
|
||||
"from": [
|
||||
36,
|
||||
0,
|
||||
-5.6
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "Body3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.combine",
|
||||
"params": {
|
||||
"target": "Body2",
|
||||
"tools": [
|
||||
"Body3"
|
||||
],
|
||||
"operation": "join"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.combine",
|
||||
"params": {
|
||||
"target": "Body1",
|
||||
"tools": [
|
||||
"Body2"
|
||||
],
|
||||
"operation": "join"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -390,5 +390,193 @@
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4827",
|
||||
"why": "UI only: draft corner rules in the dialog (feature request)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4831",
|
||||
"why": "no geometry: sketch Mirror about an origin axis (dup of #4193)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4852",
|
||||
"why": "no reproduction: a screw-hole cut in a user's part shown by screenshot; the design is off GitHub"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4853",
|
||||
"why": "no geometry: sketch edits on a turned component are slow (evaluation frames)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4856",
|
||||
"why": "no geometry: an M2 thread in a 2 mm hole is refused by design (tap drill 1.6)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4862",
|
||||
"why": "UI only: sketch-on-face contrast"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4865",
|
||||
"why": "no geometry: sketch Mirror about an origin axis (dup of #4193)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4881",
|
||||
"why": "no reproduction: an extrude to an imported STEP made from a mesh in another CAD program, no file"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4883",
|
||||
"why": "no reproduction: \"couldn't extrude after a loft and patch\", no message or design"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4885",
|
||||
"why": "UI only: positioning a hole while placing it (dup of #4384)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4910",
|
||||
"why": "no geometry: the report arrived empty"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4911",
|
||||
"why": "no geometry: a join to-object where a cut was meant (\"nothing lies between\"), user error"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4917",
|
||||
"why": "no reproduction: an extrude to a curved face on an unknown part, screenshot only"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4921",
|
||||
"why": "no reproduction: a 0.6 mm join on a 44-feature user part, no design"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4922",
|
||||
"why": "UI only: theme corner radii"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4928",
|
||||
"why": "no geometry: plugin commands (RFC)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4937",
|
||||
"why": "no geometry: a Mirror feature can't itself be mirrored yet (a stated limit, dup of #395)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4943",
|
||||
"why": "no reproduction: last command only (a 4 mm cut of two profiles), no design"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4945",
|
||||
"why": "no reproduction: last command only (a 10 mm join), no message or design"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4955",
|
||||
"why": "UI only: moving a placed hole (dup of #5399)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4957",
|
||||
"why": "no geometry: body auto-names reused after a rename (document)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4967",
|
||||
"why": "UI only: sketch snap to curve intersections"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4974",
|
||||
"why": "UI only: a construction plane can't be picked as an extrude's To Object (the command takes it)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5002",
|
||||
"why": "no reproduction: Split Body by an offset plane leaving touching lumps, a user's roof part, no design"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5032",
|
||||
"why": "no geometry: sketch mirror lines not offered after the sketch is finished (UI)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5039",
|
||||
"why": "no reproduction: a cylinder joined on a user's swept body; the design was mailed, not attached"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5040",
|
||||
"why": "no geometry: an offset plane can't attach to a face after a draft and a shell (document, dup of #4325)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5044",
|
||||
"why": "no reproduction: Draft pick point misses the face on a user's 3-body part"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5066",
|
||||
"why": "no geometry: sketch pattern counts lose their parameter (sketch, dup of #5231)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5072",
|
||||
"why": "no reproduction: last command only (a 2 mm cut on 0.16.2), no design"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5073",
|
||||
"why": "no reproduction: a slow join of two bodies of a user's part, no design"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5075",
|
||||
"why": "no geometry: a cut into a mesh body is refused by design (the part was opened from STL)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5078",
|
||||
"why": "UI only: the Parameters window's size"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5080",
|
||||
"why": "UI only: reordering ribbon drop-downs"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5082",
|
||||
"why": "UI only: Combine's body inputs not filling (screenshot)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5089",
|
||||
"why": "no geometry: render settings validation"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5106",
|
||||
"why": "no reproduction: four circles cut into a user's cylinder at once compute for long, no sizes"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5111",
|
||||
"why": "render: Direct3D 12 glitches on a GTX 1060"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5123",
|
||||
"why": "no reproduction: a 5 mm join that never finishes on a user's part, screenshot only"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5135",
|
||||
"why": "no geometry: a construction axis as the pattern axis (command parameters, fixed in 0.20.0)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5136",
|
||||
"why": "no reproduction: Split Body of a user's profile part by a plane, no design"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5142",
|
||||
"why": "UI only: Combine doesn't take bodies picked in the browser (dup of #4452)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5156",
|
||||
"why": "no reproduction: a screenshot only"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5171",
|
||||
"why": "no reproduction: last command only (a 26 mm cut on a 56-feature part), no design"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5172",
|
||||
"why": "no kernel geometry: extrude without profiles takes every region, islands included (command default)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5175",
|
||||
"why": "no geometry: a joint origin's name given as a face (document)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5180",
|
||||
"why": "no reproduction: a cut on a user's 20 m model never finishes, screenshot only"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5185",
|
||||
"why": "no geometry: joint solver work while dragging (performance)"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#5022"
|
||||
],
|
||||
"what": "a snap fit 1e-9 mm thick on a box: it got past validation and panicked in the kernel ('tolerance must be no less than 1e-6')",
|
||||
"source": "invariants",
|
||||
"method": "a 1e-9 mm wall is no solid: the right answer is a clean refusal, never a panic",
|
||||
"outcome": "refused"
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"length": 40,
|
||||
"width": 40,
|
||||
"height": 4
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "plastic.snap_fit",
|
||||
"params": {
|
||||
"position": [
|
||||
20,
|
||||
20,
|
||||
4
|
||||
],
|
||||
"hook": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"length": 15,
|
||||
"thickness": 1e-09,
|
||||
"width": 6,
|
||||
"catch_depth": 1,
|
||||
"catch_length": 3
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -126,5 +126,93 @@
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4791",
|
||||
"why": "render: capture buffer and GPU hang on Intel/Mesa, no geometry"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4840",
|
||||
"why": "no geometry: unclean exit on 0.15.0, gone on 0.19.0"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4845",
|
||||
"why": "no reproduction: inspect.clearance between two user bodies, the design is not given"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4892",
|
||||
"why": "no geometry: drawing references and updates (feature plan)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4931",
|
||||
"why": "no geometry: unclean exit on 0.12.0 after selections"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4944",
|
||||
"why": "no reproduction: timeline.edit of a bore in a user's design, the design is not given"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4951",
|
||||
"why": "no geometry: an empty crash report"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4958",
|
||||
"why": "render: lost GPU device (wgpu), no geometry"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4975",
|
||||
"why": "no geometry: an empty crash report (inspect.interference)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4981",
|
||||
"why": "render: startup on the software fallback renderer, no geometry"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4993",
|
||||
"why": "no geometry: unclean exit between commands, no replay"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5018",
|
||||
"why": "no reproduction: unclean exit during a fillet on 0.16.2, nothing recorded"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5021",
|
||||
"why": "no geometry: a design file's integer coordinates skip the load range check (document)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5049",
|
||||
"why": "render: GPU tessellation buffer padding (an empty vertex list), not the kernel; the STEP file can't be shared"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5065",
|
||||
"why": "no geometry: unclean exit after a timeline delete, nothing running"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5068",
|
||||
"why": "no reproduction: the display triangulation library's assertion, title only"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5069",
|
||||
"why": "no reproduction: the display triangulation library's collinear-edge assertion, title only"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5079",
|
||||
"why": "no geometry: the crash journal leaves out component.activate (document)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5102",
|
||||
"why": "no geometry: an empty crash report during startup (surface configure)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5122",
|
||||
"why": "no reproduction: an access violation between commands, title only"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5125",
|
||||
"why": "no geometry: unclean exit with no command and no replay"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5144",
|
||||
"why": "render: lost GPU device (wgpu), no geometry"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5189",
|
||||
"why": "render: lost GPU device (wgpu) in Preferences and the viewport"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#4859"
|
||||
],
|
||||
"what": "an inside (concave) vertical corner of a 25x15 ring with a 2 mm wall, 10 high, chamfered 2 mm: truck refused it ('2 mm is too large for this chamfer: the result changes 108 mm3')",
|
||||
"source": "analytic",
|
||||
"method": "a chamfer of a concave edge fills it: + 2*2/2 * 10 = 20. V = (25*15 - 21*11)*10 + 20 = 1460. Faces: 4 outer, 4 inner, the chamfer, top, bottom = 11",
|
||||
"body_count": 1,
|
||||
"faces": 11,
|
||||
"volume_mm3": 1460.0
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
25,
|
||||
15
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
2,
|
||||
2
|
||||
],
|
||||
"p1": [
|
||||
23,
|
||||
13
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"distance": 10,
|
||||
"profiles": [
|
||||
{
|
||||
"point": [
|
||||
1,
|
||||
7
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.chamfer",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
2,
|
||||
2,
|
||||
5
|
||||
]
|
||||
],
|
||||
"distance": 2
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#4989"
|
||||
],
|
||||
"what": "the top edge of a face drafted 10 deg (the front of a 40x30x20 block, neutral plane at its base), chamfered 2 mm: refused ('the blend is larger than the neighbouring faces; the largest radius that fits is 0.071 mm')",
|
||||
"source": "analytic",
|
||||
"method": "the draft tilts the front face in by 20 tan10 at the top: - 0.5*20*(20 tan10)*40. The edge between the top and the drafted face has an 80 deg wedge; an equal 2 mm chamfer removes the triangle 0.5*2*2*sin80 along its 40 mm (the end faces are square to it). Faces 7",
|
||||
"body_count": 1,
|
||||
"faces": 7,
|
||||
"volume_mm3": 22510.5995
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"corner": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"length": 40,
|
||||
"width": 30,
|
||||
"height": 20,
|
||||
"body_name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.draft",
|
||||
"params": {
|
||||
"faces": [
|
||||
[
|
||||
20,
|
||||
0,
|
||||
10
|
||||
]
|
||||
],
|
||||
"angle": "10 deg",
|
||||
"neutral": "XY"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.chamfer",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
20,
|
||||
3.52654,
|
||||
20
|
||||
]
|
||||
],
|
||||
"distance": 2
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#5129"
|
||||
],
|
||||
"what": "the concave vertical edge where a taller cylinder (r8 x 15) meets a block's side (10 high), filleted r1: refused ('a vertex of the edge chain where other faces meet: both faces next to the edge must be planar'); it worked when both were the same height",
|
||||
"source": "analytic",
|
||||
"method": "block 20x20x10 + cylinder pi 64 15 less their overlap (half the cylinder over the block's height, pi 64/2 10). The round fills the corner between the plane x = 20 and the cylinder: its circle (r1) has its centre at (21, 10 - sqrt80), tangent to both; the region between the plane, the cylinder and that circle (polygon clipping, 8192 segments a quarter circle) times the edge's 10 mm, the block's top closing it. Graded to 1e-5 relative, as the round adds 3e-4",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 6012.41426,
|
||||
"tolerance": {
|
||||
"rel": 1e-05
|
||||
}
|
||||
}
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"corner": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"length": 20,
|
||||
"width": 20,
|
||||
"height": 10,
|
||||
"body_name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 8,
|
||||
"height": 15,
|
||||
"base": [
|
||||
20,
|
||||
10,
|
||||
0
|
||||
],
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"Block"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
20,
|
||||
2,
|
||||
5
|
||||
]
|
||||
],
|
||||
"radius": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#5157"
|
||||
],
|
||||
"what": "the bottom loop of a 30x20x10 box whose vertical edges are rounded r4, chamfered 1 mm along its tangent chain: truck's corners bulged out instead of following the chamfer",
|
||||
"source": "analytic",
|
||||
"method": "rounds: 4 (1-pi/4) 16 10; the chamfer: its 1x1 triangle (area 1/2) along the straight runs (2*22 + 2*12 = 68) and, round each r4 corner, a quarter turn of it about the corner's axis (Pappus, centroid at radius 4 - 1/3): 4 (pi/2)(11/3)(1/2). V = 6000 - rounds - 34 - corners. Faces: top, bottom, 4 sides, 4 rounds, 4 flat and 4 conical chamfer pieces = 18",
|
||||
"body_count": 1,
|
||||
"faces": 18,
|
||||
"volume_mm3": 5817.1357
|
||||
}
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"corner": [
|
||||
-15,
|
||||
-10,
|
||||
0
|
||||
],
|
||||
"length": 30,
|
||||
"width": 20,
|
||||
"height": 10,
|
||||
"body_name": "Box"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
15,
|
||||
10,
|
||||
5
|
||||
],
|
||||
[
|
||||
15,
|
||||
-10,
|
||||
5
|
||||
],
|
||||
[
|
||||
-15,
|
||||
10,
|
||||
5
|
||||
],
|
||||
[
|
||||
-15,
|
||||
-10,
|
||||
5
|
||||
]
|
||||
],
|
||||
"radius": 4
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.chamfer",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
0,
|
||||
-10,
|
||||
0
|
||||
]
|
||||
],
|
||||
"distance": 1
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#5158"
|
||||
],
|
||||
"what": "two adjacent top edges of a 2 mm plate (30x31, two O6.35 holes) filleted r2, the plate's own thickness; one hole comes within 1 mm of an edge: refused ('a fillet larger than the faces next to it; the largest radius that fits is 0.963 mm')",
|
||||
"source": "analytic",
|
||||
"method": "each round (r = t = 2) removes the corner region (1-pi/4) r^2 along its edge (30 and 31) and uses up the side face; at the corner the two mitred rounds overlap by Int_0^r L(b)^2 db, L(b) = r - sqrt(r^2-(b-r)^2); the round at x = -15 reaches the hole at (-10.8, 8.2), which already took out Int over the hole's part at x < -13 of 2 - sqrt(4 - (x+13)^2) (python quadrature). V = 1860 - 2 pi 3.175^2 2 - removed. Graded to 1e-5",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 1681.90376,
|
||||
"tolerance": {
|
||||
"rel": 1e-05
|
||||
}
|
||||
}
|
||||
+100
@@ -0,0 +1,100 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Plate"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
-15,
|
||||
-15.5
|
||||
],
|
||||
"p1": [
|
||||
15,
|
||||
15.5
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Plate",
|
||||
"distance": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"face": [
|
||||
0,
|
||||
0,
|
||||
2
|
||||
]
|
||||
},
|
||||
"name": "Holes",
|
||||
"project_edges": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
-10.8,
|
||||
8.2
|
||||
],
|
||||
"radius": 3.175
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.circle.center",
|
||||
"params": {
|
||||
"center": [
|
||||
3.2,
|
||||
6.4
|
||||
],
|
||||
"radius": 3.175
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Holes",
|
||||
"distance": 7.5,
|
||||
"direction": "negative",
|
||||
"operation": "cut"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
0,
|
||||
15.5,
|
||||
2
|
||||
],
|
||||
[
|
||||
-15,
|
||||
0,
|
||||
2
|
||||
]
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#5181"
|
||||
],
|
||||
"what": "a 220 x 11 two-distance chamfer along the bottom edge of a 23 mm plate 100 wide whose sides run straight for 85 mm and then taper to 61.4 at 222.5: refused ('runs past the faces beside the edge into other geometry; the largest size that fits is 85 mm')",
|
||||
"source": "analytic",
|
||||
"method": "the plate (profile 100x85 + the trapezoid to 61.351 at 222.5) x 23. The first face is the big face (it faces up most: horizontal, the bottom faces down): 220 up it, 11 into the bottom face. The chamfer plane cuts the wedge 11 (1 - z/220) deep across the full width w(z) (100, then tapering past z = 85): Int_0^220 w(z) 11 (1 - z/220) dz, the tapered sides simply trimmed",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 335399.749
|
||||
}
|
||||
+85
@@ -0,0 +1,85 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"name": "Bracket"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-50,
|
||||
0
|
||||
],
|
||||
[
|
||||
50,
|
||||
0
|
||||
],
|
||||
[
|
||||
50,
|
||||
85
|
||||
],
|
||||
[
|
||||
30.675635228421154,
|
||||
222.5
|
||||
],
|
||||
[
|
||||
-30.675635228421154,
|
||||
222.5
|
||||
],
|
||||
[
|
||||
-50,
|
||||
85
|
||||
]
|
||||
],
|
||||
"closed": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Bracket",
|
||||
"distance": 23,
|
||||
"body_name": "Bracket"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.chamfer",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
],
|
||||
"distance": 220,
|
||||
"distance2": 11
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -146,5 +146,57 @@
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4806",
|
||||
"why": "no reproduction: a 0.2 mm chamfer chain on an unknown part, no design"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4842",
|
||||
"why": "no geometry: variable chamfers (feature request)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4848",
|
||||
"why": "no reproduction: a 1 mm chamfer of a curved chain on an unknown part, no design"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4861",
|
||||
"why": "UI only: hovered edge contrast"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4871",
|
||||
"why": "no reproduction: a join that only touched, fixed on 0.20.0 per the reporter"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4926",
|
||||
"why": "no reproduction: two edges on a 14-feature unknown part, no design"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4986",
|
||||
"why": "no geometry: Press Pull on chamfers and holes (feature request)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5000",
|
||||
"why": "needs the user design: a 0.02 mm fillet beside a sliver on a key-ring part; the zip holds only a screenshot"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5001",
|
||||
"why": "no reproduction: one edge on an unknown part, no design"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5033",
|
||||
"why": "no geometry: the tangent chain adds edges the user didn't want (UI; dup of #5328's request)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5061",
|
||||
"why": "needs the user design: a revolved bumper with patterned ribs, chamfers and cuts; no small stand-in"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5134",
|
||||
"why": "no geometry: the report arrived empty"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5141",
|
||||
"why": "needs the user design: a plate with a triangular rib in a component, a two-distance chamfer cutting too much"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5173",
|
||||
"why": "no kernel geometry: an edge pick at a corner point picks one edge silently (command validation)"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#5193"
|
||||
],
|
||||
"what": "a turned pin (revolves with two grooves, a stepped bore with a drill point from one end, a stud with chamfered root and tip on the other) with two milled flats, exported to STEP and read back: truck's STEP lost two faces of the flats' neighbours and grew 0.075% (synthetic: the report's own pin, re-dimensioned)",
|
||||
"source": "analytic",
|
||||
"method": "the re-imported body is graded. Every section square to Z is a disc of the revolve profile's radius (4, chamfered 0.6 at both ends), less the end bore (r 1.6 from a 118-ish point at x 13..13.9, r 1.9 at the mouth), less the grooves r 3.3..4 (z -2..-6, -18..-18.8), less for z -13..0 the two circular segments beyond |x| = 3.3; the stud z 0..6 is r 2 with 0.25 and 0.4 chamfers. V = Int A(z) dz (python quadrature) = 998.79936 + 74.08360. Graded to 1e-4 relative, below truck's 7.5e-4 change; bbox x, y -4..4, z -24..6",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 1072.88296,
|
||||
"bbox": {
|
||||
"min": [
|
||||
-4.0,
|
||||
-4.0,
|
||||
-24.0
|
||||
],
|
||||
"max": [
|
||||
4.0,
|
||||
4.0,
|
||||
6.0
|
||||
]
|
||||
},
|
||||
"tolerance": {
|
||||
"rel": 0.0001
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,465 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"x_dir": [
|
||||
0.0,
|
||||
0.0,
|
||||
-1.0
|
||||
],
|
||||
"y_dir": [
|
||||
0.0,
|
||||
1.0,
|
||||
0.0
|
||||
]
|
||||
},
|
||||
"name": "Body"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
0,
|
||||
3.4
|
||||
],
|
||||
[
|
||||
0.6,
|
||||
4
|
||||
],
|
||||
[
|
||||
23.4,
|
||||
4
|
||||
],
|
||||
[
|
||||
24,
|
||||
3.4
|
||||
],
|
||||
[
|
||||
24,
|
||||
0
|
||||
]
|
||||
],
|
||||
"closed": true,
|
||||
"infer": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.revolve",
|
||||
"params": {
|
||||
"sketch": "Body",
|
||||
"axis": {
|
||||
"origin": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"dir": [
|
||||
0.0,
|
||||
0.0,
|
||||
-1.0
|
||||
]
|
||||
},
|
||||
"angle": 360.0,
|
||||
"operation": "new",
|
||||
"body_name": "Pin"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"x_dir": [
|
||||
0.0,
|
||||
0.0,
|
||||
-1.0
|
||||
],
|
||||
"y_dir": [
|
||||
0.0,
|
||||
1.0,
|
||||
0.0
|
||||
]
|
||||
},
|
||||
"name": "Groove1",
|
||||
"project_edges": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
2,
|
||||
3.3
|
||||
],
|
||||
"p1": [
|
||||
6,
|
||||
4.5
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.revolve",
|
||||
"params": {
|
||||
"sketch": "Groove1",
|
||||
"axis": {
|
||||
"origin": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"dir": [
|
||||
0.0,
|
||||
0.0,
|
||||
-1.0
|
||||
]
|
||||
},
|
||||
"angle": 360.0,
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Pin"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"x_dir": [
|
||||
0.0,
|
||||
0.0,
|
||||
-1.0
|
||||
],
|
||||
"y_dir": [
|
||||
0.0,
|
||||
1.0,
|
||||
0.0
|
||||
]
|
||||
},
|
||||
"name": "Groove2",
|
||||
"project_edges": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
18,
|
||||
3.3
|
||||
],
|
||||
"p1": [
|
||||
18.8,
|
||||
4.5
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.revolve",
|
||||
"params": {
|
||||
"sketch": "Groove2",
|
||||
"axis": {
|
||||
"origin": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"dir": [
|
||||
0.0,
|
||||
0.0,
|
||||
-1.0
|
||||
]
|
||||
},
|
||||
"angle": 360.0,
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Pin"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"x_dir": [
|
||||
0.0,
|
||||
0.0,
|
||||
-1.0
|
||||
],
|
||||
"y_dir": [
|
||||
0.0,
|
||||
1.0,
|
||||
0.0
|
||||
]
|
||||
},
|
||||
"name": "Bore",
|
||||
"project_edges": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
24.5,
|
||||
0
|
||||
],
|
||||
[
|
||||
24.5,
|
||||
1.9
|
||||
],
|
||||
[
|
||||
23.7,
|
||||
1.9
|
||||
],
|
||||
[
|
||||
23.7,
|
||||
1.6
|
||||
],
|
||||
[
|
||||
13.9,
|
||||
1.6
|
||||
],
|
||||
[
|
||||
13.0,
|
||||
0
|
||||
]
|
||||
],
|
||||
"closed": true,
|
||||
"infer": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.revolve",
|
||||
"params": {
|
||||
"sketch": "Bore",
|
||||
"axis": {
|
||||
"origin": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"dir": [
|
||||
0.0,
|
||||
0.0,
|
||||
-1.0
|
||||
]
|
||||
},
|
||||
"angle": 360.0,
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Pin"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"x_dir": [
|
||||
0.0,
|
||||
0.0,
|
||||
-1.0
|
||||
],
|
||||
"y_dir": [
|
||||
0.0,
|
||||
1.0,
|
||||
0.0
|
||||
]
|
||||
},
|
||||
"name": "Stud",
|
||||
"project_edges": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
0,
|
||||
1.75
|
||||
],
|
||||
[
|
||||
-0.25,
|
||||
2
|
||||
],
|
||||
[
|
||||
-5.6,
|
||||
2
|
||||
],
|
||||
[
|
||||
-6,
|
||||
1.6
|
||||
],
|
||||
[
|
||||
-6,
|
||||
0
|
||||
]
|
||||
],
|
||||
"closed": true,
|
||||
"infer": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.revolve",
|
||||
"params": {
|
||||
"sketch": "Stud",
|
||||
"axis": {
|
||||
"origin": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"dir": [
|
||||
0.0,
|
||||
0.0,
|
||||
-1.0
|
||||
]
|
||||
},
|
||||
"angle": 360.0,
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"Pin"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0.0,
|
||||
0.0,
|
||||
-13.0
|
||||
],
|
||||
"x_dir": [
|
||||
1.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"y_dir": [
|
||||
0.0,
|
||||
1.0,
|
||||
0.0
|
||||
]
|
||||
},
|
||||
"name": "Flats",
|
||||
"project_edges": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
3.3,
|
||||
-2.5980762113533165
|
||||
],
|
||||
"p1": [
|
||||
5,
|
||||
2.5980762113533165
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
-5,
|
||||
-2.5980762113533165
|
||||
],
|
||||
"p1": [
|
||||
-3.3,
|
||||
2.5980762113533165
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Flats",
|
||||
"distance": 13.0,
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Pin"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "file.export",
|
||||
"params": {
|
||||
"path": "$OUT/kernel-case-5193.step",
|
||||
"format": "step"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "file.new",
|
||||
"params": {
|
||||
"name": "Reimported"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "file.insert_step",
|
||||
"params": {
|
||||
"path": "$OUT/kernel-case-5193.step"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -110,5 +110,21 @@
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4814",
|
||||
"why": "no geometry: Convert Mesh needs the mesh's component active (dup of #4609)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4898",
|
||||
"why": "no geometry: SVG curves offset as a mixed chain and moved (sketch, dup of #2149)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4918",
|
||||
"why": "no geometry: Convert Mesh takes constant-section prisms only (dup of #4586)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5090",
|
||||
"why": "no kernel geometry: an open mesh body measures a negative volume (mesh measure)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5091",
|
||||
"why": "no geometry: KiCad board import (feature request)"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -30,5 +30,9 @@
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4720",
|
||||
"why": "no geometry: two sheet-metal bodies combined lose their flat pattern, as warned (feature request)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4968",
|
||||
"why": "no geometry: included bend angles in sheet-metal exports (feature request)"
|
||||
}
|
||||
]
|
||||
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#4847"
|
||||
],
|
||||
"what": "a dome (a quarter disc r20 revolved) shelled 2 mm from its flat base, then the base ring (r 18..20) face-extruded 10 mm back into the dome as a join: ~120 s, then 'boolean Union: no result'",
|
||||
"source": "analytic",
|
||||
"method": "shell: (2/3) pi (20^3 - 18^3). The ring's prism r 18..20, z 0..10 lies inside the dome's wall where r^2 + z^2 <= 20^2 (r >= 18 keeps it outside the cavity) and pokes out elsewhere: it adds 760 pi - Int_18^20 2 pi r sqrt(400 - r^2) dr = 760 pi - (2 pi/3) 76^1.5",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 5540.612
|
||||
}
|
||||
+113
@@ -0,0 +1,113 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"name": "Quarter"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
20,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.three_point",
|
||||
"params": {
|
||||
"start": [
|
||||
20,
|
||||
0
|
||||
],
|
||||
"through": [
|
||||
14.142136,
|
||||
14.142136
|
||||
],
|
||||
"end": [
|
||||
0,
|
||||
20
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
20
|
||||
],
|
||||
[
|
||||
0,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.revolve",
|
||||
"params": {
|
||||
"sketch": "Quarter",
|
||||
"axis": "y",
|
||||
"body_name": "Dome"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.shell",
|
||||
"params": {
|
||||
"faces": [
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0
|
||||
]
|
||||
],
|
||||
"thickness": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"face": [
|
||||
19,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"face_body": "Dome",
|
||||
"distance": 10,
|
||||
"direction": "negative",
|
||||
"operation": "join"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#5182",
|
||||
"tangency-labs/solidcraft#5368"
|
||||
],
|
||||
"what": "a chamfered O6 through hole in a block (synthetic: the report's part was an imported STEP), its wall and chamfer deleted: refused ('face 8 borders face 7, which is curved; only planar neighbours can extend')",
|
||||
"source": "analytic",
|
||||
"method": "the hole's wall and chamfer are all its faces; deleting them heals the block's top and bottom across the hole: a plain 40x40x20 block, V = 32000, 6 faces",
|
||||
"body_count": 1,
|
||||
"faces": 6,
|
||||
"volume_mm3": 32000.0
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"corner": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"length": 40,
|
||||
"width": 40,
|
||||
"height": 20,
|
||||
"body_name": "Block"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.hole",
|
||||
"params": {
|
||||
"position": [
|
||||
20,
|
||||
20,
|
||||
20
|
||||
],
|
||||
"diameter": 6,
|
||||
"name": "Hole"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.chamfer",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
23,
|
||||
20,
|
||||
20
|
||||
]
|
||||
],
|
||||
"distance": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "face.delete",
|
||||
"params": {
|
||||
"faces": [
|
||||
[
|
||||
23,
|
||||
20,
|
||||
10
|
||||
],
|
||||
[
|
||||
23.5,
|
||||
20,
|
||||
19.5
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -86,5 +86,29 @@
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4822",
|
||||
"why": "no reproduction: a screenshot only"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4886",
|
||||
"why": "no geometry: sketch offset of a mixed line/spline chain (sketch, a stated limit)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4988",
|
||||
"why": "no geometry: the report arrived empty"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4990",
|
||||
"why": "no geometry: the report arrived empty"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5019",
|
||||
"why": "no geometry: sketch offset joining coincident ends (sketch)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5050",
|
||||
"why": "no reproduction: shell of a user's revolved free-form profile (a stated limit; a plain tapered cup works); see the case from #4567"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5076",
|
||||
"why": "no reproduction: shell of a user's loft (free-form, a stated limit); see the loft shell case from #4743"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1879,5 +1879,136 @@
|
||||
"4826": "issue, open",
|
||||
"4827": "issue, open",
|
||||
"4828": "issue, open",
|
||||
"4829": "issue, open"
|
||||
"4829": "issue, open",
|
||||
"4830": "issue, open",
|
||||
"4831": "issue, open",
|
||||
"4840": "issue, open",
|
||||
"4842": "issue, open",
|
||||
"4845": "issue, open",
|
||||
"4847": "issue, open",
|
||||
"4848": "issue, open",
|
||||
"4852": "issue, open",
|
||||
"4853": "issue, closed",
|
||||
"4855": "issue, open",
|
||||
"4856": "issue, open",
|
||||
"4859": "issue, open",
|
||||
"4861": "issue, open",
|
||||
"4862": "issue, open",
|
||||
"4865": "issue, open",
|
||||
"4868": "issue, open",
|
||||
"4871": "issue, open",
|
||||
"4877": "issue, open",
|
||||
"4879": "issue, open",
|
||||
"4881": "issue, open",
|
||||
"4883": "issue, open",
|
||||
"4885": "issue, open",
|
||||
"4886": "issue, open",
|
||||
"4889": "issue, closed",
|
||||
"4892": "issue, open",
|
||||
"4898": "issue, open",
|
||||
"4900": "issue, open",
|
||||
"4910": "issue, closed",
|
||||
"4911": "issue, open",
|
||||
"4913": "issue, open",
|
||||
"4917": "issue, open",
|
||||
"4918": "issue, closed",
|
||||
"4921": "issue, open",
|
||||
"4922": "issue, closed",
|
||||
"4926": "issue, open",
|
||||
"4927": "issue, open",
|
||||
"4928": "issue, open",
|
||||
"4931": "issue, open",
|
||||
"4937": "issue, open",
|
||||
"4942": "issue, closed",
|
||||
"4943": "issue, open",
|
||||
"4944": "issue, open",
|
||||
"4945": "issue, open",
|
||||
"4946": "issue, open",
|
||||
"4951": "issue, open",
|
||||
"4955": "issue, open",
|
||||
"4957": "issue, closed",
|
||||
"4958": "issue, closed",
|
||||
"4961": "issue, closed",
|
||||
"4963": "issue, open",
|
||||
"4967": "issue, closed",
|
||||
"4968": "issue, closed",
|
||||
"4971": "issue, closed",
|
||||
"4974": "issue, closed",
|
||||
"4975": "issue, open",
|
||||
"4981": "issue, open",
|
||||
"4986": "issue, open",
|
||||
"4988": "issue, closed",
|
||||
"4989": "issue, open",
|
||||
"4990": "issue, open",
|
||||
"4993": "issue, open",
|
||||
"5000": "issue, open",
|
||||
"5001": "issue, open",
|
||||
"5002": "issue, open",
|
||||
"5018": "issue, open",
|
||||
"5019": "issue, open",
|
||||
"5021": "issue, closed",
|
||||
"5022": "issue, closed",
|
||||
"5023": "issue, closed",
|
||||
"5024": "issue, open",
|
||||
"5032": "issue, open",
|
||||
"5033": "issue, open",
|
||||
"5035": "issue, open",
|
||||
"5037": "issue, open",
|
||||
"5039": "issue, open",
|
||||
"5040": "issue, open",
|
||||
"5041": "issue, open",
|
||||
"5044": "issue, open",
|
||||
"5049": "issue, closed",
|
||||
"5050": "issue, open",
|
||||
"5054": "issue, open",
|
||||
"5055": "issue, closed",
|
||||
"5061": "issue, open",
|
||||
"5065": "issue, open",
|
||||
"5066": "issue, closed",
|
||||
"5068": "issue, closed",
|
||||
"5069": "issue, open",
|
||||
"5072": "issue, open",
|
||||
"5073": "issue, open",
|
||||
"5075": "issue, open",
|
||||
"5076": "issue, open",
|
||||
"5077": "issue, open",
|
||||
"5078": "issue, closed",
|
||||
"5079": "issue, closed",
|
||||
"5080": "issue, open",
|
||||
"5082": "issue, open",
|
||||
"5089": "issue, closed",
|
||||
"5090": "issue, open",
|
||||
"5091": "issue, open",
|
||||
"5102": "issue, open",
|
||||
"5106": "issue, closed",
|
||||
"5111": "issue, open",
|
||||
"5122": "issue, open",
|
||||
"5123": "issue, open",
|
||||
"5125": "issue, open",
|
||||
"5126": "issue, open",
|
||||
"5129": "issue, open",
|
||||
"5134": "issue, open",
|
||||
"5135": "issue, closed",
|
||||
"5136": "issue, open",
|
||||
"5141": "issue, open",
|
||||
"5142": "issue, open",
|
||||
"5144": "issue, closed",
|
||||
"5146": "issue, open",
|
||||
"5149": "issue, open",
|
||||
"5156": "issue, open",
|
||||
"5157": "issue, open",
|
||||
"5158": "issue, open",
|
||||
"5171": "issue, open",
|
||||
"5172": "issue, closed",
|
||||
"5173": "issue, open",
|
||||
"5175": "issue, closed",
|
||||
"5180": "issue, open",
|
||||
"5181": "issue, open",
|
||||
"5182": "issue, open",
|
||||
"5185": "issue, closed",
|
||||
"5189": "issue, open",
|
||||
"5192": "issue, open",
|
||||
"5193": "issue, open",
|
||||
"5195": "issue, open",
|
||||
"5197": "issue, open"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#5037"
|
||||
],
|
||||
"what": "a box wall swept round a rounded-rectangle rim (lines and r5 arcs) from a profile standing square to the path at its start, joined to the floor: the sweep didn't follow the path (synthetic: the report's card box had a stepped profile)",
|
||||
"source": "analytic",
|
||||
"method": "floor 94x64 r7 x 2 (z -2..0). The wall section 2 x 10 is centred on the path, so by Pappus it adds 20 x the path's length 2*80 + 2*50 + 2 pi 5; it stands inside the floor's outline. V = floor + wall",
|
||||
"body_count": 1,
|
||||
"volume_mm3": 17776.1946
|
||||
}
|
||||
@@ -0,0 +1,240 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Floor"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.rounded",
|
||||
"params": {
|
||||
"p0": [
|
||||
-47,
|
||||
-32
|
||||
],
|
||||
"p1": [
|
||||
47,
|
||||
32
|
||||
],
|
||||
"radius": 7
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Floor",
|
||||
"distance": 2,
|
||||
"direction": "negative",
|
||||
"body_name": "Box"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Rim",
|
||||
"project_edges": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-40,
|
||||
-30
|
||||
],
|
||||
[
|
||||
40,
|
||||
-30
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.three_point",
|
||||
"params": {
|
||||
"start": [
|
||||
40,
|
||||
-30
|
||||
],
|
||||
"through": [
|
||||
43.535534,
|
||||
-28.535534
|
||||
],
|
||||
"end": [
|
||||
45,
|
||||
-25
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
45,
|
||||
-25
|
||||
],
|
||||
[
|
||||
45,
|
||||
25
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.three_point",
|
||||
"params": {
|
||||
"start": [
|
||||
45,
|
||||
25
|
||||
],
|
||||
"through": [
|
||||
43.535534,
|
||||
28.535534
|
||||
],
|
||||
"end": [
|
||||
40,
|
||||
30
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
40,
|
||||
30
|
||||
],
|
||||
[
|
||||
-40,
|
||||
30
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.three_point",
|
||||
"params": {
|
||||
"start": [
|
||||
-40,
|
||||
30
|
||||
],
|
||||
"through": [
|
||||
-43.535534,
|
||||
28.535534
|
||||
],
|
||||
"end": [
|
||||
-45,
|
||||
25
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-45,
|
||||
25
|
||||
],
|
||||
[
|
||||
-45,
|
||||
-25
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.three_point",
|
||||
"params": {
|
||||
"start": [
|
||||
-45,
|
||||
-25
|
||||
],
|
||||
"through": [
|
||||
-43.535534,
|
||||
-28.535534
|
||||
],
|
||||
"end": [
|
||||
-40,
|
||||
-30
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
-40,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"name": "Wall",
|
||||
"project_edges": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.rectangle.two_point",
|
||||
"params": {
|
||||
"p0": [
|
||||
-31,
|
||||
0
|
||||
],
|
||||
"p1": [
|
||||
-29,
|
||||
10
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.sweep",
|
||||
"params": {
|
||||
"sketch": "Wall",
|
||||
"path_sketch": "Rim",
|
||||
"path": [
|
||||
"l1",
|
||||
"a1",
|
||||
"l2",
|
||||
"a2",
|
||||
"l3",
|
||||
"a3",
|
||||
"l4",
|
||||
"a4"
|
||||
],
|
||||
"operation": "join",
|
||||
"targets": [
|
||||
"Box"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#5195"
|
||||
],
|
||||
"what": "a cylinder whose 5 mm chamfered rim is revolve-cut to a concave cove: a quarter-circle arc through the chamfer's two ends, centred on the old corner, the region between it and the old corner (the chamfer's triangle and the lens) cut round 360 deg: 'boolean Cut: no result'",
|
||||
"source": "analytic",
|
||||
"method": "cylinder r20 x 30; chamfer and cove together remove the quarter disc r5 at the corner (r 15..20, z 25..30, centred at (20,30)). Pappus: area 25 pi/4, centroid at radius 20 - 4*5/(3 pi): V = pi 400 30 - 2 pi (20 - 20/(3 pi)) 25 pi/4. Faces: side, bottom, top disc r15 and the cove (a torus) = 4",
|
||||
"body_count": 1,
|
||||
"faces": 4,
|
||||
"volume_mm3": 35493.5101
|
||||
}
|
||||
@@ -0,0 +1,130 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"radius": 20,
|
||||
"height": 30,
|
||||
"body_name": "Cyl"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.chamfer",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
20,
|
||||
0,
|
||||
30
|
||||
]
|
||||
],
|
||||
"distance": 5
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
0,
|
||||
1
|
||||
]
|
||||
},
|
||||
"name": "Cove",
|
||||
"project_edges": false
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
15,
|
||||
30
|
||||
],
|
||||
[
|
||||
20,
|
||||
30
|
||||
],
|
||||
[
|
||||
20,
|
||||
25
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.three_point",
|
||||
"params": {
|
||||
"start": [
|
||||
15,
|
||||
30
|
||||
],
|
||||
"through": [
|
||||
16.464466094067262,
|
||||
26.464466094067262
|
||||
],
|
||||
"end": [
|
||||
20,
|
||||
25
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
15,
|
||||
30
|
||||
],
|
||||
[
|
||||
20,
|
||||
25
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.revolve",
|
||||
"params": {
|
||||
"sketch": "Cove",
|
||||
"profiles": [
|
||||
{
|
||||
"point": [
|
||||
19,
|
||||
29
|
||||
]
|
||||
},
|
||||
{
|
||||
"point": [
|
||||
16.6,
|
||||
27.0
|
||||
]
|
||||
}
|
||||
],
|
||||
"axis": "y",
|
||||
"angle": "360 deg",
|
||||
"operation": "cut",
|
||||
"targets": [
|
||||
"Cyl"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -110,5 +110,57 @@
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4828",
|
||||
"why": "needs the author's real duct part (STEP operands of a user design); a performance case"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4830",
|
||||
"why": "UI only: lofting to a point from the dialog (the command already takes an apex)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4855",
|
||||
"why": "needs the user design: a parametric bearing revolve-cut through ten sketch regions"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4868",
|
||||
"why": "UI only: home view theme colours"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4889",
|
||||
"why": "no reproduction: a screenshot and a video link, no message"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4900",
|
||||
"why": "no reproduction: surface loft between splines refused, no message or design"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4942",
|
||||
"why": "no reproduction: a loft join between annuli of a user's part, screenshot only"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4946",
|
||||
"why": "no reproduction: last command only (a 15 deg symmetric revolve join), no design"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4961",
|
||||
"why": "no geometry: Revolve about a construction axis (dup of #4506)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5023",
|
||||
"why": "no geometry: duplicate profile indexes accepted (command validation)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5035",
|
||||
"why": "no reproduction: a slow revolve cut of a polygon profile on an unknown part (0.18.4)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5054",
|
||||
"why": "no geometry: sketches on a patch body's flat face (feature request)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5077",
|
||||
"why": "no geometry: Revolve taking a body face as its profile (feature request, PR #5170)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5192",
|
||||
"why": "no geometry: \"unknown sketch line\" for the axis (command parameters), no design"
|
||||
}
|
||||
]
|
||||
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"sources": [
|
||||
"tangency-labs/solidcraft#5146"
|
||||
],
|
||||
"what": "a O23 shaft with a modelled M23x1 thread joined onto the O26 cylinder it stands on: SolidCraft ended without a clean exit during the combine",
|
||||
"source": "invariants",
|
||||
"method": "the shaft's end face lies on the base's top face, so the join is one solid: one valid closed body, within the case's timeout (modelled threads are slow: 600 s)",
|
||||
"body_count": 1,
|
||||
"timeout_s": 600
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"diameter": 26,
|
||||
"height": 10,
|
||||
"body_name": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.cylinder",
|
||||
"params": {
|
||||
"diameter": 23,
|
||||
"height": 20,
|
||||
"base": [
|
||||
0,
|
||||
0,
|
||||
10
|
||||
],
|
||||
"operation": "new",
|
||||
"body_name": "Shaft"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.thread",
|
||||
"params": {
|
||||
"face": [
|
||||
11.5,
|
||||
0,
|
||||
20
|
||||
],
|
||||
"designation": "M23x1",
|
||||
"modeled": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.combine",
|
||||
"params": {
|
||||
"target": "Base",
|
||||
"tools": [
|
||||
"Shaft"
|
||||
],
|
||||
"operation": "join"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -58,5 +58,21 @@
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4799",
|
||||
"why": "no geometry: cosmetic threads don't cut the model, by design"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4913",
|
||||
"why": "duplicate of threads/3311-two-tapped-holes-both-modelled-threaded: a second modelled thread after the first"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4963",
|
||||
"why": "no geometry: a modelled thread needs the tap-drill hole, by design"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#4971",
|
||||
"why": "no geometry: no coarse M28 in ISO metric (designation; M28x2 works)"
|
||||
},
|
||||
{
|
||||
"source": "tangency-labs/solidcraft#5055",
|
||||
"why": "no geometry: no coarse thread past M56 (designation; M75x2 works)"
|
||||
}
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user