forked from 1b-agent/opencadstudio-upstream
fix(blocks): one base point convention for creation, redefine, insert, explode, XCLIP and REFEDIT
world = insert_point + Rot * Scale * (P - base_point). Attribute placement, EXPLODE, XCLIP storage, REFEDIT's working copy, the UCS reframe of attributes and the dynamic-block visibility grip ignored the base point and were offset by Rot*Scale*base. They now share insert_transform_with_base. Creation stores a ZERO base and redefine resets it; a no-op redefine moves nothing; the Block Definition dialog prefills the base from the definition. XCLIP filters stored by older builds keep their old displacement.
This commit is contained in:
1 parent
a456367b26
commit
5dfa41c032
17 files changed
+1447
-19
No files matched your search
@@ -2269,8 +2269,8 @@ impl OpenCADStudio {
|
||||
let host = self.tabs[i].scene.document.header.insertion_units;
|
||||
let k = crate::app::properties::insert_unit_scale(host, units).unwrap_or(1.0);
|
||||
let mut insert = codec::entities::Insert::new(name.to_string(), at).with_scale(k, k, k);
|
||||
let transform = insert.get_transform();
|
||||
let doc = &self.tabs[i].scene.document;
|
||||
let transform = crate::scene::render_graph::insert_transform(doc, &insert);
|
||||
let attdefs: Vec<codec::entities::AttributeDefinition> = doc
|
||||
.block_records
|
||||
.get(name)
|
||||
|
||||
Reference in new issue
Block a user