mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-14 03:14:23 +00:00
Optimise create owner history to not rely on a person and organisation lookup, speeding up long procedures
This commit is contained in:
@@ -1,15 +1,4 @@
|
||||
# Note: it is the intent for you to override these with your own functions
|
||||
users = {}
|
||||
|
||||
|
||||
def get_person(ifc):
|
||||
people = ifc.by_type("IfcPerson") or [None]
|
||||
return people[0]
|
||||
|
||||
|
||||
def get_organisation(ifc):
|
||||
organisations = ifc.by_type("IfcOrganization") or [None]
|
||||
return organisations[0]
|
||||
|
||||
|
||||
def get_application(ifc):
|
||||
@@ -18,17 +7,5 @@ def get_application(ifc):
|
||||
|
||||
|
||||
def get_user(ifc):
|
||||
person = get_person(ifc)
|
||||
organisation = get_organisation(ifc)
|
||||
if not person or not organisation:
|
||||
return
|
||||
key = f"{person.id()}-{organisation.id()}"
|
||||
user = users.get(key)
|
||||
if not user:
|
||||
for element in ifc.by_type("IfcPersonAndOrganization"):
|
||||
if element.ThePerson == person and element.TheOrganization == organisation:
|
||||
users[key] = element
|
||||
user = element
|
||||
if not user:
|
||||
return ifc.create_entity("IfcPersonAndOrganization", ThePerson=person, TheOrganization=organisation)
|
||||
return user
|
||||
users = ifc.by_type("IfcPersonAndOrganization") or [None]
|
||||
return users[0]
|
||||
|
||||
Reference in New Issue
Block a user