diff --git a/src/ifcgeom/IfcGeomWires.cpp b/src/ifcgeom/IfcGeomWires.cpp index 48724117e9..6c61661af1 100644 --- a/src/ifcgeom/IfcGeomWires.cpp +++ b/src/ifcgeom/IfcGeomWires.cpp @@ -387,7 +387,8 @@ bool IfcGeom::Kernel::convert(const IfcSchema::IfcCompositeCurve* l, TopoDS_Wire TopoDS_Wire segment; if (!convert_wire(curve, segment)) { - Logger::Message(Logger::LOG_ERROR, "Failed to convert curve:", curve); + const bool failed_on_purpose = curve->as() && !segment.IsNull(); + Logger::Message(failed_on_purpose ? Logger::LOG_WARNING : Logger::LOG_ERROR, "Failed to convert curve:", curve); continue; } @@ -625,6 +626,9 @@ bool IfcGeom::Kernel::convert(const IfcSchema::IfcPolyline* l, TopoDS_Wire& resu remove_duplicate_points_from_loop(polygon, closed_by_proximity, eps); if (polygon.Length() < 2) { + // We somehow need to signal we fail this curve on purpose not to trigger an error. + BRep_Builder B; + B.MakeWire(result); return false; }