mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-09 09:21:46 +00:00
bc1fb2a88d
* Bonsai: move annotations between drawings when reassigning their group Assigning an IfcAnnotation to a group that represents another drawing previously left the annotation in both drawings at once: it stayed in its old drawing group, its Blender object stayed in the old drawing collection, and it kept the old camera depth, so the reassignment appeared to do nothing useful. Issue #2966 documents the seven step manual workaround users needed instead. The assign group operator now detects when the target group represents a drawing (via the new tool.Drawing.get_group_drawing, the inverse of get_drawing_group), unassigns the annotation from its previous drawing group, moves its object into the new drawing collection, and places it on the new drawing camera plane. The target camera is imported on demand when it has not been loaded yet, matching the pattern used by the activate drawing operator. Generated with the assistance of an AI coding tool. * Bonsai: add one click copy of annotations to another drawing (#2966) Duplicating an annotation into a different drawing used to require a seven step manual process: loading groups in scene properties, copying the object, fixing its group assignment by hand, and repositioning it onto the target camera plane. A plain Blender duplicate is not enough because the copy keeps pointing at the same IFC entity, and the Shift D override, while it does create a genuine new entity through root.copy_class, leaves the duplicate in the source drawing group, collection, and camera depth. The new copy annotation to drawing operator packages the proven recipe already used by duplicate drawing into one action: duplicate through tool.Geometry.duplicate_ifc_objects, unassign the copy from the source drawing group, assign it to the chosen target group, place it on the target camera plane at the same world XY, and file it into the target drawing collection. The originals are left untouched and the user's selection is restored. The target camera is imported on demand when it has not been loaded yet. The operator shows a target drawing dropdown and is reachable from the annotation tool sidebar when an annotation is selected, and from the drawings panel. Annotations already in the target drawing are skipped and reported. The orchestration lives in core.drawing.copy_annotations_to_drawing with prophecy tests covering the copy, the skip, and the camera import branches. Verified live in headless Blender 5.1: the copy is a new IfcAnnotation with its own GlobalId and IfcTextLiteral, both texts are editable independently, and everything survives save and reload with each annotation loading in its own drawing. Generated with the assistance of an AI coding tool.