From 03a23958a3bfc885ad6ad06e68c24ee187a4336f Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Thu, 26 Mar 2020 21:44:54 +1100 Subject: [PATCH] Store scale and view title in views on sheets, so it can be post-processed --- src/ifcblenderexport/blenderbim/cut_ifc.py | 4 +++- src/ifcblenderexport/blenderbim/operator.py | 4 ++++ src/ifcblenderexport/blenderbim/prop.py | 2 ++ src/ifcblenderexport/blenderbim/sheeter.py | 5 +++++ src/ifcblenderexport/blenderbim/ui.py | 3 +++ 5 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/ifcblenderexport/blenderbim/cut_ifc.py b/src/ifcblenderexport/blenderbim/cut_ifc.py index 9b4d2da1be..1244d47e62 100644 --- a/src/ifcblenderexport/blenderbim/cut_ifc.py +++ b/src/ifcblenderexport/blenderbim/cut_ifc.py @@ -669,6 +669,7 @@ class External(svgwrite.container.Group): class SvgWriter(): def __init__(self, ifc_cutter): self.ifc_cutter = ifc_cutter + self.human_scale = 'NTS' self.scale = 1 / 100 # 1:100 def write(self): @@ -683,7 +684,8 @@ class SvgWriter(): debug=False, size=('{}mm'.format(self.width), '{}mm'.format(self.height)), viewBox=('0 0 {} {}'.format(self.width, self.height)), - id='root' + id='root', + data_scale=self.human_scale ) self.add_stylesheet() diff --git a/src/ifcblenderexport/blenderbim/operator.py b/src/ifcblenderexport/blenderbim/operator.py index c225967677..c61aa4a90b 100644 --- a/src/ifcblenderexport/blenderbim/operator.py +++ b/src/ifcblenderexport/blenderbim/operator.py @@ -1349,6 +1349,10 @@ class CutSection(bpy.types.Operator): ifc_cutter.should_recut = bpy.context.scene.DocProperties.should_recut svg_writer = cut_ifc.SvgWriter(ifc_cutter) numerator, denominator = camera.data.BIMCameraProperties.diagram_scale.split(':') + if camera.data.BIMCameraProperties.is_nts: + svg_writer.human_scale = 'NTS' + else: + svg_writer.human_scale = camera.data.BIMCameraProperties.diagram_scale svg_writer.scale = float(numerator) / float(denominator) ifc_cutter.cut() svg_writer.write() diff --git a/src/ifcblenderexport/blenderbim/prop.py b/src/ifcblenderexport/blenderbim/prop.py index 4daa150cf4..9adf2db430 100644 --- a/src/ifcblenderexport/blenderbim/prop.py +++ b/src/ifcblenderexport/blenderbim/prop.py @@ -350,6 +350,7 @@ def refreshSheets(self, context): sheets_enum.clear() getSheets(self, context) + def getSheets(self, context): global sheets_enum if len(sheets_enum) < 1: @@ -376,6 +377,7 @@ class DocProperties(PropertyGroup): class BIMCameraProperties(PropertyGroup): view_name: StringProperty(name="View Name") diagram_scale: EnumProperty(items=getDiagramScales, name='Diagram Scale') + is_nts: BoolProperty(name='Is NTS') class BcfTopic(PropertyGroup): diff --git a/src/ifcblenderexport/blenderbim/sheeter.py b/src/ifcblenderexport/blenderbim/sheeter.py index ca9491f424..61a7aebc60 100644 --- a/src/ifcblenderexport/blenderbim/sheeter.py +++ b/src/ifcblenderexport/blenderbim/sheeter.py @@ -61,6 +61,11 @@ class SheetBuilder: foreground.attrib['width'] = view_root.attrib.get('width') foreground.attrib['height'] = view_root.attrib.get('height') + title = ET.SubElement(view, 'image') + title.attrib['xlink:href'] = '../templates/view-title.svg' + title.attrib['x'] = '0' + title.attrib['y'] = view_root.attrib.get('height') + sheet_tree.write(sheet_path) def build(self): diff --git a/src/ifcblenderexport/blenderbim/ui.py b/src/ifcblenderexport/blenderbim/ui.py index bb2fa2c52b..fc1d8a68df 100644 --- a/src/ifcblenderexport/blenderbim/ui.py +++ b/src/ifcblenderexport/blenderbim/ui.py @@ -350,6 +350,9 @@ class BIM_PT_camera(Panel): row = layout.row() row.prop(dprops, 'should_recut') + row = layout.row() + row.prop(props, 'is_nts') + row = layout.row(align=True) row.prop(props, 'diagram_scale', text='') row.operator('bim.cut_section')