From d5e6721ac46a0375ed5a806dcdcad5cc300715bf Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Fri, 11 Dec 2020 11:13:48 +1100 Subject: [PATCH] Minor fix to support multiple dimension objects for decorations. See #1150. --- src/ifcblenderexport/blenderbim/bim/decoration.py | 13 +++++++------ src/ifcblenderexport/blenderbim/bim/prop.py | 6 +++--- src/ifcblenderexport/blenderbim/bim/ui.py | 2 +- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/ifcblenderexport/blenderbim/bim/decoration.py b/src/ifcblenderexport/blenderbim/bim/decoration.py index be7ab835fd..f7830afa26 100644 --- a/src/ifcblenderexport/blenderbim/bim/decoration.py +++ b/src/ifcblenderexport/blenderbim/bim/decoration.py @@ -135,12 +135,12 @@ class DimensionDecorator(ViewDecorator): return drawing = self.props.drawings[self.props.active_drawing_index] collection = bpy.data.collections.get("IfcGroup/" + drawing.name) - # get curve object - if 'IfcAnnotation/Dimension' not in collection.all_objects: - return - curve = collection.all_objects['IfcAnnotation/Dimension'] - segments = list(self.iter_segments(curve)) + curves = [o for o in collection.objects if "IfcAnnotation/Dimension" in o.name] + segments = [] + for curve in curves: + segments.extend(list(self.iter_segments(curve))) + self.draw_arrows(segments) for segm in segments: self.draw_label(segm) @@ -150,7 +150,8 @@ class DimensionDecorator(ViewDecorator): (v0, v1, length) """ for spline in curve.data.splines: - points = [curve.matrix_world @ p.co for p in spline.points] + spline_points = spline.bezier_points if spline.bezier_points else spline.points + points = [curve.matrix_world @ p.co for p in spline_points] for i in range(len(points)-1): p0 = points[i] p1 = points[i+1] diff --git a/src/ifcblenderexport/blenderbim/bim/prop.py b/src/ifcblenderexport/blenderbim/bim/prop.py index 6985fa0fa8..877ba07354 100644 --- a/src/ifcblenderexport/blenderbim/bim/prop.py +++ b/src/ifcblenderexport/blenderbim/bim/prop.py @@ -358,8 +358,8 @@ def refreshTitleblocks(self, context): getTitleblocks(self, context) -def toggleDimDecorations(self, context): - toggle = self.dim_decorations +def toggleDecorations(self, context): + toggle = self.should_draw_decorations if toggle: decoration.DimensionDecorator.install(self, context) else: @@ -677,7 +677,7 @@ class DocProperties(PropertyGroup): active_sheet_index: IntProperty(name="Active Sheet Index") ifc_files: CollectionProperty(name="IFCs", type=StrProperty) drawing_styles: CollectionProperty(name="Drawing Styles", type=DrawingStyle) - dim_decorations: BoolProperty(name="Decorate dimentions", update=toggleDimDecorations) + should_draw_decorations: BoolProperty(name="Should Draw Decorations", update=toggleDecorations) class BIMCameraProperties(PropertyGroup): diff --git a/src/ifcblenderexport/blenderbim/bim/ui.py b/src/ifcblenderexport/blenderbim/bim/ui.py index 08b4f36d2d..3b3bbd7cfc 100644 --- a/src/ifcblenderexport/blenderbim/bim/ui.py +++ b/src/ifcblenderexport/blenderbim/bim/ui.py @@ -2353,7 +2353,7 @@ class BIM_PT_annotation_utilities(Panel): layout.template_list("BIM_UL_generic", "", props, "drawings", props, "active_drawing_index") row = layout.row() - row.prop(props, 'dim_decorations') + row.prop(props, "should_draw_decorations") class BIM_PT_qto_utilities(Panel):