forked from 1b-agent/fieldcraft-upstream
ui-egui: select faces, edges, vertices, bodies, nodes and elements by picking
A click in the viewport picks what is under the pointer through the selection filter (the selection bar, top centre): geometry faces, edges, vertices and bodies, or mesh nodes, element faces and elements. Shift adds, Cmd/Ctrl adds or removes, a click on nothing clears, Escape clears; with Box on, a left drag selects the visible nodes, element faces or elements inside the box. What a click would pick is highlighted under the pointer with its name beside it. The selection is kept in the model's persistent terms: geometry by name (GeometryRef, named through the mesh's geometry tags or the drawn bodies' face names), so it survives a remesh, and the mesh by label (labels the model loses drop out). It reads as a set's members. Picking runs on the CPU against the triangles both renderers draw. The selection and the hover are drawn as an overlay in the theme's new pick_selected and pick_hover colours (light and dark), outlined; the GPU draws it as a second small layer, so a hover change uploads only that. Command forms that apply to part of the model (sets, boundary conditions, loads, sections, couplings) get a Target row whose Use selection fills the members, or makes a set of the selection and names it. A right click offers Create set from selection. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NmAttHhUZTokgPeEJia8sm
This commit is contained in:
1 parent
32c67d1988
commit
9e269a9f45
8 files changed
+1686
-59
No files matched your search
@@ -84,6 +84,7 @@ impl ModelApp {
|
||||
let toolbar = std::mem::take(&mut self.toolbar_rects);
|
||||
let layout = std::mem::take(&mut self.layout);
|
||||
let panels = std::mem::take(&mut self.panel_rects);
|
||||
self.capturing = true;
|
||||
crate::theme::apply(&off.ctx, self.ui.dark);
|
||||
// A capture is one still frame: windows and menus appear without fading in.
|
||||
off.ctx.global_style_mut(|s| s.animation_time = 0.0);
|
||||
@@ -114,6 +115,7 @@ impl ModelApp {
|
||||
}
|
||||
std::mem::swap(&mut self.icons, &mut off.icons);
|
||||
std::mem::swap(&mut self.viewport, &mut off.viewport);
|
||||
self.capturing = false;
|
||||
self.toolbar_rects = toolbar;
|
||||
self.layout = layout;
|
||||
self.panel_rects = panels;
|
||||
|
||||
Reference in new issue
Block a user