This commit is contained in:
Thomas Krijnen
2026-01-07 20:36:07 +01:00
parent 088a6b7204
commit c57209fbce
3 changed files with 22 additions and 12 deletions
+15 -5
View File
@@ -160,7 +160,11 @@ int main() {
roof.setOwnerHistory(file.getSingle<IfcSchema::IfcOwnerHistory>());
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<IfcSchema::IfcRelAggregates>();
rel.setGlobalId(guid());
rel.setOwnerHistory(file.getSingle<IfcSchema::IfcOwnerHistory>());
rel.setRelatingObject(roof);
rel.setRelatedObjects({south_roof_part, north_roof_part});
{
auto rel = file.create<IfcSchema::IfcRelAggregates>();
rel.setGlobalId(guid());
rel.setOwnerHistory(file.getSingle<IfcSchema::IfcOwnerHistory>());
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<IfcSchema::IfcOwnerHistory>());
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);
+5 -5
View File
@@ -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<Ifc4::IfcStyledItem>();
sitem.setItem(item);
sitem.setStyles(std::vector<Ifc4::IfcPresentationStyleAssignment>{style_assignment});
sitem.setStyles(std::vector<Ifc4::IfcStyleAssignmentSelect>{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<Ifc4x1::IfcStyledItem>();
sitem.setItem(item);
sitem.setStyles(std::vector<Ifc4x1::IfcPresentationStyleAssignment>{style_assignment});
sitem.setStyles(std::vector<Ifc4x1::IfcStyleAssignmentSelect>{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<Ifc4x2::IfcStyledItem>();
sitem.setItem(item);
sitem.setStyles(std::vector<Ifc4x2::IfcPresentationStyleAssignment>{style_assignment});
sitem.setStyles(std::vector<Ifc4x2::IfcStyleAssignmentSelect>{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<Ifc4x3_rc1::IfcStyledItem>();
sitem.setItem(item);
sitem.setStyles(std::vector<Ifc4x3_rc1::IfcPresentationStyleAssignment>{style_assignment});
sitem.setStyles(std::vector<Ifc4x3_rc1::IfcStyleAssignmentSelect>{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<Ifc4x3_rc2::IfcStyledItem>();
sitem.setItem(item);
sitem.setStyles(std::vector<Ifc4x3_rc2::IfcPresentationStyleAssignment>{style_assignment});
sitem.setStyles(std::vector<Ifc4x3_rc2::IfcStyleAssignmentSelect>{style_assignment});
return sitem;
}
#endif
+2 -2
View File
@@ -2472,7 +2472,7 @@ std::vector<express::Entity> IfcFile::getInverse(int instance_id, const IfcParse
std::vector<uint32_t> 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<express::Entity>());
return_value.push_back(instance_by_id(v).template as<express::Entity>());
}
it->Next();
}
@@ -2480,7 +2480,7 @@ std::vector<express::Entity> 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<express::Entity>());
return_value.push_back(instance_by_id(i).template as<express::Entity>());
}
}
}