From d9196882dcc9efafe5edefade5eeef6a39e930a2 Mon Sep 17 00:00:00 2001 From: Trashman247 Date: Sun, 25 Jun 2023 23:56:15 -0700 Subject: [PATCH] Implement early testing for serialize operator (not functional) All the right code seems to be in place, but it seems the package won't go through with the serialize function because of read/write permissions (ERRNO 13) --- src/blenderbim/blenderbim/bim/module/brick/__init__.py | 1 + src/blenderbim/blenderbim/bim/module/brick/operator.py | 7 +++++++ src/blenderbim/blenderbim/bim/module/brick/ui.py | 3 +++ src/blenderbim/blenderbim/core/brick.py | 3 +++ src/blenderbim/blenderbim/tool/brick.py | 6 ++++++ 5 files changed, 20 insertions(+) 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