forked from 1b-agent/opencadstudio-upstream
feat: REFEDIT / REFCLOSE — in-place block reference editing
REFEDIT picks an INSERT, extracts the block entities into model space with the INSERT transform applied (translate + rotate + uniform scale), and enters an editing session. Any normal modify command works on the temporary entities. REFCLOSE SAVE applies the inverse transform, replaces the block definition, and rebuilds all derived caches (hatch/image/mesh), so every INSERT of that block reflects the edits immediately. REFCLOSE DISCARD removes the temp entities without changing the block. Non-uniform-scale inserts are rejected with an error message. RefEditSession is stored on DocumentTab; undo snapshots bracket the begin and close operations. Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
This commit is contained in:
1 parent
42048362e2
commit
a773a1a1f1
6 files changed
+442
-2
No files matched your search
@@ -1600,6 +1600,14 @@ impl Scene {
|
||||
}
|
||||
}
|
||||
|
||||
/// Rebuild hatch / image / mesh caches after the document is modified
|
||||
/// outside the normal `add_entity` path (e.g. REFCLOSE SAVE).
|
||||
pub fn rebuild_derived_caches(&mut self) {
|
||||
self.populate_hatches_from_document();
|
||||
self.populate_images_from_document();
|
||||
self.populate_meshes_from_document();
|
||||
}
|
||||
|
||||
/// Build a solid-fill HatchModel for a DXF Solid entity.
|
||||
/// DXF SOLID corners are in "Z-order": p0-p1 top, p2-p3 bottom.
|
||||
/// Visual quad is p0→p1→p3→p2 (closed).
|
||||
|
||||
Reference in new issue
Block a user