From ebfe8f9c54923748073d49b9e2afff0e8a7bca04 Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Wed, 9 Aug 2017 17:01:10 +0200 Subject: [PATCH] Take into account Position is optional in IFC4 when processing layersets on slabs --- src/ifcgeom/IfcGeomFunctions.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/ifcgeom/IfcGeomFunctions.cpp b/src/ifcgeom/IfcGeomFunctions.cpp index 1ff9259628..ccc7939c7e 100644 --- a/src/ifcgeom/IfcGeomFunctions.cpp +++ b/src/ifcgeom/IfcGeomFunctions.cpp @@ -1554,9 +1554,16 @@ bool IfcGeom::Kernel::convert_layerset(const IfcSchema::IfcProduct* product, std IfcSchema::IfcExtrudedAreaSolid* extrusion = *extrusions->begin(); gp_Trsf extrusion_position; - if (!convert(extrusion->Position(), extrusion_position)) { - Logger::Message(Logger::LOG_ERROR, "Failed to convert placement for extrusion of:", product->entity); - return false; + + bool has_position = true; +#ifdef USE_IFC4 + has_position = extrusion->hasPosition(); +#endif + if (has_position) { + if (!convert(extrusion->Position(), extrusion_position)) { + Logger::Message(Logger::LOG_ERROR, "Failed to convert placement for extrusion of:", product->entity); + return false; + } } gp_Dir extrusion_direction;