2021-01-06 17:57:24 +11:00
|
|
|
class Usecase:
|
2021-03-27 19:14:32 +11:00
|
|
|
def __init__(self, file, **settings):
|
2021-01-06 17:57:24 +11:00
|
|
|
self.file = file
|
|
|
|
|
self.settings = {
|
2021-05-28 10:59:20 +10:00
|
|
|
"name": "Name",
|
|
|
|
|
"surface_colour": [], # RGB
|
|
|
|
|
"diffuse_colour": [], # RGB
|
|
|
|
|
"transparency": 0,
|
|
|
|
|
"external_definition": {"location": None, "identification": None, "name": "Name"},
|
2021-01-06 17:57:24 +11:00
|
|
|
}
|
|
|
|
|
for key, value in settings.items():
|
|
|
|
|
self.settings[key] = value
|
|
|
|
|
|
|
|
|
|
def execute(self):
|
|
|
|
|
styles = [self.create_surface_style_rendering()]
|
|
|
|
|
if self.settings["external_definition"]:
|
|
|
|
|
styles.append(self.create_externally_defined_surface_style())
|
|
|
|
|
# Name is filled out because Revit treats this incorrectly as the material name
|
2021-05-28 10:59:20 +10:00
|
|
|
return self.file.createIfcSurfaceStyle(self.settings["name"], "BOTH", styles)
|
2021-01-06 17:57:24 +11:00
|
|
|
|
|
|
|
|
def create_surface_style_rendering(self):
|
2021-05-28 10:59:20 +10:00
|
|
|
return self.file.create_entity(
|
|
|
|
|
"IfcSurfaceStyleRendering",
|
|
|
|
|
**{
|
|
|
|
|
"SurfaceColour": self.create_colour_rgb(self.settings["surface_colour"]),
|
2021-06-18 08:03:44 +10:00
|
|
|
"Transparency": self.settings["transparency"],
|
2021-05-28 10:59:20 +10:00
|
|
|
"ReflectanceMethod": "NOTDEFINED",
|
|
|
|
|
"DiffuseColour": self.create_colour_rgb(self.settings["diffuse_colour"]),
|
|
|
|
|
}
|
|
|
|
|
)
|
2021-01-06 17:57:24 +11:00
|
|
|
|
|
|
|
|
def create_externally_defined_surface_style(self):
|
|
|
|
|
self.file.create_entity(
|
2021-05-28 10:59:20 +10:00
|
|
|
"IfcExternallyDefinedSurfaceStyle",
|
|
|
|
|
**{
|
|
|
|
|
"Location": self.settings["location"],
|
|
|
|
|
"Identification": self.settings["identification"],
|
|
|
|
|
"Name": self.settings["name"],
|
2021-01-06 17:57:24 +11:00
|
|
|
}
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
def create_colour_rgb(self, colour):
|
|
|
|
|
return self.file.createIfcColourRgb(None, colour[0], colour[1], colour[2])
|