Four analytic reference cases for variable, to-zero, chord-length and taper-to-fit fillets, with the formulas in tools/oracle-analytic.
187 lines
3.0 KiB
JSON
187 lines
3.0 KiB
JSON
{
|
|
"id": "78-fillet-variable-to-zero",
|
|
"name": "Variable fillet closing at a corner",
|
|
"description": "40x30x20 box, the top front edge rounded with a radius running linearly from 4 mm (x = 0) down to 0 at x = 40, where the round closes to the corner.",
|
|
"exercises": [
|
|
"extrude",
|
|
"fillet",
|
|
"variable radius"
|
|
],
|
|
"units": {
|
|
"length": "mm",
|
|
"angle": "deg",
|
|
"area": "mm2",
|
|
"volume": "mm3"
|
|
},
|
|
"conventions": {
|
|
"world": "right-handed; Z up. XY/XZ/YZ are the origin planes.",
|
|
"sketch_frame": "sketch-local 2D coords; world = plane.origin + x*plane.x_dir + y*plane.y_dir (origin in mm). Profile 'loops' list sketch entity ids.",
|
|
"point_refs": "'<id>.start' / '<id>.end' / '<id>.center' reuse (share) that existing sketch point; 'at' is its position when referenced.",
|
|
"extrude_direction": "positive = along sketch plane normal unless stated",
|
|
"selections": "selected faces/edges carry 'point': a world-space point on the face / the edge's parametric midpoint; pick the nearest face/edge to it."
|
|
},
|
|
"parameters": [],
|
|
"features": [
|
|
{
|
|
"op": "sketch",
|
|
"name": "Extrude1_sketch",
|
|
"plane": {
|
|
"ref": "XY",
|
|
"origin": [
|
|
0.0,
|
|
0.0,
|
|
0.0
|
|
],
|
|
"x_dir": [
|
|
1.0,
|
|
0.0,
|
|
0.0
|
|
],
|
|
"y_dir": [
|
|
0.0,
|
|
1.0,
|
|
0.0
|
|
],
|
|
"normal": [
|
|
0.0,
|
|
0.0,
|
|
1.0
|
|
]
|
|
},
|
|
"entities": [
|
|
{
|
|
"type": "line",
|
|
"start": {
|
|
"at": [
|
|
0,
|
|
0
|
|
]
|
|
},
|
|
"end": {
|
|
"at": [
|
|
40,
|
|
0
|
|
]
|
|
},
|
|
"id": "l1"
|
|
},
|
|
{
|
|
"type": "line",
|
|
"start": {
|
|
"ref": "l1.end",
|
|
"at": [
|
|
40.0,
|
|
0.0
|
|
]
|
|
},
|
|
"end": {
|
|
"at": [
|
|
40,
|
|
30
|
|
]
|
|
},
|
|
"id": "l2"
|
|
},
|
|
{
|
|
"type": "line",
|
|
"start": {
|
|
"ref": "l2.end",
|
|
"at": [
|
|
40.0,
|
|
30.0
|
|
]
|
|
},
|
|
"end": {
|
|
"at": [
|
|
0,
|
|
30
|
|
]
|
|
},
|
|
"id": "l3"
|
|
},
|
|
{
|
|
"type": "line",
|
|
"start": {
|
|
"ref": "l3.end",
|
|
"at": [
|
|
0.0,
|
|
30.0
|
|
]
|
|
},
|
|
"end": {
|
|
"ref": "l1.start",
|
|
"at": [
|
|
0.0,
|
|
0.0
|
|
]
|
|
},
|
|
"id": "l4"
|
|
}
|
|
],
|
|
"constraints": [],
|
|
"dimensions": []
|
|
},
|
|
{
|
|
"op": "extrude",
|
|
"name": "Extrude1",
|
|
"operation": "new",
|
|
"profiles": [
|
|
{
|
|
"sketch": "Extrude1_sketch",
|
|
"loops": [
|
|
{
|
|
"outer": true,
|
|
"curves": [
|
|
"l1",
|
|
"l2",
|
|
"l3",
|
|
"l4"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"extent": {
|
|
"type": "distance",
|
|
"distance": 20,
|
|
"direction": "positive"
|
|
},
|
|
"result_bodies": [
|
|
"Part"
|
|
]
|
|
},
|
|
{
|
|
"op": "fillet",
|
|
"name": "Fillet1",
|
|
"type": "variable_radius",
|
|
"radius": 4.0,
|
|
"radius2": 0.0,
|
|
"start": [
|
|
0.0,
|
|
0.0,
|
|
20.0
|
|
],
|
|
"edges": [
|
|
{
|
|
"type": "line",
|
|
"start": [
|
|
0.0,
|
|
0.0,
|
|
20.0
|
|
],
|
|
"end": [
|
|
40.0,
|
|
0.0,
|
|
20.0
|
|
],
|
|
"point": [
|
|
20.0,
|
|
0.0,
|
|
20.0
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|