diff --git a/src/serializers/IgesSerializer.h b/src/serializers/IgesSerializer.h index 93fca9b514..e6a5bdf3b6 100644 --- a/src/serializers/IgesSerializer.h +++ b/src/serializers/IgesSerializer.h @@ -42,7 +42,7 @@ public: : OpenCascadeBasedSerializer(out_filename, settings) {} virtual ~IgesSerializer() {} - void writeShape(const TopoDS_Shape& shape) { + void writeShape(const std::string&, const TopoDS_Shape& shape) { writer.AddShape(shape); } void finalize() { diff --git a/src/serializers/OpenCascadeBasedSerializer.cpp b/src/serializers/OpenCascadeBasedSerializer.cpp index 1b35754795..8028fbb64c 100644 --- a/src/serializers/OpenCascadeBasedSerializer.cpp +++ b/src/serializers/OpenCascadeBasedSerializer.cpp @@ -43,7 +43,7 @@ void OpenCascadeBasedSerializer::write(const IfcGeom::BRepElement* o) { if (settings.get(IfcGeom::IteratorSettings::CONVERT_BACK_UNITS) && settings.unit_magnitude() != 1.0) { trsf.SetTranslationPart(trsf.TranslationPart() / settings.unit_magnitude()); } - writeShape(compound.Moved(trsf)); + writeShape(object_id(o), compound.Moved(trsf)); } #define RATHER_SMALL (1e-3) diff --git a/src/serializers/OpenCascadeBasedSerializer.h b/src/serializers/OpenCascadeBasedSerializer.h index 048c1228a4..6410e3d05b 100644 --- a/src/serializers/OpenCascadeBasedSerializer.h +++ b/src/serializers/OpenCascadeBasedSerializer.h @@ -38,7 +38,7 @@ public: virtual ~OpenCascadeBasedSerializer() {} void writeHeader() {} bool ready(); - virtual void writeShape(const TopoDS_Shape& shape) = 0; + virtual void writeShape(const std::string& name, const TopoDS_Shape& shape) = 0; void write(const IfcGeom::TriangulationElement* /*o*/) {} void write(const IfcGeom::BRepElement* o); bool isTesselated() const { return false; } diff --git a/src/serializers/StepSerializer.h b/src/serializers/StepSerializer.h index db9ea54d77..3c53a10d6b 100644 --- a/src/serializers/StepSerializer.h +++ b/src/serializers/StepSerializer.h @@ -36,9 +36,10 @@ public: : OpenCascadeBasedSerializer(out_filename, settings) {} virtual ~StepSerializer() {} - void writeShape(const TopoDS_Shape& shape) { + void writeShape(const std::string& name, const TopoDS_Shape& shape) { std::stringstream ss; std::streambuf *sb = std::cout.rdbuf(ss.rdbuf()); + Interface_Static::SetCVal("write.step.product.name", name.c_str()); writer.Transfer(shape, STEPControl_AsIs); std::cout.rdbuf(sb); }