ifcopenshell.geom.tree.get_clash_type

This commit is contained in:
Andrej730
2025-05-23 13:51:24 +05:00
parent 087608a5f5
commit 29bd89324a
2 changed files with 14 additions and 5 deletions
+2 -5
View File
@@ -40,9 +40,6 @@ class ClashSource(TypedDict):
ifc: NotRequired[ifcopenshell.file]
ClashType = Literal["protrusion", "pierce", "collision", "clearance"]
class ClashResult(TypedDict):
a_global_id: str
b_global_id: str
@@ -50,7 +47,7 @@ class ClashResult(TypedDict):
b_ifc_class: str
a_name: str
b_name: str
type: ClashType
type: ifcopenshell.geom.main.ClashType
p1: list[float]
p2: list[float]
distance: float
@@ -146,7 +143,7 @@ class Clasher:
b_ifc_class=element2.is_a(),
a_name=element1.get_argument(2),
b_name=element2.get_argument(2),
type=("protrusion", "pierce", "collision", "clearance")[result.clash_type],
type=self.tree.get_clash_type(result.clash_type),
p1=list(result.p1),
p2=list(result.p2),
distance=result.distance,
@@ -343,6 +343,10 @@ class iterator(ifcopenshell_wrapper.Iterator):
break
ClashType = Literal["protrusion", "pierce", "collision", "clearance"]
CLASH_TYPE_ITEMS = ("protrusion", "pierce", "collision", "clearance")
class tree(ifcopenshell_wrapper.tree):
def __init__(self, file: Optional[file] = None, settings: Optional[settings] = None):
args = [self]
@@ -429,6 +433,14 @@ class tree(ifcopenshell_wrapper.tree):
args = [self, [e.wrapped_data for e in set_a], [e.wrapped_data for e in set_b], clearance, check_all]
return ifcopenshell_wrapper.tree.clash_clearance_many(*args)
@staticmethod
def get_clash_type(clash_type_i: int) -> ClashType:
"""Convert clash type index to a readable string format.
:param clash_type_i: Type index that comes from ``clash.clash_type``.
"""
return CLASH_TYPE_ITEMS[clash_type_i]
def create_shape(
settings: settings,