From 78d33b4ffd14d47d209c67a4106e94e663e56e82 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Mon, 17 Aug 2020 21:12:31 +1000 Subject: [PATCH] Support converting drawings to PDF on the fly --- src/ifcblenderexport/blenderbim/bim/operator.py | 15 ++++++++++++++- src/ifcblenderexport/blenderbim/bim/ui.py | 5 +++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/ifcblenderexport/blenderbim/bim/operator.py b/src/ifcblenderexport/blenderbim/bim/operator.py index 03b47a91a5..a254527779 100644 --- a/src/ifcblenderexport/blenderbim/bim/operator.py +++ b/src/ifcblenderexport/blenderbim/bim/operator.py @@ -2227,9 +2227,22 @@ class CreateSheets(bpy.types.Operator): def execute(self, context): props = bpy.context.scene.DocProperties + name = props.sheets[props.active_sheet_index].name sheet_builder = sheeter.SheetBuilder() sheet_builder.data_dir = bpy.context.scene.BIMProperties.data_dir - sheet_builder.build(props.sheets[props.active_sheet_index].name) + sheet_builder.build(name) + svg2pdf_command = bpy.context.preferences.addons['blenderbim'].preferences.svg2pdf_command + if not svg2pdf_command: + webbrowser.open('file://' + os.path.join(bpy.context.scene.BIMProperties.data_dir, 'build', name, name + '.svg')) + return {'FINISHED'} + import subprocess + path = os.path.join(bpy.context.scene.BIMProperties.data_dir, 'build', name) + svg = os.path.join(path, name + '.svg') + pdf = os.path.join(path, name + '.pdf') + # With great power comes great responsibility. Example: + # ['inkscape', svg, '-o', pdf] + subprocess.run(eval(svg2pdf_command)) + webbrowser.open('file://' + os.path.join(pdf)) return {'FINISHED'} diff --git a/src/ifcblenderexport/blenderbim/bim/ui.py b/src/ifcblenderexport/blenderbim/bim/ui.py index a7a8bffc3d..56d80f75ac 100644 --- a/src/ifcblenderexport/blenderbim/bim/ui.py +++ b/src/ifcblenderexport/blenderbim/bim/ui.py @@ -1,5 +1,7 @@ import bpy from bpy.types import Panel +from bpy.props import StringProperty + class BIM_PT_object(Panel): bl_label = 'IFC Object' @@ -1777,6 +1779,7 @@ class BIM_UL_representation_items(bpy.types.UIList): class BIM_ADDON_preferences(bpy.types.AddonPreferences): bl_idname = 'blenderbim' + svg2pdf_command: StringProperty(name="SVG to PDF Command") def draw(self, context): layout = self.layout @@ -1786,6 +1789,8 @@ class BIM_ADDON_preferences(bpy.types.AddonPreferences): row = layout.row() row.operator('bim.open_upstream', text='Visit Wiki').page = 'wiki' row.operator('bim.open_upstream', text='Visit Community').page = 'community' + row = layout.row() + row.prop(self, 'svg2pdf_command') class BIM_PT_ifcclash(Panel):