From 7bfa6115eeb3ebb1535cab35ef38bd6803f62401 Mon Sep 17 00:00:00 2001 From: rileywong311 Date: Tue, 1 Aug 2023 22:10:17 -0700 Subject: [PATCH] Refactor AddBrickRelation to combine object namespace+label in operator This is an important change that should make adding relations through other methods easier to implement --- src/blenderbim/blenderbim/bim/module/brick/operator.py | 7 +++++-- src/blenderbim/blenderbim/core/brick.py | 4 ++-- src/blenderbim/blenderbim/tool/brick.py | 9 ++++----- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/brick/operator.py b/src/blenderbim/blenderbim/bim/module/brick/operator.py index f63a09a59d..bc65f87552 100644 --- a/src/blenderbim/blenderbim/bim/module/brick/operator.py +++ b/src/blenderbim/blenderbim/bim/module/brick/operator.py @@ -144,12 +144,15 @@ class AddBrickRelation(bpy.types.Operator, Operator): def _execute(self, context): props = context.scene.BIMBrickProperties brick = props.bricks[props.active_brick_index] + if props.new_brick_relation_type == "http://www.w3.org/2000/01/rdf-schema#label": + object = props.new_brick_relation_object + else: + object = props.new_brick_relation_namespace + props.new_brick_relation_object core.add_brick_relation( tool.Brick, brick_uri=brick.uri, predicate=props.new_brick_relation_type, - namespace=props.new_brick_relation_namespace, - object=props.new_brick_relation_object + object=object ) diff --git a/src/blenderbim/blenderbim/core/brick.py b/src/blenderbim/blenderbim/core/brick.py index e92001dff5..3866fa593d 100644 --- a/src/blenderbim/blenderbim/core/brick.py +++ b/src/blenderbim/blenderbim/core/brick.py @@ -78,8 +78,8 @@ def add_brick(ifc, brick, element=None, namespace=None, brick_class=None, librar brick.run_refresh_brick_viewer() -def add_brick_relation(brick, brick_uri=None, predicate=None, namespace=None, object=None): - brick.add_relation(brick_uri, predicate, namespace, object) +def add_brick_relation(brick, brick_uri=None, predicate=None, object=None): + brick.add_relation(brick_uri, predicate, object) brick.run_refresh_brick_viewer() diff --git a/src/blenderbim/blenderbim/tool/brick.py b/src/blenderbim/blenderbim/tool/brick.py index e66394b526..5397beb81e 100644 --- a/src/blenderbim/blenderbim/tool/brick.py +++ b/src/blenderbim/blenderbim/tool/brick.py @@ -100,22 +100,21 @@ class Brick(blenderbim.core.tool.Brick): ) @classmethod - def add_relation(cls, brick_uri, predicate, namespace, object): + def add_relation(cls, brick_uri, predicate, object): if predicate == "http://www.w3.org/2000/01/rdf-schema#label": with BrickStore.new_changeset() as cs: cs.add((URIRef(brick_uri), URIRef(predicate), Literal(object))) bpy.context.scene.BIMBrickProperties.new_brick_relation_type = BrickStore.relationships[0][0] bpy.context.scene.BIMBrickProperties.add_relation_failed = False return - object_uri = namespace + object query = BrickStore.graph.query( - "ASK { <{object_uri}> ?predicate ?object . }".replace( - "{object_uri}", object_uri + "ASK { <{object_uri}> a ?o . }".replace( + "{object_uri}", object ) ) if query: with BrickStore.new_changeset() as cs: - cs.add((URIRef(brick_uri), URIRef(predicate), URIRef(object_uri))) + cs.add((URIRef(brick_uri), URIRef(predicate), URIRef(object))) bpy.context.scene.BIMBrickProperties.add_relation_failed = False else: bpy.context.scene.BIMBrickProperties.add_relation_failed = True