This commit is contained in:
Andrej730
2026-02-27 11:15:30 +05:00
parent 8834a51122
commit 92c979fbbf
27 changed files with 121 additions and 271 deletions
+2 -6
View File
@@ -63,8 +63,7 @@ class BrickschemaData:
if namespace == "https://brickschema.org/schema/Brick":
return []
results = []
query = BrickStore.graph.query(
"""
query = BrickStore.graph.query("""
PREFIX brick: <https://brickschema.org/schema/Brick#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@@ -81,10 +80,7 @@ class BrickschemaData:
}
}
GROUP BY ?object
""".replace(
"{uri}", uri
)
)
""".replace("{uri}", uri))
for row in query:
predicate_uri = row.get("predicate")
predicate_name = predicate_uri.toPython().split("#")[-1]
@@ -335,12 +335,9 @@ class BaseLinesShader(BaseShader):
TYPE = "LINES"
DEF_GLSL = (
BaseShader.DEF_GLSL
+ """
DEF_GLSL = BaseShader.DEF_GLSL + """
#define GAP_SIZE {gap_size}
"""
)
GEOM_GLSL = """
layout(lines) in;
@@ -401,13 +398,10 @@ class DotsGizmoShader(GizmoShader):
TYPE = "POINTS"
DEF_GLSL = (
BaseShader.DEF_GLSL
+ """
DEF_GLSL = BaseShader.DEF_GLSL + """
#define CIRCLE_SEGMENTS 12
#define CIRCLE_RADIUS 8
"""
)
GEOM_GLSL = """
layout(points) in;
@@ -58,15 +58,13 @@ class DecorationShader:
"PLANAR LOAD",
}
if pattern not in valid_patterns:
raise ValueError(
"""pattern must be one of:
raise ValueError("""pattern must be one of:
PERPENDICULAR DISTRIBUTED FORCE
PARALLEL DISTRIBUTED FORCE,
DISTRIBUTED MOMENT,
SINGLE FORCE,
SINGLE MOMENT,
PLANAR LOAD"""
)
PLANAR LOAD""")
if "DISTRIBUTED" in pattern.upper():
shader = self.get_linear_shader(pattern)
return shader
-1
View File
@@ -55,7 +55,6 @@ from bonsai.bim.module.model.ui import (
from bonsai.bim.module.pset.prop import IfcProperty
from bonsai.bim.prop import Attribute
if TYPE_CHECKING:
from bonsai.bim.module.project.prop import BIMProjectProperties
from bonsai.bim.prop import ObjProperty
+16 -44
View File
@@ -164,17 +164,13 @@ class Brick(bonsai.core.tool.Brick):
@classmethod
def export_brick_attributes(cls, brick_uri: str) -> dict[str, Any]:
query = BrickStore.graph.query(
"""
query = BrickStore.graph.query("""
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?label {
<{brick_uri}> rdfs:label ?label .
}
LIMIT 1
""".replace(
"{brick_uri}", brick_uri
)
)
""".replace("{brick_uri}", brick_uri))
name = None
for row in query:
name = str(row.get("label"))
@@ -218,18 +214,14 @@ class Brick(bonsai.core.tool.Brick):
@classmethod
def get_brickifc_project(cls) -> Union[str, None]:
project = tool.Ifc.get().by_type("IfcProject")[0]
query = BrickStore.graph.query(
"""
query = BrickStore.graph.query("""
PREFIX ref: <https://brickschema.org/schema/Brick/ref#>
SELECT ?proj WHERE {
?proj a ref:ifcProject .
?proj ref:ifcProjectID "{project_globalid}" .
}
LIMIT 1
""".replace(
"{project_globalid}", project.GlobalId
)
)
""".replace("{project_globalid}", project.GlobalId))
results = list(query)
if results:
return results[0][0].toPython()
@@ -275,17 +267,13 @@ class Brick(bonsai.core.tool.Brick):
@classmethod
def get_item_class(cls, item: str) -> Union[str, None]:
query = BrickStore.graph.query(
"""
query = BrickStore.graph.query("""
PREFIX brick: <https://brickschema.org/schema/Brick#>
SELECT ?class WHERE {
<{item}> a ?class .
}
LIMIT 1
""".replace(
"{item}", item
)
)
""".replace("{item}", item))
for row in query:
return row.get("class").toPython().split("#")[-1]
@@ -308,8 +296,7 @@ class Brick(bonsai.core.tool.Brick):
@classmethod
def import_brick_classes(cls, brick_class: str, split_screen: bool = False) -> None:
query = BrickStore.graph.query(
"""
query = BrickStore.graph.query("""
PREFIX brick: <https://brickschema.org/schema/Brick#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@@ -322,10 +309,7 @@ class Brick(bonsai.core.tool.Brick):
}
GROUP BY ?group
ORDER BY asc(?group)
""".replace(
"{brick_class}", brick_class
)
)
""".replace("{brick_class}", brick_class))
props = tool.Brick.get_brick_props()
if split_screen:
bricks = props.split_screen_bricks
@@ -342,8 +326,7 @@ class Brick(bonsai.core.tool.Brick):
@classmethod
def import_brick_items(cls, brick_class: str, split_screen: bool = False) -> None:
query = BrickStore.graph.query(
"""
query = BrickStore.graph.query("""
PREFIX brick: <https://brickschema.org/schema/Brick#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@@ -354,10 +337,7 @@ class Brick(bonsai.core.tool.Brick):
}
}
ORDER BY asc(?item)
""".replace(
"{brick_class}", brick_class
)
)
""".replace("{brick_class}", brick_class))
props = tool.Brick.get_brick_props()
if split_screen:
bricks = props.split_screen_bricks
@@ -507,8 +487,7 @@ class BrickStore:
@classmethod
def load_sub_roots(cls) -> None:
query = BrickStore.graph.query(
"""
query = BrickStore.graph.query("""
PREFIX brick: <https://brickschema.org/schema/Brick#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?subRoot ?subClasses WHERE {
@@ -525,8 +504,7 @@ class BrickStore:
}
FILTER(?subClasses > 3)
}
"""
)
""")
for row in query:
sub_root = row.get("subRoot").toPython().split("#")[-1]
BrickStore.root_classes.append(sub_root)
@@ -558,8 +536,7 @@ class BrickStore:
@classmethod
def load_entity_classes(cls) -> None:
for root_class in BrickStore.root_classes:
query = BrickStore.graph.query(
"""
query = BrickStore.graph.query("""
PREFIX brick: <https://brickschema.org/schema/Brick#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
@@ -569,25 +546,20 @@ class BrickStore:
?class owl:deprecated true .
}
}
""".replace(
"{root_class}", root_class
)
)
""".replace("{root_class}", root_class))
BrickStore.entity_classes[root_class] = []
for uri in sorted([x[0].toPython() for x in query]):
BrickStore.entity_classes[root_class].append(uri)
@classmethod
def load_relationships(cls) -> None:
query = BrickStore.graph.query(
"""
query = BrickStore.graph.query("""
PREFIX brick: <https://brickschema.org/schema/Brick#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT DISTINCT ?relation WHERE {
?relation rdfs:subPropertyOf brick:Relationship .
}
"""
)
""")
for uri in sorted([x[0].toPython() for x in query]):
BrickStore.relationships.append(uri)
+2 -4
View File
@@ -2710,16 +2710,14 @@ class Drawing(bonsai.core.tool.Drawing):
return float(value)
except:
pass # Perhaps it's imperial?
l = lark.Lark(
"""start: feet? "-"? inches?
l = lark.Lark("""start: feet? "-"? inches?
feet: NUMBER? "-"? fraction? "'"
inches: NUMBER? "-"? fraction? "\\""
fraction: NUMBER "/" NUMBER
%import common.NUMBER
%import common.WS
%ignore WS // Disregard spaces in text
"""
)
""")
try:
start = l.parse(value)
@@ -22,8 +22,7 @@ class Generator:
}
)
query = self.schema.query(
"""
query = self.schema.query("""
PREFIX brick: <https://brickschema.org/schema/Brick#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
@@ -49,8 +48,7 @@ class Generator:
}
}
GROUP BY ?entity
"""
)
""")
# create references dictionary
references = {}
@@ -76,17 +74,13 @@ class Generator:
)
# get all parents of the entity
query = self.schema.query(
"""
query = self.schema.query("""
PREFIX brick: <https://brickschema.org/schema/Brick#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?parent WHERE {
brick:{entity} rdfs:subClassOf ?parent .
}
""".replace(
"{entity}", location.split("#")[-1]
)
)
""".replace("{entity}", location.split("#")[-1]))
# filter parents for the brick entity
for row in query:
parent = row.get("parent").toPython()
-1
View File
@@ -23,7 +23,6 @@ Use operators instead of `blender --command extension remove`
to ensure disable and enable occur in the same Blender session.
"""
import bpy
import bonsai.tool as tool