From da10a1060e0b48a118ead08fe0cd6d7d92a91ea1 Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Sat, 26 Jun 2021 13:23:55 +0200 Subject: [PATCH] #1475 IfcFile::recalculate_id_counter() --- src/ifcparse/IfcFile.h | 2 ++ src/ifcparse/IfcParse.cpp | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/src/ifcparse/IfcFile.h b/src/ifcparse/IfcFile.h index 9b46c4dd10..189de813f8 100644 --- a/src/ifcparse/IfcFile.h +++ b/src/ifcparse/IfcFile.h @@ -228,6 +228,8 @@ public: unsigned int FreshId() { return ++MaxId; } + void recalculate_id_counter(); + IfcUtil::IfcBaseClass* addEntity(IfcUtil::IfcBaseClass* entity); void addEntities(IfcEntityList::ptr es); diff --git a/src/ifcparse/IfcParse.cpp b/src/ifcparse/IfcParse.cpp index a6ad546582..bd8acce028 100644 --- a/src/ifcparse/IfcParse.cpp +++ b/src/ifcparse/IfcParse.cpp @@ -1494,6 +1494,16 @@ void IfcFile::initialize_(IfcParse::IfcSpfStream* s) { return; } +void IfcFile::recalculate_id_counter() { + entity_by_id_t::key_type k = 0; + for (auto& p : byid) { + if (p.first > k) { + k = p.first; + } + } + MaxId = (unsigned int)k; +} + class traversal_visitor { private: std::set& visited_;