forked from 1b-agent/opencadstudio-upstream
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:
1 parent
de1e49a4c5
commit
d285fd781e
27 files changed
+291
-29
No files matched your search
@@ -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;
|
||||
|
||||
Reference in new issue
Block a user