From c57209fbce3d7d36555818c76484bc6849817cd4 Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Wed, 7 Jan 2026 20:36:07 +0100 Subject: [PATCH] Fixes --- src/examples/IfcOpenHouse.cpp | 20 +++++++++++++++----- src/ifcparse/IfcHierarchyHelper.cpp | 10 +++++----- src/ifcparse/IfcParse.cpp | 4 ++-- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/examples/IfcOpenHouse.cpp b/src/examples/IfcOpenHouse.cpp index 6215c376f3..a9e79bf2cb 100644 --- a/src/examples/IfcOpenHouse.cpp +++ b/src/examples/IfcOpenHouse.cpp @@ -160,7 +160,11 @@ int main() { roof.setOwnerHistory(file.getSingle()); roof.setName("Roof"); roof.setObjectPlacement(file.addLocalPlacement(storey_placement)); +#ifdef USE_IFC4 + roof.setPredefinedType(IfcSchema::IfcRoofTypeEnum::IfcRoofType_GABLE_ROOF); +#else roof.setShapeType(IfcSchema::IfcRoofTypeEnum::IfcRoofType_GABLE_ROOF); +#endif // The roof geometry is slanted 45 degrees by specifying a direction for the box extrusion auto roof_rep = file.addEmptyRepresentation(); @@ -190,11 +194,13 @@ int main() { north_roof_part.setRepresentation(file.addMappedItem(roof_rep)); north_roof_part.setObjectPlacement(file.addLocalPlacement(roof.ObjectPlacement(), 0, 5400, 2700, 0, 0, 1, -1, 0, 0)); - auto rel = file.create(); - rel.setGlobalId(guid()); - rel.setOwnerHistory(file.getSingle()); - rel.setRelatingObject(roof); - rel.setRelatedObjects({south_roof_part, north_roof_part}); + { + auto rel = file.create(); + rel.setGlobalId(guid()); + rel.setOwnerHistory(file.getSingle()); + rel.setRelatingObject(roof); + rel.setRelatedObjects({south_roof_part, north_roof_part}); + } file.addBuildingProduct(south_roof_part); file.addBuildingProduct(north_roof_part); @@ -368,7 +374,11 @@ int main() { stair.setOwnerHistory(file.getSingle()); stair.setObjectPlacement(file.addLocalPlacement(storey_placement, 5050, 1000, 0, 0, 1, 0, 1, 0, 0)); stair.setRepresentation(file.addExtrudedPolyline(stair_points, 1200)); +#ifdef USE_IFC4 + stair.setNumberOfRisers(2); +#else stair.setNumberOfRiser(2); +#endif stair.setNumberOfTreads(2); stair.setRiserHeight(0.2); stair.setTreadLength(0.25); diff --git a/src/ifcparse/IfcHierarchyHelper.cpp b/src/ifcparse/IfcHierarchyHelper.cpp index 84742cf863..5920e2723a 100644 --- a/src/ifcparse/IfcHierarchyHelper.cpp +++ b/src/ifcparse/IfcHierarchyHelper.cpp @@ -555,7 +555,7 @@ Ifc2x3::IfcStyledItem create_styled_item(IfcParse::IfcFile* file, const Ifc2x3:: Ifc4::IfcStyledItem create_styled_item(IfcParse::IfcFile* file, Ifc4::IfcRepresentationItem item, Ifc4::IfcPresentationStyleAssignment style_assignment) { auto sitem = file->create(); sitem.setItem(item); - sitem.setStyles(std::vector{style_assignment}); + sitem.setStyles(std::vector{style_assignment}); return sitem; } #endif @@ -564,7 +564,7 @@ Ifc4::IfcStyledItem create_styled_item(IfcParse::IfcFile* file, Ifc4::IfcReprese Ifc4x1::IfcStyledItem create_styled_item(IfcParse::IfcFile* file, const Ifc4x1::IfcRepresentationItem& item, const Ifc4x1::IfcPresentationStyleAssignment& style_assignment) { auto sitem = file->create(); sitem.setItem(item); - sitem.setStyles(std::vector{style_assignment}); + sitem.setStyles(std::vector{style_assignment}); return sitem; } #endif @@ -573,7 +573,7 @@ Ifc4x1::IfcStyledItem create_styled_item(IfcParse::IfcFile* file, const Ifc4x1:: Ifc4x2::IfcStyledItem create_styled_item(IfcParse::IfcFile* file, const Ifc4x2::IfcRepresentationItem& item, const Ifc4x2::IfcPresentationStyleAssignment& style_assignment) { auto sitem = file->create(); sitem.setItem(item); - sitem.setStyles(std::vector{style_assignment}); + sitem.setStyles(std::vector{style_assignment}); return sitem; } #endif @@ -582,7 +582,7 @@ Ifc4x2::IfcStyledItem create_styled_item(IfcParse::IfcFile* file, const Ifc4x2:: Ifc4x3_rc1::IfcStyledItem create_styled_item(IfcParse::IfcFile* file, const Ifc4x3_rc1::IfcRepresentationItem& item, const Ifc4x3_rc1::IfcPresentationStyleAssignment& style_assignment) { auto sitem = file->create(); sitem.setItem(item); - sitem.setStyles(std::vector{style_assignment}); + sitem.setStyles(std::vector{style_assignment}); return sitem; } #endif @@ -591,7 +591,7 @@ Ifc4x3_rc1::IfcStyledItem create_styled_item(IfcParse::IfcFile* file, const Ifc4 Ifc4x3_rc2::IfcStyledItem create_styled_item(IfcParse::IfcFile* file, const Ifc4x3_rc2::IfcRepresentationItem& item, const Ifc4x3_rc2::IfcPresentationStyleAssignment& style_assignment) { auto sitem = file->create(); sitem.setItem(item); - sitem.setStyles(std::vector{style_assignment}); + sitem.setStyles(std::vector{style_assignment}); return sitem; } #endif diff --git a/src/ifcparse/IfcParse.cpp b/src/ifcparse/IfcParse.cpp index a4ea94b139..b9f510f2b1 100644 --- a/src/ifcparse/IfcParse.cpp +++ b/src/ifcparse/IfcParse.cpp @@ -2472,7 +2472,7 @@ std::vector IfcFile::getInverse(int instance_id, const IfcParse std::vector vals(it->value().size() / sizeof(uint32_t)); memcpy(vals.data(), it->value().data(), it->value().size()); for (auto& v : vals) { - return_value.push_back(instance_by_id(v).as()); + return_value.push_back(instance_by_id(v).template as()); } it->Next(); } @@ -2480,7 +2480,7 @@ std::vector IfcFile::getInverse(int instance_id, const IfcParse auto it = x.byref_excl_.find({ instance_id, ent->index_in_schema(), attribute_index }); if (it != x.byref_excl_.end()) { for (auto& i : it->second) { - return_value.push_back(instance_by_id(i).as()); + return_value.push_back(instance_by_id(i).template as()); } } }