diff --git a/src/bonsai/bonsai/bim/module/drawing/operator.py b/src/bonsai/bonsai/bim/module/drawing/operator.py index 85efdada02..33879cd088 100644 --- a/src/bonsai/bonsai/bim/module/drawing/operator.py +++ b/src/bonsai/bonsai/bim/module/drawing/operator.py @@ -1784,7 +1784,10 @@ class AddAnnotation(bpy.types.Operator, tool.Ifc.Operator): drawing=drawing, object_type=object_type, relating_type=tool.Ifc.get().by_id(int(props.relating_type_id)) if props.relating_type_id != "0" else None, - enable_editing=True, + # ELEVATION/SECTION annotations use simple empty/line geometry that + # cannot be tessellated by the IFC geometry engine, so skip IFC + # item edit mode for these types. + enable_editing=object_type not in ("ELEVATION", "SECTION"), ) if props.object_type == "IMAGE": bpy.ops.bim.add_reference_image("INVOKE_DEFAULT", existing_object_by_name=obj.name) diff --git a/src/bonsai/bonsai/bim/module/drawing/workspace.py b/src/bonsai/bonsai/bim/module/drawing/workspace.py index 9b7098417d..4cd615e890 100644 --- a/src/bonsai/bonsai/bim/module/drawing/workspace.py +++ b/src/bonsai/bonsai/bim/module/drawing/workspace.py @@ -223,7 +223,8 @@ class AnnotationToolUI: @classmethod def draw_edit_object_interface(cls, context): - if DecoratorData.get_text_data(bpy.context.active_object): + obj = bpy.context.active_object + if tool.Ifc.get_entity(obj) and DecoratorData.get_text_data(obj): add_layout_hotkey_operator(cls.layout, "Edit Text", "S_E", "") @classmethod diff --git a/src/bonsai/bonsai/tool/drawing.py b/src/bonsai/bonsai/tool/drawing.py index 7b58fa0018..60f860ff2e 100644 --- a/src/bonsai/bonsai/tool/drawing.py +++ b/src/bonsai/bonsai/tool/drawing.py @@ -217,7 +217,8 @@ class Drawing(bonsai.core.tool.Drawing): math.radians(90), 4, "X" ) elif object_type == "SECTION": - obj.matrix_world = Matrix.Translation(bpy.context.scene.cursor.location.copy()) + camera = tool.Ifc.get_object(drawing) + obj.matrix_world = cls.get_default_annotation_matrix(camera) obj = annotation.Annotator.add_line_to_annotation(obj) elif object_type != "TEXT": obj = annotation.Annotator.add_line_to_annotation(obj)