OBJ precision and log messages

* Fixes #68: Increase precision in OBJ files (regression in commit 43f5d44)
* Add some verbose logging of a few geometry errors
This commit is contained in:
Lars Moastuen
2016-05-13 12:59:00 +02:00
committed by Thomas Krijnen
parent 01269e5dd5
commit 414d7bb810
2 changed files with 9 additions and 1 deletions
@@ -80,6 +80,8 @@ void WaveFrontOBJSerializer::write(const IfcGeom::TriangulationElement<real_t>*
obj_stream << "g " << name << "\n"; obj_stream << "g " << name << "\n";
obj_stream << "s 1" << "\n"; obj_stream << "s 1" << "\n";
obj_stream << std::setprecision(std::numeric_limits<double>::digits10);
const IfcGeom::Representation::Triangulation<real_t>& mesh = o->geometry(); const IfcGeom::Representation::Triangulation<real_t>& mesh = o->geometry();
const int vcount = (int)mesh.verts().size() / 3; const int vcount = (int)mesh.verts().size() / 3;
+7 -1
View File
@@ -241,7 +241,10 @@ namespace IfcGeom {
kernel.setValue(IfcGeom::Kernel::GV_PRECISION, 1.e-5); kernel.setValue(IfcGeom::Kernel::GV_PRECISION, 1.e-5);
} }
if (representations->size() == 0) return false; if (representations->size() == 0) {
Logger::Message(Logger::LOG_ERROR, "No geometries found");
return false;
}
representation_iterator = representations->begin(); representation_iterator = representations->begin();
ifcproducts.reset(); ifcproducts.reset();
@@ -625,6 +628,7 @@ namespace IfcGeom {
try { try {
next_serialization = new SerializedElement<P>(*next_shape_model); next_serialization = new SerializedElement<P>(*next_shape_model);
} catch (...) { } catch (...) {
Logger::Message(Logger::LOG_ERROR, "Getting a serialized element from model failed.");
success = false; success = false;
} }
} else if (!settings.get(IteratorSettings::DISABLE_TRIANGULATION)) { } else if (!settings.get(IteratorSettings::DISABLE_TRIANGULATION)) {
@@ -635,10 +639,12 @@ namespace IfcGeom {
next_triangulation = new TriangulationElement<P>(*next_shape_model, current_triangulation->geometry_pointer()); next_triangulation = new TriangulationElement<P>(*next_shape_model, current_triangulation->geometry_pointer());
} }
} catch (...) { } catch (...) {
Logger::Message(Logger::LOG_ERROR, "Getting a triangulation element from model failed.");
success = false; success = false;
} }
} }
} else { } else {
Logger::Message(Logger::LOG_ERROR, "No shape models found.");
success = false; success = false;
} }