mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-27 10:51:13 +00:00
#2213 Read precision from rep context in create_shape()
This commit is contained in:
@@ -483,6 +483,22 @@ struct ShapeRTTI : public boost::static_visitor<PyObject*>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Read precision for found representation's context
|
||||||
|
auto context = ifc_representation->ContextOfItems();
|
||||||
|
if (context->as<Schema::IfcGeometricRepresentationSubContext>()) {
|
||||||
|
context = context->as<Schema::IfcGeometricRepresentationSubContext>()->ParentContext();
|
||||||
|
}
|
||||||
|
if (context->as<Schema::IfcGeometricRepresentationContext>() && context->as<Schema::IfcGeometricRepresentationContext>()->Precision()) {
|
||||||
|
double p = *context->as<Schema::IfcGeometricRepresentationContext>()->Precision()
|
||||||
|
* kernel.getValue(IfcGeom::Kernel::GV_PRECISION_FACTOR);
|
||||||
|
p *= kernel.getValue(IfcGeom::Kernel::GV_LENGTH_UNIT);
|
||||||
|
if (p < 1.e-7) {
|
||||||
|
Logger::Message(Logger::LOG_WARNING, "Precision lower than 0.0000001 meter not enforced");
|
||||||
|
p = 1.e-7;
|
||||||
|
}
|
||||||
|
kernel.setValue(IfcGeom::Kernel::GV_PRECISION, p);
|
||||||
|
}
|
||||||
|
|
||||||
if (!ifc_representation) {
|
if (!ifc_representation) {
|
||||||
if (reps->size()) {
|
if (reps->size()) {
|
||||||
// Return a random representation
|
// Return a random representation
|
||||||
|
|||||||
Reference in New Issue
Block a user