diff --git a/src/blenderbim/blenderbim/bim/module/brick/__init__.py b/src/blenderbim/blenderbim/bim/module/brick/__init__.py index 5e0afa989a..0bff9e01e6 100644 --- a/src/blenderbim/blenderbim/bim/module/brick/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/brick/__init__.py @@ -33,6 +33,7 @@ classes = ( operator.RewindBrickClass, operator.ViewBrickClass, operator.ViewBrickItem, + operator.SerializeBrick, prop.Brick, prop.BIMBrickProperties, ui.BIM_PT_brickschema, diff --git a/src/blenderbim/blenderbim/bim/module/brick/operator.py b/src/blenderbim/blenderbim/bim/module/brick/operator.py index 33d877ebd1..1aa40303a2 100644 --- a/src/blenderbim/blenderbim/bim/module/brick/operator.py +++ b/src/blenderbim/blenderbim/bim/module/brick/operator.py @@ -189,3 +189,10 @@ class RemoveBrick(bpy.types.Operator, Operator): library=tool.Ifc.get().by_id(int(props.libraries)) if props.libraries else None, brick_uri=props.bricks[props.active_brick_index].uri, ) + +class SerializeBrick(bpy.types.Operator, Operator): + bl_idname = "bim.serialize_brick" + bl_label = "Serialize Brick" + + def _execute(self, context): + core.serialize_brick(tool.Brick) \ No newline at end of file diff --git a/src/blenderbim/blenderbim/bim/module/brick/ui.py b/src/blenderbim/blenderbim/bim/module/brick/ui.py index 568c5a4ab5..2d58de6758 100644 --- a/src/blenderbim/blenderbim/bim/module/brick/ui.py +++ b/src/blenderbim/blenderbim/bim/module/brick/ui.py @@ -58,6 +58,9 @@ class BIM_PT_brickschema(Panel): row.operator("bim.add_brick_feed", text="", icon="PLUGIN") row.operator("bim.remove_brick", text="", icon="X") + row = self.layout.row(align=True) + row.operator("bim.serialize_brick") + self.layout.template_list("BIM_UL_bricks", "", self.props, "bricks", self.props, "active_brick_index") for attribute in BrickschemaData.data["attributes"]: diff --git a/src/blenderbim/blenderbim/core/brick.py b/src/blenderbim/blenderbim/core/brick.py index d4df98654e..93fe475bb2 100644 --- a/src/blenderbim/blenderbim/core/brick.py +++ b/src/blenderbim/blenderbim/core/brick.py @@ -109,3 +109,6 @@ def remove_brick(ifc, brick, library=None, brick_uri=None): ifc.run("library.remove_reference", reference=reference) brick.remove_brick(brick_uri) brick.run_refresh_brick_viewer() + +def serialize_brick(brick, file_name="BlenderBIMSerializeTest.ttl"): + brick.serialize_brick(file_name) \ No newline at end of file diff --git a/src/blenderbim/blenderbim/tool/brick.py b/src/blenderbim/blenderbim/tool/brick.py index 8df69726a4..2ccc5433cc 100644 --- a/src/blenderbim/blenderbim/tool/brick.py +++ b/src/blenderbim/blenderbim/tool/brick.py @@ -320,6 +320,12 @@ class Brick(blenderbim.core.tool.Brick): BrickStore.VersionedGraphCollection.redo() BrickStore.reload_brick_graph() + @classmethod + def serialize_brick(cls, file_name): + BrickStore.reload_brick_graph() + print("Serializing: \"" + file_name + "\" ... ") + BrickStore.graph.serialize(file_name) + print("finished!") class BrickStore: schema = None # this is now a path