From 05a5c3c3f9a82ff2a2d74d0b0704b10478bdd3eb Mon Sep 17 00:00:00 2001 From: Adrien Scho Date: Mon, 16 Dec 2019 01:32:14 +0100 Subject: [PATCH] fix: #734 - No XML serializer registered for IFC4X1 --- src/ifcparse/IfcHierarchyHelper.cpp | 13 +++++++++++++ src/ifcparse/IfcHierarchyHelper.h | 16 +++++++++++++++- src/serializers/XmlSerializer.cpp | 4 ++++ 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/ifcparse/IfcHierarchyHelper.cpp b/src/ifcparse/IfcHierarchyHelper.cpp index 247b2b49f4..91de05f104 100644 --- a/src/ifcparse/IfcHierarchyHelper.cpp +++ b/src/ifcparse/IfcHierarchyHelper.cpp @@ -466,6 +466,17 @@ Ifc4::IfcStyledItem* create_styled_item(Ifc4::IfcRepresentationItem* item, Ifc4: return new Ifc4::IfcStyledItem(item, style_assignments, boost::none); } +Ifc4x1::IfcStyledItem* create_styled_item(Ifc4x1::IfcRepresentationItem* item, Ifc4x1::IfcPresentationStyleAssignment* style_assignment) { + IfcEntityList::ptr style_assignments(new IfcEntityList); + style_assignments->push(style_assignment); + return new Ifc4x1::IfcStyledItem(item, style_assignments, boost::none); +} + +Ifc4x2::IfcStyledItem* create_styled_item(Ifc4x2::IfcRepresentationItem* item, Ifc4x2::IfcPresentationStyleAssignment* style_assignment) { + IfcEntityList::ptr style_assignments(new IfcEntityList); + style_assignments->push(style_assignment); + return new Ifc4x2::IfcStyledItem(item, style_assignments, boost::none); +} template void IfcHierarchyHelper::setSurfaceColour(typename Schema::IfcRepresentation* rep, typename Schema::IfcPresentationStyleAssignment* style_assignment) @@ -560,3 +571,5 @@ typename Schema::IfcGeometricRepresentationContext* IfcHierarchyHelper:: template IFC_PARSE_API class IfcHierarchyHelper; template IFC_PARSE_API class IfcHierarchyHelper; +template IFC_PARSE_API class IfcHierarchyHelper; +template IFC_PARSE_API class IfcHierarchyHelper; diff --git a/src/ifcparse/IfcHierarchyHelper.h b/src/ifcparse/IfcHierarchyHelper.h index 86f287a813..a32ecafeb6 100644 --- a/src/ifcparse/IfcHierarchyHelper.h +++ b/src/ifcparse/IfcHierarchyHelper.h @@ -79,6 +79,13 @@ namespace { return t->RelatedElements()->generalize(); } + IfcEntityList::ptr get_children_of_relation(Ifc4x1::IfcRelContainedInSpatialStructure* t) { + return t->RelatedElements()->generalize(); + } + + IfcEntityList::ptr get_children_of_relation(Ifc4x2::IfcRelContainedInSpatialStructure* t) { + return t->RelatedElements()->generalize(); + } void set_children_of_relation(IfcUtil::IfcBaseClass* t, IfcEntityList::ptr& cs) { IfcWrite::IfcWriteArgument* attr = new IfcWrite::IfcWriteArgument; attr->set(cs); @@ -95,8 +102,15 @@ namespace { void set_children_of_relation(Ifc4::IfcRelContainedInSpatialStructure* t, IfcEntityList::ptr& cs) { t->setRelatedElements(cs->as()); } -} + + void set_children_of_relation(Ifc4x1::IfcRelContainedInSpatialStructure* t, IfcEntityList::ptr& cs) { + t->setRelatedElements(cs->as()); + } + void set_children_of_relation(Ifc4x2::IfcRelContainedInSpatialStructure* t, IfcEntityList::ptr& cs) { + t->setRelatedElements(cs->as()); + } +} template class IFC_PARSE_API IfcHierarchyHelper : public IfcParse::IfcFile { public: diff --git a/src/serializers/XmlSerializer.cpp b/src/serializers/XmlSerializer.cpp index c9e0ae06f8..de055f5267 100644 --- a/src/serializers/XmlSerializer.cpp +++ b/src/serializers/XmlSerializer.cpp @@ -2,10 +2,14 @@ extern void init_XmlSerializerIfc2x3(XmlSerializerFactory::Factory*); extern void init_XmlSerializerIfc4(XmlSerializerFactory::Factory*); +extern void init_XmlSerializerIfc4x1(XmlSerializerFactory::Factory*); +extern void init_XmlSerializerIfc4x2(XmlSerializerFactory::Factory*); XmlSerializerFactory::Factory::Factory() { init_XmlSerializerIfc2x3(this); init_XmlSerializerIfc4(this); + init_XmlSerializerIfc4x1(this); + init_XmlSerializerIfc4x2(this); } void XmlSerializerFactory::Factory::bind(const std::string& schema_name, fn f) {