diff --git a/src/ifcblenderexport/blenderbim/bim/cut_ifc.py b/src/ifcblenderexport/blenderbim/bim/cut_ifc.py index 929a25f88c..1d6a94ac30 100644 --- a/src/ifcblenderexport/blenderbim/bim/cut_ifc.py +++ b/src/ifcblenderexport/blenderbim/bim/cut_ifc.py @@ -714,6 +714,7 @@ class SvgWriter(): self.add_stylesheet() self.add_markers() + self.add_symbols() self.add_patterns() self.draw_background_image() self.draw_background_elements() @@ -740,6 +741,12 @@ class SvgWriter(): for child in root.getchildren(): self.svg.defs.add(External(child)) + def add_symbols(self): + tree = ET.parse('{}templates/symbols.svg'.format(self.ifc_cutter.data_dir)) + root = tree.getroot() + for child in root.getchildren(): + self.svg.defs.add(External(child)) + def add_patterns(self): return tree = ET.parse('{}templates/patterns.svg'.format(self.ifc_cutter.data_dir)) @@ -906,11 +913,23 @@ class SvgWriter(): 'dominant-baseline': 'middle' })) + self.draw_text_annotations() + + def draw_text_annotations(self): + x_offset = self.raw_width / 2 + y_offset = self.raw_height / 2 + for text_obj in self.ifc_cutter.text_objs: loc, rot, scale = self.ifc_cutter.camera_obj.matrix_world.decompose() pos = (text_obj.location - self.ifc_cutter.camera_obj.location) @ rot.to_matrix() text_position = Vector(((x_offset + pos.x), (y_offset - pos.y))) + if text_obj.data.BIMTextProperties.symbol != 'None': + self.svg.add(self.svg.use( + '#{}'.format(text_obj.data.BIMTextProperties.symbol), + insert=tuple(text_position * self.scale) + )) + if text_obj.data.align_x == 'CENTER': text_anchor = 'middle' elif text_obj.data.align_x == 'RIGHT': diff --git a/src/ifcblenderexport/blenderbim/bim/data/templates/markers.svg b/src/ifcblenderexport/blenderbim/bim/data/templates/markers.svg index c3477a77d8..02e3cd6473 100644 --- a/src/ifcblenderexport/blenderbim/bim/data/templates/markers.svg +++ b/src/ifcblenderexport/blenderbim/bim/data/templates/markers.svg @@ -26,8 +26,8 @@ - - + + diff --git a/src/ifcblenderexport/blenderbim/bim/data/templates/symbols.svg b/src/ifcblenderexport/blenderbim/bim/data/templates/symbols.svg new file mode 100644 index 0000000000..60a3a1283e --- /dev/null +++ b/src/ifcblenderexport/blenderbim/bim/data/templates/symbols.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/ifcblenderexport/blenderbim/bim/prop.py b/src/ifcblenderexport/blenderbim/bim/prop.py index 4e866d64ea..e600141f90 100644 --- a/src/ifcblenderexport/blenderbim/bim/prop.py +++ b/src/ifcblenderexport/blenderbim/bim/prop.py @@ -404,6 +404,10 @@ class BIMTextProperties(PropertyGroup): ('5.0', '5.0', ''), ('7.0', '7.0', ''), ], update=refreshFontSize, name='Font Size') + symbol: EnumProperty(items=[ + ('None', 'None', ''), + ('rectangle-tag', 'Rectangle Tag', ''), + ], update=refreshFontSize, name='Symbol') class DocumentInformation(PropertyGroup): diff --git a/src/ifcblenderexport/blenderbim/bim/ui.py b/src/ifcblenderexport/blenderbim/bim/ui.py index 6c004bb7e0..c57361a46f 100644 --- a/src/ifcblenderexport/blenderbim/bim/ui.py +++ b/src/ifcblenderexport/blenderbim/bim/ui.py @@ -660,6 +660,9 @@ class BIM_PT_text(Panel): row = layout.row() row.prop(props, 'font_size') + row = layout.row() + row.prop(props, 'symbol') + class BIM_PT_owner(Panel): bl_label = "Owner History"