forked from 1b-agent/opencadstudio-upstream
fix(dimension): complete ordinate workflow
This commit is contained in:
commit
968ee3fda4
29 files changed
+504
-112
No files matched your search
@@ -1279,6 +1279,12 @@ impl OpenCADStudio {
|
||||
.document
|
||||
.header
|
||||
.dimension_associativity;
|
||||
let single_source_dimension = matches!(
|
||||
&entity,
|
||||
acadrust::EntityType::Dimension(
|
||||
acadrust::entities::Dimension::Ordinate(_)
|
||||
)
|
||||
);
|
||||
let pending = if association_mode == 0 {
|
||||
let layer = self.tabs[i].active_layer.clone();
|
||||
if layer != "0" || entity.as_entity().layer().is_empty() {
|
||||
@@ -1339,7 +1345,13 @@ impl OpenCADStudio {
|
||||
.into_iter()
|
||||
.collect()
|
||||
},
|
||||
|source| vec![Some(source), Some(source)],
|
||||
|source| {
|
||||
if single_source_dimension {
|
||||
vec![Some(source)]
|
||||
} else {
|
||||
vec![Some(source), Some(source)]
|
||||
}
|
||||
},
|
||||
);
|
||||
self.tabs[i]
|
||||
.scene
|
||||
@@ -3117,7 +3129,6 @@ impl OpenCADStudio {
|
||||
stretched |= mv(&mut d.definition_point);
|
||||
}
|
||||
Dimension::Ordinate(d) => {
|
||||
stretched |= mv(&mut d.definition_point);
|
||||
stretched |= mv(&mut d.feature_location);
|
||||
stretched |= mv(&mut d.leader_endpoint);
|
||||
}
|
||||
|
||||
@@ -1179,11 +1179,14 @@ pub(super) fn on_tab_close(&mut self, idx: usize) -> Task<Message> {
|
||||
.zip(self.tabs[i].selected_grips.iter())
|
||||
.find(|(owner, g)| **owner == popup.handle && g.id == popup.grip_id)
|
||||
{
|
||||
// "Move with Leader" drags the whole multileader; the
|
||||
// others move just the picked grip.
|
||||
// Only multileaders use the whole-object grip.
|
||||
let is_multileader = matches!(
|
||||
self.tabs[i].scene.document.get_entity(popup.handle),
|
||||
Some(acadrust::EntityType::MultiLeader(_))
|
||||
);
|
||||
let (grip_id, is_translate) =
|
||||
if matches!(item.action, GripMenuAction::MoveWithLeader)
|
||||
&& !is_dimension
|
||||
&& is_multileader
|
||||
{
|
||||
(crate::entities::multileader::MOVE_ALL_GRIP, true)
|
||||
} else {
|
||||
|
||||
Reference in new issue
Block a user