Follow-ups to #1803, #1805 and #1806

- Block Attribute Manager: the error band's dismiss button is the close
  icon, not a "×" glyph the web build may not have.
- Two signatures wrapped to the 100-column limit.
- MCP tool schema digest updated for the new `block_def_dialog` and
  `attman_dialog` actions.
- Measurement docs: MEASUREGEOM's Quick mode.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
Hakan SevenandClaude Opus 5.5 committed 2026-10-15 14:51:47 +03:00
1 parent 7de32c91c2
commit aa3b667110
5 files changed
+17 -5

No files matched your search

+5 -1
View File
@@ -11,7 +11,11 @@ OpenCADStudio provides interactive tools for measuring distances, radii, angles,
| Angle | `MEASUREANGLE` | Measure an angle using three points or two LINE entities. |
| Area | `AREA` | Measure areas and perimeters, including accumulated areas. |
The **Measure** dropdown lists **Distance**, **Radius**, **Angle**, and **Area**, in that order. Each tool can be started from the menu or by entering its command. `MEASUREGEOM` and its `MEA` alias remain available with their four measurement modes.
The **Measure** dropdown lists **Distance**, **Radius**, **Angle**, and **Area**, in that order. Each tool can be started from the menu or by entering its command. `MEASUREGEOM` and its `MEA` alias offer the same four modes plus **Quick**.
### Quick — `MEASUREGEOM` → `Q`
As the cursor moves, the nearest geometry along the working plane's X and Y axes is measured live: cyan measurement lines and a Horizontal/Vertical readout appear by the cursor. A click prints the current readout to the command line and measuring continues; Enter ends the command. Angles where the lines meet slanted geometry are not shown yet.
## Using the measurement tools
+5 -1
View File
@@ -16,7 +16,11 @@ use crate::ui::window::attman_dialog::{
impl OpenCADStudio {
/// Open the dialog on the block of the first preselected attributed
/// reference, else on the first attributed block.
pub(in crate::app) fn open_attman(&mut self, i: usize, preselected: &[Handle]) -> Task<Message> {
pub(in crate::app) fn open_attman(
&mut self,
i: usize,
preselected: &[Handle],
) -> Task<Message> {
let document = &self.tabs[i].scene.document;
let table = BlockTable::of(document);
let model = document
+1 -1
View File
@@ -32,7 +32,7 @@ const MODERN_PROTOCOL_VERSION: &str = "2026-07-28";
///
/// `block_delete` gained its optional `force` parameter.
#[cfg(test)]
const TOOL_SCHEMA_DIGEST: &str = "9a7aeb5e1fd76b94fabece3a7ba213f622f449076fac9c25c7e69592989094fd";
const TOOL_SCHEMA_DIGEST: &str = "b303b4b551a5a00b6b78a8363c9d1c7f199a17367d08bdfe074d453fdf646ac6";
const MAX_REQUEST: usize = 1_048_576;
const MAX_RESPONSE: u64 = 16 * 1024 * 1024;
const CACHE_TTL_MS: u64 = 3_600_000;
+5 -1
View File
@@ -30,7 +30,11 @@ impl crate::command::CadCommand for AttmanPickCommand {
true
}
fn on_entity_pick(&mut self, handle: codec::Handle, _pt: glam::DVec3) -> crate::command::CmdResult {
fn on_entity_pick(
&mut self,
handle: codec::Handle,
_pt: glam::DVec3,
) -> crate::command::CmdResult {
if handle.is_null() {
return crate::command::CmdResult::NeedPoint;
}
+1 -1
View File
@@ -981,7 +981,7 @@ pub fn view<'a>(
15.0
),
text(error.clone()).size(11).width(Fill),
button(text("×").size(12))
button(crate::ui::icons::semantic(crate::ui::icons::CLOSE, 12.0))
.on_press(msg(AttManMsg::DismissError))
.style(button_style(false))
.padding([1, 6]),