Surface bodies: Patch, Stitch, Trim and Thicken
Kernel (surfaces): - Bodies with an open shell are surface bodies (Body::is_surface). - patch_region: a planar patch of a sketch region. patch_edges: a planar patch filling a closed loop of a body's edges. - copy_faces: faces copied out as a surface. - stitch: sew surfaces along coinciding edges, turning faces to agree; the result is a solid when it closes. - trim: cut a surface by a plane or face and keep one side. - thicken: offset planar and circular-cylindrical faces along their normals (one side or symmetric) into a solid. Plane copies slide; cylinder copies scale about the axis, exact for NURBS circles. Free edges get ruled walls. Faces meeting at a sharp edge are refused. Doc features Patch, Stitch, Thicken (with operations) and SurfaceTrim; engine commands FusionSurfacePatchCommand, FusionSurfaceStitchCommand, FusionSurfaceThickenCommand and FusionSurfaceTrimCommand. Tests (volumes): - A 10x10 patch thickened by 2 gives 200, also symmetric. - Half a cylinder side thickened outward gives half a ring; both halves inward give the full ring. - Six faces of a box stitched back give 6000; an open box with its top patched from the edges, stitched, gives 6000. - Trim keeps 30 or 70 of 100. - Engine: patch, trim, thicken gives 140. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AS5Tn3xieewUSg3uxrMVdL
This commit is contained in:
1 parent
feaaba156e
commit
dd6c8e1a6b
11 files changed
+908
-11
No files matched your search
@@ -1815,6 +1815,8 @@ fn replay(doc: &Document, vals: &BTreeMap<String, Value>, f: &Feature, st: &mut
|
||||
|
||||
#[path = "eval_more.rs"]
|
||||
mod more;
|
||||
#[path = "eval_surface.rs"]
|
||||
mod surface;
|
||||
|
||||
/// The plane of the body face a sketch sits on, found again: among planar faces with the
|
||||
/// picked plane's normal, the one nearest `at`. The picked frame moves along its normal onto it.
|
||||
@@ -1914,6 +1916,9 @@ fn eval_feature(doc: &Document, vals: &BTreeMap<String, Value>, f: &Feature, st:
|
||||
FeatureKind::Boss { .. } | FeatureKind::Lip { .. } | FeatureKind::SnapFit { .. } | FeatureKind::Rest { .. } => {
|
||||
more::plastic_eval(doc, vals, f, st)
|
||||
}
|
||||
FeatureKind::Patch { .. } | FeatureKind::Stitch { .. } | FeatureKind::Thicken { .. } | FeatureKind::SurfaceTrim { .. } => {
|
||||
surface::eval(doc, vals, f, st)
|
||||
}
|
||||
FeatureKind::Emboss { .. }
|
||||
| FeatureKind::Rib { .. }
|
||||
| FeatureKind::ReplaceFace { .. }
|
||||
|
||||
Reference in new issue
Block a user