From b72b23741e1803dbdde3594a6d3c5030ae5d0516 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Thu, 14 Mar 2024 16:20:33 +0500 Subject: [PATCH] common method for getting annotation symbol --- src/blenderbim/blenderbim/bim/module/drawing/data.py | 2 +- .../blenderbim/bim/module/drawing/svgwriter.py | 10 ++-------- src/blenderbim/blenderbim/tool/drawing.py | 8 ++++++-- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/drawing/data.py b/src/blenderbim/blenderbim/bim/module/drawing/data.py index 7e77fac279..b733ceefbc 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/data.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/data.py @@ -320,7 +320,7 @@ class DecoratorData: font_size = FONT_SIZES[font_size_type] # get symbol - symbol = pset_data.get("Symbol", None) + symbol = tool.Drawing.get_annotation_symbol(element) # other attributes props_literals = props.literals diff --git a/src/blenderbim/blenderbim/bim/module/drawing/svgwriter.py b/src/blenderbim/blenderbim/bim/module/drawing/svgwriter.py index 08d195beae..736d8efbe5 100644 --- a/src/blenderbim/blenderbim/bim/module/drawing/svgwriter.py +++ b/src/blenderbim/blenderbim/bim/module/drawing/svgwriter.py @@ -864,10 +864,7 @@ class SvgWriter: point = self.project_point_onto_camera(obj.matrix_world.translation) element = tool.Ifc.get_entity(obj) - svg_id = ifcopenshell.util.element.get_pset(element, "EPset_Annotation", "Symbol") - if not svg_id: - # EPset_AnnotationSurveyArea is not standard! See bSI-4.3 proposal #660. - svg_id = ifcopenshell.util.element.get_pset(element, "EPset_AnnotationSurveyArea", "PointType") + svg_id = tool.Drawing.get_annotation_symbol(element) if not svg_id: svg_id = str(ifcopenshell.util.element.get_predefined_type(element)) if not svg_id: @@ -913,10 +910,7 @@ class SvgWriter: projected_points = [self.project_point_onto_camera(matrix_world @ v.co) for v in obj.data.vertices] element = tool.Ifc.get_entity(obj) - svg_id = ifcopenshell.util.element.get_pset(element, "EPset_Annotation", "Symbol") - if not svg_id: - # EPset_AnnotationSurveyArea is not standard! See bSI-4.3 proposal #660. - svg_id = ifcopenshell.util.element.get_pset(element, "EPset_AnnotationSurveyArea", "PointType") + svg_id = tool.Drawing.get_annotation_symbol(element) if not svg_id: svg_id = str(ifcopenshell.util.element.get_predefined_type(element)) if not svg_id: diff --git a/src/blenderbim/blenderbim/tool/drawing.py b/src/blenderbim/blenderbim/tool/drawing.py index bed5bdd6cf..f2b3a36f33 100644 --- a/src/blenderbim/blenderbim/tool/drawing.py +++ b/src/blenderbim/blenderbim/tool/drawing.py @@ -1520,8 +1520,12 @@ class Drawing(blenderbim.core.tool.Drawing): return ifcopenshell.util.element.get_pset(drawing, "EPset_Annotation", "ZIndex") or 0 @classmethod - def get_annotation_symbol(cls, drawing: ifcopenshell.entity_instance) -> Union[str, None]: - return ifcopenshell.util.element.get_pset(drawing, "EPset_Annotation", "Symbol") + def get_annotation_symbol(cls, element: ifcopenshell.entity_instance) -> Union[str, None]: + symbol = ifcopenshell.util.element.get_pset(element, "EPset_Annotation", "Symbol") + if not symbol: + # EPset_AnnotationSurveyArea is not standard! See bSI-4.3 proposal #660. + symbol = ifcopenshell.util.element.get_pset(element, "EPset_AnnotationSurveyArea", "PointType") + return symbol @classmethod def has_linework(cls, drawing):