From e7a8a97639d178dbf0a93a3b6349c627f0842ded Mon Sep 17 00:00:00 2001 From: Michael Sundqvist Date: Wed, 28 Mar 2018 17:33:46 +0300 Subject: [PATCH] If material name is empty when writing collada file, name it as a missing material. Logger::Notice() objects that do not have a material assigned. --- src/ifcconvert/ColladaSerializer.cpp | 10 ++++++++++ src/ifcgeom/IfcGeomFunctions.cpp | 3 +++ 2 files changed, 13 insertions(+) diff --git a/src/ifcconvert/ColladaSerializer.cpp b/src/ifcconvert/ColladaSerializer.cpp index 1347aa4f5e..6191f2136d 100644 --- a/src/ifcconvert/ColladaSerializer.cpp +++ b/src/ifcconvert/ColladaSerializer.cpp @@ -313,6 +313,11 @@ void ColladaSerializer::ColladaExporter::ColladaMaterials::ColladaEffects::write { std::string material_name = (serializer->settings().get(SerializerSettings::USE_MATERIAL_NAMES) ? material.original_name() : material.name()); + + if (material_name.empty()) { + material_name = "missing-material-" + material.name(); + } + collada_id(material_name); openEffect(material_name + "-fx"); COLLADASW::EffectProfile effect(mSW); @@ -360,6 +365,11 @@ void ColladaSerializer::ColladaExporter::ColladaMaterials::write() { BOOST_FOREACH(const IfcGeom::Material& material, materials) { std::string material_name = (serializer->settings().get(SerializerSettings::USE_MATERIAL_NAMES) ? material.original_name() : material.name()); + + if (material_name.empty()) { + material_name = "missing-material-" + material.name(); + } + std::string material_name_unescaped = material_name; // workaround double-escaping that would occur in addInstanceEffect() IfcUtil::sanitate_material_name(material_name_unescaped); collada_id(material_name); diff --git a/src/ifcgeom/IfcGeomFunctions.cpp b/src/ifcgeom/IfcGeomFunctions.cpp index 53013da932..d33c48e267 100644 --- a/src/ifcgeom/IfcGeomFunctions.cpp +++ b/src/ifcgeom/IfcGeomFunctions.cpp @@ -1455,6 +1455,9 @@ IfcGeom::BRepElement

* IfcGeom::Kernel::create_brep_for_representation_and_pro } } } + else { + Logger::Notice("Object '" + product->Name() + "' (guid " + product->GlobalId() + " ) has no material!"); + } if (material_style_applied) { representation_id_builder << "-material-" << single_material->entity->id();