mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-28 19:27:10 +00:00
Fix #986. Text IfcAnnotation now stores classes and metadata like all IFC objects in SVG.
This commit is contained in:
@@ -5,6 +5,7 @@ import math
|
|||||||
import pystache
|
import pystache
|
||||||
import xml.etree.ElementTree as ET
|
import xml.etree.ElementTree as ET
|
||||||
import svgwrite
|
import svgwrite
|
||||||
|
import ifcopenshell
|
||||||
from . import annotation
|
from . import annotation
|
||||||
from mathutils import Vector
|
from mathutils import Vector
|
||||||
from mathutils import geometry
|
from mathutils import geometry
|
||||||
@@ -289,7 +290,18 @@ class SvgWriter():
|
|||||||
path = self.svg.add(self.svg.path(d=d, class_=' '.join(classes)))
|
path = self.svg.add(self.svg.path(d=d, class_=' '.join(classes)))
|
||||||
|
|
||||||
def get_attribute_classes(self, obj):
|
def get_attribute_classes(self, obj):
|
||||||
classes = []
|
classes = [obj.name.split('/')[0]]
|
||||||
|
for slot in obj.material_slots:
|
||||||
|
if slot.material:
|
||||||
|
classes.append('material-{}'.format(
|
||||||
|
re.sub('[^0-9a-zA-Z]+', '', slot.material.name)
|
||||||
|
))
|
||||||
|
result = obj.BIMObjectProperties.attributes.get('GlobalId')
|
||||||
|
if not result:
|
||||||
|
result = obj.BIMObjectProperties.attributes.add()
|
||||||
|
result.name = 'GlobalId'
|
||||||
|
result.string_value = ifcopenshell.guid.new()
|
||||||
|
classes.append('globalid-{}'.format(result.string_value))
|
||||||
for attribute in self.ifc_cutter.attributes:
|
for attribute in self.ifc_cutter.attributes:
|
||||||
result = self.get_obj_value(obj, attribute)
|
result = self.get_obj_value(obj, attribute)
|
||||||
if result:
|
if result:
|
||||||
@@ -409,6 +421,7 @@ class SvgWriter():
|
|||||||
self.svg.add(self.svg.text(
|
self.svg.add(self.svg.text(
|
||||||
text_line,
|
text_line,
|
||||||
insert=tuple((text_position * self.scale) + Vector((0, 3.5*line_number))),
|
insert=tuple((text_position * self.scale) + Vector((0, 3.5*line_number))),
|
||||||
|
class_=' '.join(self.get_attribute_classes(text_obj)),
|
||||||
**{
|
**{
|
||||||
'font-size': annotation.Annotator.get_svg_text_size(text_obj.data.BIMTextProperties.font_size),
|
'font-size': annotation.Annotator.get_svg_text_size(text_obj.data.BIMTextProperties.font_size),
|
||||||
'font-family': 'OpenGost Type B TT',
|
'font-family': 'OpenGost Type B TT',
|
||||||
|
|||||||
Reference in New Issue
Block a user