forked from 1b-agent/opencadstudio-upstream
VPCLIP arc options, visible linked clip boundaries, XCLIP depth rejection
- VPCLIP arc mode takes Angle, CEnter, Direction, Radius and Second pt with the reference prompts, and CLose closes with a tangent arc; the arc math is shared with PLINE. - Viewport clip boundaries from MVIEW and VPCLIP stay visible; picking or erasing a boundary takes its viewport along. - XCLIP Clipdepth: a rejected front plane keeps the old front plane and clears the back plane. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
bd17e7e0d4
commit
2e397aec99
5 files changed
+329
-163
No files matched your search
@@ -121,6 +121,19 @@ impl Scene {
|
||||
handles: &[Handle],
|
||||
) -> Vec<Handle> {
|
||||
let mut expanded = self.expanded_with_leaders(handles);
|
||||
// A viewport's clip boundary goes with its viewport: picking the
|
||||
// boundary selects both, erasing it erases the viewport.
|
||||
let viewports: Vec<Handle> = expanded
|
||||
.iter()
|
||||
.filter_map(|h| self.document.get_entity(*h).map(|e| (*h, e)))
|
||||
.flat_map(|(h, e)| {
|
||||
e.common().reactors.iter().copied().filter(move |r| {
|
||||
matches!(self.document.get_entity(*r),
|
||||
Some(EntityType::Viewport(vp)) if vp.clip_boundary_handle == h)
|
||||
})
|
||||
})
|
||||
.collect();
|
||||
expanded.extend(viewports);
|
||||
expanded.sort_unstable_by_key(|handle| handle.value());
|
||||
expanded.dedup();
|
||||
expanded
|
||||
|
||||
Reference in new issue
Block a user