mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-09 09:21:46 +00:00
Make IfcDiff more forgiving when invalid geometry occurs. See #3755.
This commit is contained in:
+14
-13
@@ -190,19 +190,20 @@ class IfcDiff:
|
||||
shape = iterator.get()
|
||||
element = ifc.by_id(shape.id)
|
||||
geometry = shape.geometry
|
||||
shapes[element.GlobalId] = {
|
||||
"total_verts": len(geometry.verts),
|
||||
"sum_verts": sum(geometry.verts),
|
||||
"min_vert": min(geometry.verts),
|
||||
"max_vert": max(geometry.verts),
|
||||
"matrix": tuple(shape.transformation.matrix.data),
|
||||
"openings": sorted(
|
||||
[o.RelatedOpeningElement.GlobalId for o in getattr(element, "HasOpenings", []) or []]
|
||||
),
|
||||
"projections": sorted(
|
||||
[o.RelatedFeatureElement.GlobalId for o in getattr(element, "HasProjections", []) or []]
|
||||
),
|
||||
}
|
||||
if geometry.verts:
|
||||
shapes[element.GlobalId] = {
|
||||
"total_verts": len(geometry.verts),
|
||||
"sum_verts": sum(geometry.verts),
|
||||
"min_vert": min(geometry.verts),
|
||||
"max_vert": max(geometry.verts),
|
||||
"matrix": tuple(shape.transformation.matrix.data),
|
||||
"openings": sorted(
|
||||
[o.RelatedOpeningElement.GlobalId for o in getattr(element, "HasOpenings", []) or []]
|
||||
),
|
||||
"projections": sorted(
|
||||
[o.RelatedFeatureElement.GlobalId for o in getattr(element, "HasProjections", []) or []]
|
||||
),
|
||||
}
|
||||
if not iterator.next():
|
||||
break
|
||||
return shapes
|
||||
|
||||
Reference in New Issue
Block a user