From a92d37cd6434e5340cd3a6bfae738f4f3858879e Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Mon, 6 Jun 2022 09:58:42 +0200 Subject: [PATCH] Quick fix py create_shape() setting propagation --- src/ifcwrap/IfcGeomWrapper.i | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/ifcwrap/IfcGeomWrapper.i b/src/ifcwrap/IfcGeomWrapper.i index dba32a5a70..069521410c 100644 --- a/src/ifcwrap/IfcGeomWrapper.i +++ b/src/ifcwrap/IfcGeomWrapper.i @@ -370,6 +370,9 @@ struct ShapeRTTI : public boost::static_visitor IfcParse::IfcFile* file = instance->data().file; IfcGeom::Kernel kernel(file); + + // @todo unify this logic with the logic in iterator impl. + kernel.setValue(IfcGeom::Kernel::GV_MAX_FACES_TO_ORIENT, settings.get(IfcGeom::IteratorSettings::SEW_SHELLS) ? std::numeric_limits::infinity() : -1); kernel.setValue(IfcGeom::Kernel::GV_DIMENSIONALITY, (settings.get(IfcGeom::IteratorSettings::INCLUDE_CURVES) ? (settings.get(IfcGeom::IteratorSettings::EXCLUDE_SOLIDS_AND_SURFACES) ? -1. : 0.) : +1.)); kernel.setValue(IfcGeom::Kernel::GV_LAYERSET_FIRST, @@ -377,6 +380,39 @@ struct ShapeRTTI : public boost::static_visitor ? +1.0 : -1.0 ); + kernel.setValue(IfcGeom::Kernel::GV_NO_WIRE_INTERSECTION_CHECK, + settings.get(IteratorSettings::NO_WIRE_INTERSECTION_CHECK) + ? +1.0 + : -1.0 + ); + kernel.setValue(IfcGeom::Kernel::GV_NO_WIRE_INTERSECTION_TOLERANCE, + settings.get(IteratorSettings::NO_WIRE_INTERSECTION_TOLERANCE) + ? +1.0 + : -1.0 + ); + kernel.setValue(IfcGeom::Kernel::GV_PRECISION_FACTOR, + settings.get(IteratorSettings::STRICT_TOLERANCE) + ? 1.0 + : 10.0 + ); + + kernel.setValue(IfcGeom::Kernel::GV_DISABLE_BOOLEAN_RESULT, + settings.get(IteratorSettings::DISABLE_BOOLEAN_RESULT) + ? +1.0 + : -1.0 + ); + + kernel.setValue(IfcGeom::Kernel::GV_DEBUG_BOOLEAN, + settings.get(IteratorSettings::DEBUG_BOOLEAN) + ? +1.0 + : -1.0 + ); + + kernel.setValue(IfcGeom::Kernel::GV_BOOLEAN_ATTEMPT_2D, + settings.get(IteratorSettings::BOOLEAN_ATTEMPT_2D) + ? +1.0 + : -1.0 + ); if (instance->declaration().is(Schema::IfcProduct::Class())) { if (representation) {