diff --git a/src/ifcblenderexport/blenderbim/bim/data/sheets/.gitkeep b/src/ifcblenderexport/blenderbim/bim/data/sheets/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/src/ifcblenderexport/blenderbim/bim/data/sheets/SHEET.svg b/src/ifcblenderexport/blenderbim/bim/data/sheets/SHEET.svg
deleted file mode 100644
index 1650be34e7..0000000000
--- a/src/ifcblenderexport/blenderbim/bim/data/sheets/SHEET.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
diff --git a/src/ifcblenderexport/blenderbim/bim/data/templates/titleblock.svg b/src/ifcblenderexport/blenderbim/bim/data/templates/titleblocks/A1.svg
similarity index 100%
rename from src/ifcblenderexport/blenderbim/bim/data/templates/titleblock.svg
rename to src/ifcblenderexport/blenderbim/bim/data/templates/titleblocks/A1.svg
diff --git a/src/ifcblenderexport/blenderbim/bim/data/templates/titleblocks/A2.svg b/src/ifcblenderexport/blenderbim/bim/data/templates/titleblocks/A2.svg
new file mode 100644
index 0000000000..f450a15cfb
--- /dev/null
+++ b/src/ifcblenderexport/blenderbim/bim/data/templates/titleblocks/A2.svg
@@ -0,0 +1,203 @@
+
+
diff --git a/src/ifcblenderexport/blenderbim/bim/data/templates/titleblocks/A3.svg b/src/ifcblenderexport/blenderbim/bim/data/templates/titleblocks/A3.svg
new file mode 100644
index 0000000000..0f570cc865
--- /dev/null
+++ b/src/ifcblenderexport/blenderbim/bim/data/templates/titleblocks/A3.svg
@@ -0,0 +1,207 @@
+
+
diff --git a/src/ifcblenderexport/blenderbim/bim/operator.py b/src/ifcblenderexport/blenderbim/bim/operator.py
index 0ef10c6478..f9e34c5eb3 100644
--- a/src/ifcblenderexport/blenderbim/bim/operator.py
+++ b/src/ifcblenderexport/blenderbim/bim/operator.py
@@ -2221,7 +2221,7 @@ class AddSheet(bpy.types.Operator):
new.name = '{} - SHEET'.format(len(bpy.context.scene.DocProperties.sheets))
sheet_builder = sheeter.SheetBuilder()
sheet_builder.data_dir = bpy.context.scene.BIMProperties.data_dir
- sheet_builder.create(new.name)
+ sheet_builder.create(new.name, bpy.context.scene.DocProperties.titleblock)
return {'FINISHED'}
diff --git a/src/ifcblenderexport/blenderbim/bim/prop.py b/src/ifcblenderexport/blenderbim/bim/prop.py
index eeaad15ca9..18d888450e 100644
--- a/src/ifcblenderexport/blenderbim/bim/prop.py
+++ b/src/ifcblenderexport/blenderbim/bim/prop.py
@@ -32,6 +32,7 @@ types_enum = []
availablematerialpsets_enum = []
ifcpatchrecipes_enum = []
featuresfiles_enum = []
+titleblocks_enum = []
scenarios_enum = []
psetnames_enum = []
psetfiles_enum = []
@@ -291,6 +292,22 @@ def refreshFeaturesFiles(self, context):
getFeaturesFiles(self, context)
+def getTitleblocks(self, context):
+ global titleblocks_enum
+ if len(titleblocks_enum) < 1:
+ titleblocks_enum.clear()
+ for filename in Path(os.path.join(context.scene.BIMProperties.data_dir, 'templates', 'titleblocks')).glob('*.svg'):
+ f = str(filename.stem)
+ titleblocks_enum.append((f, f, ''))
+ return titleblocks_enum
+
+
+def refreshTitleblocks(self, context):
+ global titleblocks_enum
+ titleblocks_enum.clear()
+ getTitleblocks(self, context)
+
+
def getScenarios(self, context):
global scenarios_enum
if len(scenarios_enum) < 1:
@@ -515,6 +532,7 @@ class DocProperties(PropertyGroup):
active_drawing_index: IntProperty(name='Active Drawing Index')
schedules: CollectionProperty(name='Schedules', type=Schedule)
active_schedule_index: IntProperty(name='Active Schedule Index')
+ titleblock: EnumProperty(items=getTitleblocks, name="Titleblock", update=refreshTitleblocks)
sheets: CollectionProperty(name='Sheets', type=Sheet)
active_sheet_index: IntProperty(name='Active Sheet Index')
ifc_files: CollectionProperty(name='IFCs', type=StrProperty)
diff --git a/src/ifcblenderexport/blenderbim/bim/sheeter.py b/src/ifcblenderexport/blenderbim/bim/sheeter.py
index 7fffcd9a76..b1439fcb93 100644
--- a/src/ifcblenderexport/blenderbim/bim/sheeter.py
+++ b/src/ifcblenderexport/blenderbim/bim/sheeter.py
@@ -11,25 +11,30 @@ class SheetBuilder:
self.data_dir = None
self.scale = 'NTS'
- def create(self, name):
+ def create(self, name, titleblock_name):
sheet_path = '{}sheets/{}.svg'.format(self.data_dir, name)
root = ET.Element('svg')
root.attrib['xmlns'] = 'http://www.w3.org/2000/svg'
root.attrib['xmlns:xlink'] = 'http://www.w3.org/1999/xlink'
root.attrib['id'] = 'root'
root.attrib['version'] = '1.1'
- root.attrib['width'] = '841mm'
- root.attrib['height'] = '594mm'
- root.attrib['viewBox'] = '0 0 841 594'
+ view_root = ET.parse(
+ os.path.join(self.data_dir, 'templates', 'titleblocks', titleblock_name + '.svg')).getroot()
+ view_width = self.convert_to_mm(view_root.attrib.get('width'))
+ view_height = self.convert_to_mm(view_root.attrib.get('height'))
view = ET.SubElement(root, 'g')
view.attrib['data-type'] = 'titleblock'
titleblock = ET.SubElement(view, 'image')
- titleblock.attrib['xlink:href'] = '../templates/titleblock.svg'
+ titleblock.attrib['xlink:href'] = '../templates/titleblocks/' + titleblock_name + '.svg'
titleblock.attrib['x'] = '0'
titleblock.attrib['y'] = '0'
- titleblock.attrib['width'] = '841'
- titleblock.attrib['height'] = '594'
+ titleblock.attrib['width'] = str(view_width)
+ titleblock.attrib['height'] = str(view_height)
+
+ root.attrib['width'] = '{}mm'.format(view_width)
+ root.attrib['height'] = '{}mm'.format(view_height)
+ root.attrib['viewBox'] = '0 0 {} {}'.format(view_width, view_height)
with open(sheet_path, 'w') as f:
f.write(minidom.parseString(ET.tostring(root)).toprettyxml(indent=' '))
diff --git a/src/ifcblenderexport/blenderbim/bim/ui.py b/src/ifcblenderexport/blenderbim/bim/ui.py
index b0fac99466..54e4d94c29 100644
--- a/src/ifcblenderexport/blenderbim/bim/ui.py
+++ b/src/ifcblenderexport/blenderbim/bim/ui.py
@@ -785,10 +785,10 @@ class BIM_PT_sheets(Panel):
def draw(self, context):
layout = self.layout
- layout.use_property_split = True
props = bpy.context.scene.DocProperties
row = layout.row(align=True)
+ row.prop(props, 'titleblock', text='')
row.operator('bim.add_sheet')
if props.sheets: