Skip to content

Commit 4131e59

Browse files
committed
Make IfcDiff more forgiving when invalid geometry occurs. See #3755.
1 parent fe99b59 commit 4131e59

1 file changed

Lines changed: 14 additions & 13 deletions

File tree

src/ifcdiff/ifcdiff.py

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -190,19 +190,20 @@ def summarise_shapes(self, ifc, elements):
190190
shape = iterator.get()
191191
element = ifc.by_id(shape.id)
192192
geometry = shape.geometry
193-
shapes[element.GlobalId] = {
194-
"total_verts": len(geometry.verts),
195-
"sum_verts": sum(geometry.verts),
196-
"min_vert": min(geometry.verts),
197-
"max_vert": max(geometry.verts),
198-
"matrix": tuple(shape.transformation.matrix.data),
199-
"openings": sorted(
200-
[o.RelatedOpeningElement.GlobalId for o in getattr(element, "HasOpenings", []) or []]
201-
),
202-
"projections": sorted(
203-
[o.RelatedFeatureElement.GlobalId for o in getattr(element, "HasProjections", []) or []]
204-
),
205-
}
193+
if geometry.verts:
194+
shapes[element.GlobalId] = {
195+
"total_verts": len(geometry.verts),
196+
"sum_verts": sum(geometry.verts),
197+
"min_vert": min(geometry.verts),
198+
"max_vert": max(geometry.verts),
199+
"matrix": tuple(shape.transformation.matrix.data),
200+
"openings": sorted(
201+
[o.RelatedOpeningElement.GlobalId for o in getattr(element, "HasOpenings", []) or []]
202+
),
203+
"projections": sorted(
204+
[o.RelatedFeatureElement.GlobalId for o in getattr(element, "HasProjections", []) or []]
205+
),
206+
}
206207
if not iterator.next():
207208
break
208209
return shapes

0 commit comments

Comments
 (0)