mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-03 10:35:58 +00:00
Rig: fillet corners graded curvature-continuous, the default to be
Six fillet cases that pick their edges with no type, so they take the fillet's default, which the owner has ruled is to be curvature-continuous (G2) at every corner, with circular rounds kept as an option. Each grades every seam of the rounds and of the corner patch G2, on one valid body: - an oblique convex corner (a block drafted 15 deg); - a four-edge and a five-edge apex corner (pyramids lofted to a point); - a pocket's concave corner; - a mixed corner (a step: one concave edge, two convex); - a corner beside a cylinder (the top corner of a half cylinder). All six fail on SMLib 2fc375f, listed in KNOWN_FAILING: today's default is the circular round, whose seams jump in curvature by 1/r. On the five-edge apex the corner patch also meets two rounds at 8.45 degrees (G0). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -16,6 +16,12 @@
|
||||
cov-chamfer-concave-edge-through-up-down-joined-squares SMLib status 1001 on the concave chamfer's tangent chain
|
||||
cov-chamfer-outer-corner-edge-of-a-shelled-box-with-a-lip SMLib's chamfer result is not a closed solid where it ends on the lip
|
||||
cov-fillet-arc-edge-on-an-oblique-cut-of-a-bar SMLib's check refuses the round: internal coincident control points in a B-spline curve
|
||||
cov-fillet-g2-default-corner-beside-a-cylinder the default fillet is the circular (G1) round, not yet the curvature-continuous one: its seams with the faces jump in curvature by 1/r (0.5 / mm)
|
||||
cov-fillet-g2-default-five-edge-apex-corner the default fillet is the circular (G1) round, not yet the curvature-continuous one: and the apex patch meets two rounds at 8.45 degrees (G0) near (0.708, 1.556, 26.824)
|
||||
cov-fillet-g2-default-four-edge-apex-corner the default fillet is the circular (G1) round, not yet the curvature-continuous one: the apex patch meets the rounds G1 only (curvature jump 6.6 / mm)
|
||||
cov-fillet-g2-default-mixed-corner the default fillet is the circular (G1) round, not yet the curvature-continuous one: its seams with the faces jump in curvature by 1/r (0.5 / mm)
|
||||
cov-fillet-g2-default-oblique-three-edge-corner the default fillet is the circular (G1) round, not yet the curvature-continuous one: its seams jump in curvature by 1/r (0.5 / mm)
|
||||
cov-fillet-g2-default-pocket-corner the default fillet is the circular (G1) round, not yet the curvature-continuous one: its seams jump in curvature by 1/r (0.5 / mm)
|
||||
every-block-cylinder-crease-top-edge-after-arc-round-r1 the r1 round's contact seam with the block's side face reads 60 degrees (the cylinder wall's normal) at its end on the crease (8.660, 5, 15.284): G0 where the round is built tangent
|
||||
every-hole-top-rim-r12-past-plate-bottom SMLib status 1001: a convex round past its face on the tangent side is not yet built by subtraction
|
||||
report-drafted-peg-front-and-concave-rounds-together-r2 not supported yet: SMLib refuses the corner where the drafted front top edge runs tangent into the concave arc (on the cone) as of no kind its blend corners take
|
||||
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"what": "the corner of a half cylinder's top (the top's arc, its straight edge and the upright seam where the flat face meets the cylinder) filleted 2 with the default type",
|
||||
"source": "invariants",
|
||||
"method": "a half disc R10 (the arc from (10, 0) round to (-10, 0) and its diameter) extruded 10; the three edges at (10, 0, 10); the fillet's default section and corner are curvature-continuous (owner, 2026-10-31: G2 by default, tangent rounds an option): every seam of a round and of the corner patch with its neighbours G2, one valid body",
|
||||
"body_count": 1,
|
||||
"continuity": {
|
||||
"order": "g2"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Half"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.arc.center_point",
|
||||
"params": {
|
||||
"center": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"start": [
|
||||
10,
|
||||
0
|
||||
],
|
||||
"end": [
|
||||
-10,
|
||||
0
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-10,
|
||||
0
|
||||
],
|
||||
[
|
||||
10,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Half",
|
||||
"distance": 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
7.0710678118654755,
|
||||
7.0710678118654755,
|
||||
10
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
10
|
||||
],
|
||||
[
|
||||
10,
|
||||
0,
|
||||
5
|
||||
]
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"what": "the 5 slant edges of a 5-sided pyramid filleted 2 with the default type: a convex corner of 5 edges at the apex",
|
||||
"source": "invariants",
|
||||
"method": "a regular 5-gon of circumradius 20 lofted to the apex (0, 0, 30); its 5 slant edges; the fillet's default section and corner are curvature-continuous (owner, 2026-10-31: G2 by default, tangent rounds an option): every seam of a round and of the corner patch with its neighbours G2, one valid body",
|
||||
"body_count": 1,
|
||||
"continuity": {
|
||||
"order": "g2"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,174 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
1.2246467991473533e-15,
|
||||
20.0
|
||||
],
|
||||
[
|
||||
-19.02113032590307,
|
||||
6.18033988749895
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-19.02113032590307,
|
||||
6.18033988749895
|
||||
],
|
||||
[
|
||||
-11.755705045849465,
|
||||
-16.180339887498945
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-11.755705045849465,
|
||||
-16.180339887498945
|
||||
],
|
||||
[
|
||||
11.755705045849458,
|
||||
-16.180339887498953
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
11.755705045849458,
|
||||
-16.180339887498953
|
||||
],
|
||||
[
|
||||
19.021130325903073,
|
||||
6.180339887498944
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
19.021130325903073,
|
||||
6.180339887498944
|
||||
],
|
||||
[
|
||||
1.2246467991473533e-15,
|
||||
20.0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0,
|
||||
0,
|
||||
30
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
]
|
||||
},
|
||||
"name": "Top"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.point",
|
||||
"params": {
|
||||
"point": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"id": "apex"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.loft",
|
||||
"params": {
|
||||
"sections": [
|
||||
{
|
||||
"sketch": "Base"
|
||||
},
|
||||
{
|
||||
"sketch": "Top",
|
||||
"point": "apex"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
6.123233995736766e-16,
|
||||
10.0,
|
||||
15.0
|
||||
],
|
||||
[
|
||||
-9.510565162951535,
|
||||
3.090169943749475,
|
||||
15.0
|
||||
],
|
||||
[
|
||||
-5.877852522924733,
|
||||
-8.090169943749473,
|
||||
15.0
|
||||
],
|
||||
[
|
||||
5.877852522924729,
|
||||
-8.090169943749476,
|
||||
15.0
|
||||
],
|
||||
[
|
||||
9.510565162951536,
|
||||
3.090169943749472,
|
||||
15.0
|
||||
]
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"what": "the 4 slant edges of a 4-sided pyramid filleted 2 with the default type: a convex corner of 4 edges at the apex",
|
||||
"source": "invariants",
|
||||
"method": "a regular 4-gon of circumradius 20 lofted to the apex (0, 0, 30); its 4 slant edges; the fillet's default section and corner are curvature-continuous (owner, 2026-10-31: G2 by default, tangent rounds an option): every seam of a round and of the corner patch with its neighbours G2, one valid body",
|
||||
"body_count": 1,
|
||||
"continuity": {
|
||||
"order": "g2"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,154 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
1.2246467991473533e-15,
|
||||
20.0
|
||||
],
|
||||
[
|
||||
-20.0,
|
||||
2.4492935982947065e-15
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-20.0,
|
||||
2.4492935982947065e-15
|
||||
],
|
||||
[
|
||||
-3.673940397442059e-15,
|
||||
-20.0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
-3.673940397442059e-15,
|
||||
-20.0
|
||||
],
|
||||
[
|
||||
20.0,
|
||||
-4.898587196589413e-15
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
20.0,
|
||||
-4.898587196589413e-15
|
||||
],
|
||||
[
|
||||
1.2246467991473533e-15,
|
||||
20.0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": {
|
||||
"origin": [
|
||||
0,
|
||||
0,
|
||||
30
|
||||
],
|
||||
"x_dir": [
|
||||
1,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"y_dir": [
|
||||
0,
|
||||
1,
|
||||
0
|
||||
]
|
||||
},
|
||||
"name": "Top"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.point",
|
||||
"params": {
|
||||
"point": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"id": "apex"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.loft",
|
||||
"params": {
|
||||
"sections": [
|
||||
{
|
||||
"sketch": "Base"
|
||||
},
|
||||
{
|
||||
"sketch": "Top",
|
||||
"point": "apex"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
6.123233995736766e-16,
|
||||
10.0,
|
||||
15.0
|
||||
],
|
||||
[
|
||||
-10.0,
|
||||
1.2246467991473533e-15,
|
||||
15.0
|
||||
],
|
||||
[
|
||||
-1.8369701987210296e-15,
|
||||
-10.0,
|
||||
15.0
|
||||
],
|
||||
[
|
||||
10.0,
|
||||
-2.4492935982947065e-15,
|
||||
15.0
|
||||
]
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"what": "a step's corner (the concave step edge, the lower box's convex front top edge, the upper box's convex upright edge) filleted 2 with the default type",
|
||||
"source": "invariants",
|
||||
"method": "a 30 x 20 x 10 box with a 15 x 20 x 10 box joined on its top at x 0..15; the three edges at (15, 0, 10); the fillet's default section and corner are curvature-continuous (owner, 2026-10-31: G2 by default, tangent rounds an option): every seam of a round and of the corner patch with its neighbours G2, one valid body",
|
||||
"body_count": 1,
|
||||
"continuity": {
|
||||
"order": "g2"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"corner": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"length": 30,
|
||||
"width": 20,
|
||||
"height": 10,
|
||||
"body_name": "Step"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"corner": [
|
||||
0,
|
||||
0,
|
||||
10
|
||||
],
|
||||
"length": 15,
|
||||
"width": 20,
|
||||
"height": 10,
|
||||
"operation": "join"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
15,
|
||||
10,
|
||||
10
|
||||
],
|
||||
[
|
||||
22.5,
|
||||
0,
|
||||
10
|
||||
],
|
||||
[
|
||||
15,
|
||||
0,
|
||||
15
|
||||
]
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"what": "the three edges at a top corner of a block drafted 15 deg (an oblique convex corner) filleted 2 with the default type",
|
||||
"source": "invariants",
|
||||
"method": "a 30 x 20 rectangle extruded 10 with a 15 deg inward taper; the top front edge, the top left edge and the drafted edge between them at the corner near (0, 0, 10); the fillet's default section and corner are curvature-continuous (owner, 2026-10-31: G2 by default, tangent rounds an option): every seam of a round and of the corner patch with its neighbours G2, one valid body",
|
||||
"body_count": 1,
|
||||
"continuity": {
|
||||
"order": "g2"
|
||||
}
|
||||
}
|
||||
+106
@@ -0,0 +1,106 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "sketch.create",
|
||||
"params": {
|
||||
"plane": "XY",
|
||||
"name": "Base"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
30,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
30,
|
||||
0
|
||||
],
|
||||
[
|
||||
30,
|
||||
20
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
30,
|
||||
20
|
||||
],
|
||||
[
|
||||
0,
|
||||
20
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.line",
|
||||
"params": {
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
20
|
||||
],
|
||||
[
|
||||
0,
|
||||
0
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "sketch.finish",
|
||||
"params": {}
|
||||
},
|
||||
{
|
||||
"command": "solid.extrude",
|
||||
"params": {
|
||||
"sketch": "Base",
|
||||
"distance": 10,
|
||||
"taper": "-15 deg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
15,
|
||||
2.679491924311227,
|
||||
10
|
||||
],
|
||||
[
|
||||
2.679491924311227,
|
||||
10,
|
||||
10
|
||||
],
|
||||
[
|
||||
1.3397459621556136,
|
||||
1.3397459621556136,
|
||||
5
|
||||
]
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"what": "a pocket's corner (its two floor edges and the upright edge between them, all concave) filleted 2 with the default type",
|
||||
"source": "invariants",
|
||||
"method": "a 60 x 40 x 10 plate less a 30 x 20 pocket 5 deep from (15, 10); the floor edges and the upright edge at (15, 10); the fillet's default section and corner are curvature-continuous (owner, 2026-10-31: G2 by default, tangent rounds an option): every seam of a round and of the corner patch with its neighbours G2, one valid body",
|
||||
"body_count": 1,
|
||||
"continuity": {
|
||||
"order": "g2"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"commands": [
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"corner": [
|
||||
0,
|
||||
0,
|
||||
0
|
||||
],
|
||||
"length": 60,
|
||||
"width": 40,
|
||||
"height": 10
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.box",
|
||||
"params": {
|
||||
"corner": [
|
||||
15,
|
||||
10,
|
||||
5
|
||||
],
|
||||
"length": 30,
|
||||
"width": 20,
|
||||
"height": 6,
|
||||
"operation": "cut"
|
||||
}
|
||||
},
|
||||
{
|
||||
"command": "solid.fillet",
|
||||
"params": {
|
||||
"edges": [
|
||||
[
|
||||
30,
|
||||
10,
|
||||
5
|
||||
],
|
||||
[
|
||||
15,
|
||||
20,
|
||||
5
|
||||
],
|
||||
[
|
||||
15,
|
||||
10,
|
||||
7.5
|
||||
]
|
||||
],
|
||||
"radius": 2
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user