Thin Extrude: walls of a set thickness along sketch curves (#721) (#991)

Thin Extrude builds walls of a set thickness along sketch curves, open chains and closed loops, with the wall centred, inside, outside or on both sides at two thicknesses. Saved under format 20 (thin on an Extrude); an extrude without thin saves as before. Closes #721.
This commit is contained in:
Lasse Lian authored and GitHub committed 2026-10-14 11:46:16 -04:00
1 parent 86ea018d05
commit 6df69e9def
38 files changed
+1440 -34

No files matched your search

@@ -36,6 +36,11 @@ pub(super) fn fixtures() -> Vec<(&'static str, Value)> {
("sketch", json!({"type": "sketch", "plane": plane("sketch"), "sketch": sk.clone()})),
("sketch_along_path", json!({"type": "sketch", "plane": along("sketch"), "sketch": sk})),
("extrude", json!({"type": "extrude", "sketch": 1, "profiles": {"type": "all"}, "extent": extent("extrude")})),
(
"extrude_thin",
json!({"type": "extrude", "sketch": 1, "profiles": {"type": "all"}, "extent": extent("thin"),
"thin": {"curves": ["c1"], "thickness": "thin.thickness", "side": "two_sides", "thickness2": "thin.thickness2"}}),
),
(
"revolve",
json!({"type": "revolve", "sketch": 1, "profiles": {"type": "all"}, "axis": {"type": "world", "axis": "X"}, "angle": "revolve.angle", "angle2": "revolve.angle2"}),
@@ -158,7 +163,7 @@ pub(super) fn with_refs(name: &str, mut v: Value) -> Value {
let o = [0, 0, 0];
let tool = json!({"body": "B", "point": o});
let extra = match name {
"extrude" | "revolve" | "sweep" | "pipe" | "coil" | "thicken" => json!({"targets": ["B"]}),
"extrude" | "extrude_thin" | "revolve" | "sweep" | "pipe" | "coil" | "thicken" => json!({"targets": ["B"]}),
"fillet_constant" | "fillet_chord" | "fillet_curvature" | "fillet_variable" | "fillet_spline" | "chamfer" | "shell" | "draft"
| "offset_face" | "delete_face" | "replace_face" | "sheet_flange" | "sheet_hem" | "sheet_unfold" | "boss" | "lip" | "snap_fit" | "rest"
| "surface_offset" => {
@@ -16,6 +16,16 @@ extrude
Taper angle = extrude.taper (Angle)
To offset = extrude.to_offset (Length)
expressions: extrude.distance, extrude.distance2, extrude.start_offset, extrude.taper, extrude.to_offset
extrude_thin
inputs:
Distance = thin.distance (Length)
Distance 2 = thin.distance2 (Length)
Start offset = thin.start_offset (Length)
Taper angle = thin.taper (Angle)
To offset = thin.to_offset (Length)
Thickness = thin.thickness (Length)
Thickness 2 = thin.thickness2 (Length)
expressions: thin.distance, thin.distance2, thin.start_offset, thin.taper, thin.to_offset, thin.thickness, thin.thickness2
revolve
inputs:
Angle = revolve.angle (Angle)
@@ -7,6 +7,10 @@ extrude
sketches: [1]
remap_refs: sketch
remap_bodies: targets[0]
extrude_thin
sketches: [1]
remap_refs: sketch
remap_bodies: targets[0]
revolve
sketches: [1]
remap_refs: sketch