forked from 1b-agent/opencadstudio-upstream
- 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 <noreply@anthropic.com>
This commit is contained in:
1 parent
7de32c91c2
commit
aa3b667110
5 files changed
+17
-5
No files matched your search
@@ -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. |
|
| Angle | `MEASUREANGLE` | Measure an angle using three points or two LINE entities. |
|
||||||
| Area | `AREA` | Measure areas and perimeters, including accumulated areas. |
|
| 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
|
## Using the measurement tools
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,11 @@ use crate::ui::window::attman_dialog::{
|
|||||||
impl OpenCADStudio {
|
impl OpenCADStudio {
|
||||||
/// Open the dialog on the block of the first preselected attributed
|
/// Open the dialog on the block of the first preselected attributed
|
||||||
/// reference, else on the first attributed block.
|
/// 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 document = &self.tabs[i].scene.document;
|
||||||
let table = BlockTable::of(document);
|
let table = BlockTable::of(document);
|
||||||
let model = document
|
let model = document
|
||||||
|
|||||||
+1
-1
@@ -32,7 +32,7 @@ const MODERN_PROTOCOL_VERSION: &str = "2026-07-28";
|
|||||||
///
|
///
|
||||||
/// `block_delete` gained its optional `force` parameter.
|
/// `block_delete` gained its optional `force` parameter.
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
const TOOL_SCHEMA_DIGEST: &str = "9a7aeb5e1fd76b94fabece3a7ba213f622f449076fac9c25c7e69592989094fd";
|
const TOOL_SCHEMA_DIGEST: &str = "b303b4b551a5a00b6b78a8363c9d1c7f199a17367d08bdfe074d453fdf646ac6";
|
||||||
const MAX_REQUEST: usize = 1_048_576;
|
const MAX_REQUEST: usize = 1_048_576;
|
||||||
const MAX_RESPONSE: u64 = 16 * 1024 * 1024;
|
const MAX_RESPONSE: u64 = 16 * 1024 * 1024;
|
||||||
const CACHE_TTL_MS: u64 = 3_600_000;
|
const CACHE_TTL_MS: u64 = 3_600_000;
|
||||||
|
|||||||
@@ -30,7 +30,11 @@ impl crate::command::CadCommand for AttmanPickCommand {
|
|||||||
true
|
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() {
|
if handle.is_null() {
|
||||||
return crate::command::CmdResult::NeedPoint;
|
return crate::command::CmdResult::NeedPoint;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -981,7 +981,7 @@ pub fn view<'a>(
|
|||||||
15.0
|
15.0
|
||||||
),
|
),
|
||||||
text(error.clone()).size(11).width(Fill),
|
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))
|
.on_press(msg(AttManMsg::DismissError))
|
||||||
.style(button_style(false))
|
.style(button_style(false))
|
||||||
.padding([1, 6]),
|
.padding([1, 6]),
|
||||||
|
|||||||
Reference in new issue
Block a user