You can now assign parameterized profiles to material profiles. Thanks Jesusbill!

This commit is contained in:
Dion Moult
2021-04-08 21:03:37 +10:00
parent 70fcbfa990
commit 5cea988911
8 changed files with 204 additions and 8 deletions
@@ -0,0 +1,14 @@
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {"material_profile": None, "profile": None}
for key, value in settings.items():
self.settings[key] = value
def execute(self):
if (
self.settings["material_profile"].Profile
and len(self.file.get_inverse(self.settings["material_profile"].Profile)) == 1
):
self.file.remove(self.settings["material_profile"].Profile)
self.settings["material_profile"].Profile = self.settings["profile"]
@@ -4,6 +4,7 @@ class Usecase():
self.settings = {
"profile": None,
"attributes": {},
"profile_attributes": {},
"material": None
}
for key, value in settings.items():
@@ -13,3 +14,5 @@ class Usecase():
for name, value in self.settings["attributes"].items():
setattr(self.settings["profile"], name, value)
self.settings["profile"].Material = self.settings["material"]
for name, value in self.settings["profile_attributes"].items():
setattr(self.settings["profile"].Profile, name, value)
@@ -0,0 +1,9 @@
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {"ifc_class": None}
for key, value in settings.items():
self.settings[key] = value
def execute(self):
return self.file.create_entity(self.settings["ifc_class"])
@@ -0,0 +1,17 @@
class Data:
is_loaded = False
profiles = {}
@classmethod
def purge(cls):
cls.is_loaded = False
cls.profiles = {}
@classmethod
def load(cls, file):
if not file:
return
cls.profiles = {}
for profile in file.by_type("IfcProfileDef"):
cls.profiles[profile.id()] = profile.get_info()
cls.is_loaded = True