feat(measure): add radius and angle tools with dynamic measurement overlay

(cherry picked from commit aac44906a3)
This commit is contained in:
turbuczn authored and Hakan Seven committed 2026-10-15 00:22:41 +03:00
1 parent 843cbcd607
commit 3c55e6d7e1
42 files changed
+1624 -53

No files matched your search

+1
View File
@@ -1249,6 +1249,7 @@ impl OpenCADStudio {
}
pub(super) fn on_command_escape(&mut self) -> Task<Message> {
self.tabs[self.active_tab].measurement.clear();
// Escape answers a pending client getpoint request first: no point.
if self.control.get_point.is_some() {
self.resolve_get_point(None);
+1
View File
@@ -4564,6 +4564,7 @@ impl OpenCADStudio {
Message::ViewportRightPress => {
self.graphic_attributes.open_menu = None;
let i = self.active_tab;
self.tabs[i].measurement.dismiss_result();
self.ribbon.close_dropdown();
// Shift+RMB: the one-shot snap override menu at the cursor —
// pick a snap for just the next point, then it expires (#337).
+4
View File
@@ -1236,6 +1236,7 @@ impl OpenCADStudio {
return Task::none();
}
let i = self.active_tab;
self.tabs[i].measurement.live_visible = true;
if let Some(task) = self.start_drag_move(i, p) {
return Task::batch([task, self.on_viewport_move(p)]);
}
@@ -3162,6 +3163,7 @@ impl OpenCADStudio {
pub(crate) fn on_viewport_exit(&mut self) -> Task<Message> {
let i = self.active_tab;
self.tabs[i].measurement.live_visible = false;
self.hover_dwell = None;
if self.tabs[i]
.active_cmd
@@ -3658,6 +3660,7 @@ impl OpenCADStudio {
pub(super) fn on_viewport_left_press(&mut self) -> Task<Message> {
let i = self.active_tab;
self.tabs[i].measurement.dismiss_result();
self.block_palette.pressed = None;
if let Some(command) = self.tabs[i].active_cmd.as_mut() {
command.set_ctrl(self.ctrl_down);
@@ -5916,6 +5919,7 @@ properties={:.1}ms picked={}",
pub(super) fn on_viewport_middle_press(&mut self) -> Task<Message> {
let i = self.active_tab;
self.tabs[i].measurement.dismiss_result();
self.clear_navigation_hover(i);
self.ribbon.close_dropdown();
self.tabs[i].scene.remember_current_view();