From f56bae141b14a4ece86e3e4f8670a0e9f883ecb7 Mon Sep 17 00:00:00 2001 From: VDobranov <112861900+VDobranov@users.noreply.github.com> Date: Thu, 11 Jul 2024 18:52:18 +0500 Subject: [PATCH] Update shape_builder.py Described in the https://github.com/IfcOpenShell/IfcOpenShell/issues/4989 --- .../ifcopenshell/util/shape_builder.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/ifcopenshell-python/ifcopenshell/util/shape_builder.py b/src/ifcopenshell-python/ifcopenshell/util/shape_builder.py index 119f6d2b05..57868109ba 100644 --- a/src/ifcopenshell-python/ifcopenshell/util/shape_builder.py +++ b/src/ifcopenshell-python/ifcopenshell/util/shape_builder.py @@ -126,16 +126,21 @@ class ShapeBuilder: # then we do need to create segments segments = [] cur_i = 0 + closed_by_arc = False while cur_i < len(points) - 1: cur_i_ifc = cur_i + 1 if cur_i + 1 in arc_points: - segments.append((cur_i_ifc, cur_i_ifc + 1, cur_i_ifc + 2)) + if cur_i_ifc + 1 < len(points): + segments.append((cur_i_ifc, cur_i_ifc + 1, cur_i_ifc + 2)) + else: + segments.append((cur_i_ifc, cur_i_ifc + 1, 1)) + closed_by_arc = True cur_i += 2 else: segments.append((cur_i_ifc, cur_i_ifc + 1)) cur_i += 1 - if closed: + if closed and not closed_by_arc: segments.append((len(points), 1)) ifc_segments = []