From df1820606e315a315dac66f8f8e241ba5a6ddaaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Barv=C3=AD=C5=99?= Date: Fri, 29 May 2026 12:08:39 +0200 Subject: [PATCH 1/2] Require dimension 3 for IFCARBITRARYPROFILEDEFWITHVOIDS --- src/cpp/web-ifc/geometry/IfcGeometryLoader.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/cpp/web-ifc/geometry/IfcGeometryLoader.cpp b/src/cpp/web-ifc/geometry/IfcGeometryLoader.cpp index 1a84f23e7..3b5b9105c 100644 --- a/src/cpp/web-ifc/geometry/IfcGeometryLoader.cpp +++ b/src/cpp/web-ifc/geometry/IfcGeometryLoader.cpp @@ -3150,7 +3150,8 @@ namespace webifc::geometry _loader.MoveToArgumentOffset(expressID, 0); profile.type = _loader.GetStringArgument(); _loader.MoveToArgumentOffset(expressID, 2); - profile.curve = GetCurve(_loader.GetRefArgument(), 2); + // Same as IFCARBITRARYCLOSEDPROFILEDEF: 3D curves require dimension 3 + profile.curve = GetCurve(_loader.GetRefArgument(), 3); profile.isConvex = IsCurveConvex(profile.curve); _loader.MoveToArgumentOffset(expressID, 3); @@ -3158,7 +3159,7 @@ namespace webifc::geometry for (auto &hole : holes) { - IfcCurve holeCurve = GetCurve(_loader.GetRefArgument(hole), 2); + IfcCurve holeCurve = GetCurve(_loader.GetRefArgument(hole), 3); profile.holes.push_back(holeCurve); } From ed36d4d58716f0add4741760b69125350852deab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Barv=C3=AD=C5=99?= Date: Fri, 29 May 2026 12:10:55 +0200 Subject: [PATCH 2/2] . --- src/cpp/web-ifc/geometry/IfcGeometryLoader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cpp/web-ifc/geometry/IfcGeometryLoader.cpp b/src/cpp/web-ifc/geometry/IfcGeometryLoader.cpp index 3b5b9105c..0a1896772 100644 --- a/src/cpp/web-ifc/geometry/IfcGeometryLoader.cpp +++ b/src/cpp/web-ifc/geometry/IfcGeometryLoader.cpp @@ -3150,7 +3150,7 @@ namespace webifc::geometry _loader.MoveToArgumentOffset(expressID, 0); profile.type = _loader.GetStringArgument(); _loader.MoveToArgumentOffset(expressID, 2); - // Same as IFCARBITRARYCLOSEDPROFILEDEF: 3D curves require dimension 3 + // ISSUE 1973 same as IFCARBITRARYCLOSEDPROFILEDEF: 3D curves require dimension 3 profile.curve = GetCurve(_loader.GetRefArgument(), 3); profile.isConvex = IsCurveConvex(profile.curve);