feat(measuregeom): Quick mode measures around the cursor

MEASUREGEOM gains a Quick option. As the cursor moves, the nearest
drawn geometry along the working plane's X and Y lines through it is
measured live: cyan measurement lines and a Horizontal/Vertical readout
by the cursor. A click prints the current readout and keeps measuring;
Enter ends the command. The rays go through the scene's interaction
index, so large drawings stay responsive.

A structure-pick command whose miss message is empty now gets the click
as a plain point instead of an error.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
Hakan SevenandClaude Opus 5.5 committed 2026-10-15 13:22:26 +03:00
1 parent de1e49a4c5
commit d285fd781e
27 files changed
+291 -29

No files matched your search

+14
View File
@@ -10150,6 +10150,20 @@ impl Scene {
}
}
/// Wires of the space being edited that may cross a world-XY box: the
/// indexed broad phase in model space, every wire elsewhere.
pub fn interaction_candidates_xy(
&self,
aabb: [f64; 4],
) -> crate::scene::pick::interaction_index::InteractionCandidates {
let wires = self.hit_test_wires();
if self.current_layout != "Model" || !self.interaction_index_worthwhile(&wires) {
return crate::scene::pick::interaction_index::InteractionCandidates::all(wires)
.materialize_stubs();
}
self.indexed_interaction_candidates_xy(wires, aabb, false, false)
}
/// Small simple sets are cheaper to scan. Either many wires or substantial
/// sub-geometry (one giant polyline/text batch/mesh) enables the index.
const INTERACTION_INDEX_MIN_WIRES: usize = 4_000;