diff --git a/assets/icons/area.svg b/assets/icons/area.svg
new file mode 100644
index 000000000..d3f754b24
--- /dev/null
+++ b/assets/icons/area.svg
@@ -0,0 +1,106 @@
+
+
+
+
diff --git a/assets/icons/distance.svg b/assets/icons/distance.svg
new file mode 100644
index 000000000..8969fc734
--- /dev/null
+++ b/assets/icons/distance.svg
@@ -0,0 +1,44 @@
+
+
+
+
diff --git a/src/modules/draw/inquiry/area.rs b/src/modules/draw/inquiry/area.rs
index de7330314..2e41e149a 100644
--- a/src/modules/draw/inquiry/area.rs
+++ b/src/modules/draw/inquiry/area.rs
@@ -8,7 +8,10 @@ use crate::command::{
use crate::entities::curve::entity_curve;
use crate::entities::traits::EntityTypeOps;
use crate::scene::model::wire_model::WireModel;
+use crate::modules::IconKind;
+pub const ICON: IconKind =
+ IconKind::Svg(include_bytes!("../../../../assets/icons/area.svg"));
#[derive(Clone, Copy, PartialEq, Eq)]
enum AreaMode {
Single,
diff --git a/src/modules/draw/inquiry/dist.rs b/src/modules/draw/inquiry/dist.rs
index a05274858..ff3729f19 100644
--- a/src/modules/draw/inquiry/dist.rs
+++ b/src/modules/draw/inquiry/dist.rs
@@ -4,8 +4,8 @@ use glam::DVec3;
use crate::t;
use crate::command::{CadCommand, CmdResult, WorkingPlane};
+use crate::modules::IconKind;
use crate::scene::model::wire_model::WireModel;
-
pub struct DistCommand {
// Keep the picked point in full f64 precision. Downcasting to f32 here
// loses ~0.03–0.06 units at survey-scale coordinates (e.g. eastings near
@@ -13,7 +13,8 @@ pub struct DistCommand {
first: Option,
plane: WorkingPlane,
}
-
+pub const ICON: IconKind =
+ IconKind::Svg(include_bytes!("../../../../assets/icons/distance.svg"));
impl DistCommand {
pub fn new() -> Self {
Self {
diff --git a/src/modules/draw/mod.rs b/src/modules/draw/mod.rs
index 9b860ea12..a9db09f43 100644
--- a/src/modules/draw/mod.rs
+++ b/src/modules/draw/mod.rs
@@ -43,6 +43,7 @@ impl CadModule for DrawModule {
array, copy, delete, explode, fillet, mirror, offset, rotate, scale, stretch,
translate, trim,
};
+ use inquiry::{area, dist};
use properties::match_prop;
static GROUPS: std::sync::OnceLock> = std::sync::OnceLock::new();
@@ -231,6 +232,21 @@ impl CadModule for DrawModule {
cut::tool().into(),
],
},
+ RibbonGroup {
+ title: "Measure",
+ tools: vec![
+ RibbonItem::LargeDropdown {
+ id: "MEASURE_MENU",
+ label: "Measure",
+ icon: dist::ICON,
+ items: vec![
+ ("DIST", "Distance", dist::ICON),
+ ("AREA", "Area", area::ICON),
+ ],
+ default: "DIST",
+ },
+ ],
+ },
// Support group lives on the Start tab now (see view.rs:
// start_page_view). Removed from the Draw ribbon to declutter.
]