forked from 1b-agent/fieldcraft-upstream
engine: geometry.defeature takes features out of the design for meshing (#433)
Suppresses the SolidCraft features named (holes filled, fillets and chamfers back to their sharp edges, bosses removed) and rebuilds the design; a feature that cannot be suppressed alone is merged into its neighbour for meshing only. Kept in the model, replayed on open, undoable; geometry.defeature.delete turns them back on. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01UhhZMBTviDQxZvwnyP89fo
This commit is contained in:
1 parent
3f0cae70a2
commit
f297ffca3a
13 files changed
+284
-9
No files matched your search
@@ -225,6 +225,8 @@ pub enum Collection {
|
||||
FaceSplit,
|
||||
/// A size control (`mesh.size.set`).
|
||||
SizeControl,
|
||||
/// A defeature (`geometry.defeature`).
|
||||
Defeature,
|
||||
}
|
||||
|
||||
impl Collection {
|
||||
@@ -254,6 +256,7 @@ impl Collection {
|
||||
Collection::Stitch => "stitch",
|
||||
Collection::FaceSplit => "face split",
|
||||
Collection::SizeControl => "size control",
|
||||
Collection::Defeature => "defeature",
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -287,6 +290,7 @@ impl Session {
|
||||
Collection::Stitch => Box::new(m.stitches().iter().map(|f| f.name.as_str())),
|
||||
Collection::FaceSplit => Box::new(m.face_splits().iter().map(|f| f.name.as_str())),
|
||||
Collection::SizeControl => Box::new(m.size_controls().keys().map(String::as_str)),
|
||||
Collection::Defeature => Box::new(m.defeatures().iter().map(|f| f.name.as_str())),
|
||||
};
|
||||
names.take(MAX_NAMES).map(str::to_string).collect()
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user