diff --git a/src/blenderbim/blenderbim/bim/module/brick/prop.py b/src/blenderbim/blenderbim/bim/module/brick/prop.py index 3792d385e9..6e0ba7c814 100644 --- a/src/blenderbim/blenderbim/bim/module/brick/prop.py +++ b/src/blenderbim/blenderbim/bim/module/brick/prop.py @@ -56,6 +56,7 @@ def get_brick_equipment_classes(self, context): class Brick(PropertyGroup): name: StringProperty(name="Name") + label: StringProperty(name="Label") uri: StringProperty(name="URI") total_items: IntProperty(name="Total Items") diff --git a/src/blenderbim/blenderbim/bim/module/brick/ui.py b/src/blenderbim/blenderbim/bim/module/brick/ui.py index ace0490417..2ecadd7fd0 100644 --- a/src/blenderbim/blenderbim/bim/module/brick/ui.py +++ b/src/blenderbim/blenderbim/bim/module/brick/ui.py @@ -121,6 +121,6 @@ class BIM_UL_bricks(UIList): if item.total_items: op = row.operator("bim.view_brick_class", text="", icon="DISCLOSURE_TRI_RIGHT", emboss=False) op.brick_class = item.name - row.label(text=item.name) + row.label(text=item.label if item.label else item.name) if item.total_items: row.label(text=str(item.total_items)) diff --git a/src/blenderbim/blenderbim/tool/brick.py b/src/blenderbim/blenderbim/tool/brick.py index 4b3a632a87..415deafeaf 100644 --- a/src/blenderbim/blenderbim/tool/brick.py +++ b/src/blenderbim/blenderbim/tool/brick.py @@ -190,9 +190,12 @@ class Brick(blenderbim.core.tool.Brick): PREFIX brick: PREFIX rdfs: PREFIX rdf: - SELECT ?group (count(?item) as ?total_items) WHERE { + SELECT ?group (count(?item) as ?total_items) ?label WHERE { ?group rdfs:subClassOf brick:{brick_class} . - ?item rdf:type/rdfs:subClassOf* ?group + ?item rdf:type/rdfs:subClassOf* ?group . + OPTIONAL { + ?group rdfs:label ?label + } } GROUP BY ?group ORDER BY asc(?group) @@ -202,6 +205,9 @@ class Brick(blenderbim.core.tool.Brick): ) for row in query: new = bpy.context.scene.BIMBrickProperties.bricks.add() + label = row.get("label") + if label: + new.label = label.toPython() new.name = row.get("group").toPython().split("#")[-1] new.uri = row.get("group").toPython() new.total_items = row.get("total_items").toPython() @@ -213,8 +219,11 @@ class Brick(blenderbim.core.tool.Brick): PREFIX brick: PREFIX rdfs: PREFIX rdf: - SELECT ?item WHERE { - ?item rdf:type brick:{brick_class} + SELECT ?item ?label WHERE { + ?item rdf:type brick:{brick_class} . + OPTIONAL { + ?item rdfs:label ?label + } } ORDER BY asc(?item) """.replace( @@ -223,6 +232,9 @@ class Brick(blenderbim.core.tool.Brick): ) for row in query: new = bpy.context.scene.BIMBrickProperties.bricks.add() + label = row.get("label") + if label: + new.label = label.toPython() new.name = row.get("item").toPython().split("#")[-1] new.uri = row.get("item").toPython() diff --git a/src/blenderbim/test/files/spaces.ttl b/src/blenderbim/test/files/spaces.ttl index dda7dc9c5d..760a53f1bb 100644 --- a/src/blenderbim/test/files/spaces.ttl +++ b/src/blenderbim/test/files/spaces.ttl @@ -1,12 +1,14 @@ @prefix digitaltwin: . @prefix brick: . @prefix unit: . +@prefix rdfs: . digitaltwin:site a brick:Site ; brick:buildingPrimaryFunction [ brick:value "Library" ] ; brick:hasPart digitaltwin:bldg . digitaltwin:bldg a brick:Building ; + rdfs:label "My Building" ; brick:hasPart digitaltwin:floor . digitaltwin:floor a brick:Floor ; diff --git a/src/blenderbim/test/tool/test_brick.py b/src/blenderbim/test/tool/test_brick.py index 7f2bee6b7a..9441b5cc88 100644 --- a/src/blenderbim/test/tool/test_brick.py +++ b/src/blenderbim/test/tool/test_brick.py @@ -263,10 +263,12 @@ class TestImportBrickClasses(NewFile): assert brick.name == "Building" assert brick.uri == "https://brickschema.org/schema/Brick#Building" assert brick.total_items == 1 + assert not brick.label brick = bpy.context.scene.BIMBrickProperties.bricks[1] assert brick.name == "Location" assert brick.uri == "https://brickschema.org/schema/Brick#Location" assert brick.total_items == 1 + assert not brick.label class TestImportBrickItems(NewFile): @@ -276,6 +278,7 @@ class TestImportBrickItems(NewFile): assert len(bpy.context.scene.BIMBrickProperties.bricks) == 1 brick = bpy.context.scene.BIMBrickProperties.bricks[0] assert brick.name == "bldg" + assert brick.label == "My Building" assert brick.uri == "http://example.org/digitaltwin#bldg" assert brick.total_items == 0