From 1cd243f13c5bbadcc86afd09fa83a7a870eac793 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Fri, 28 May 2021 10:59:20 +1000 Subject: [PATCH] Fix #1462. Standardise IfcOpenShell API to use Pythonic argument names. --- .../bim/module/geometry/operator.py | 2 +- .../bim/module/material/operator.py | 2 +- .../blenderbim/bim/module/model/grid.py | 8 ++-- .../blenderbim/bim/module/model/operator.py | 4 +- .../bim/module/parametric/operator.py | 4 +- .../blenderbim/bim/module/pset/operator.py | 12 +++--- .../blenderbim/bim/module/qto/operator.py | 4 +- .../blenderbim/bim/module/style/operator.py | 8 ++-- .../api/grid/create_axis_curve.py | 6 +-- .../ifcopenshell/api/grid/create_grid_axis.py | 16 ++++---- .../ifcopenshell/api/material/add_material.py | 4 +- .../api/owner/add_organisation.py | 14 ++++--- .../ifcopenshell/api/owner/add_person.py | 16 ++++---- .../ifcopenshell/api/pset/add_pset.py | 16 ++++---- .../ifcopenshell/api/pset/add_qto.py | 9 +++-- .../ifcopenshell/api/pset/edit_pset.py | 14 +++---- .../ifcopenshell/api/pset/edit_qto.py | 14 +++---- .../ifcopenshell/api/style/add_style.py | 40 +++++++++---------- .../ifcopenshell/api/style/edit_style.py | 40 +++++++++---------- 19 files changed, 119 insertions(+), 114 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/geometry/operator.py b/src/blenderbim/blenderbim/bim/module/geometry/operator.py index 2ae2b39ba5..961b1b538a 100644 --- a/src/blenderbim/blenderbim/bim/module/geometry/operator.py +++ b/src/blenderbim/blenderbim/bim/module/geometry/operator.py @@ -269,7 +269,7 @@ class UpdateRepresentation(bpy.types.Operator): product = self.file.by_id(obj.BIMObjectProperties.ifc_definition_id) if product.is_a("IfcGridAxis"): - ifcopenshell.api.run("grid.create_axis_curve", self.file, **{"AxisCurve": obj, "grid_axis": product}) + ifcopenshell.api.run("grid.create_axis_curve", self.file, **{"axis_curve": obj, "grid_axis": product}) return bpy.ops.bim.edit_object_placement(obj=obj.name) diff --git a/src/blenderbim/blenderbim/bim/module/material/operator.py b/src/blenderbim/blenderbim/bim/module/material/operator.py index 11745bdf7a..1ca74fb40d 100644 --- a/src/blenderbim/blenderbim/bim/module/material/operator.py +++ b/src/blenderbim/blenderbim/bim/module/material/operator.py @@ -42,7 +42,7 @@ class AddMaterial(bpy.types.Operator): def execute(self, context): obj = bpy.data.materials.get(self.obj) if self.obj else bpy.context.active_object.active_material self.file = IfcStore.get_file() - result = ifcopenshell.api.run("material.add_material", self.file, **{"Name": obj.name}) + result = ifcopenshell.api.run("material.add_material", self.file, **{"name": obj.name}) obj.BIMObjectProperties.ifc_definition_id = result.id() Data.load(IfcStore.get_file()) material_prop_purge() diff --git a/src/blenderbim/blenderbim/bim/module/model/grid.py b/src/blenderbim/blenderbim/bim/module/model/grid.py index 1496ed9bcd..c94c68e6be 100644 --- a/src/blenderbim/blenderbim/bim/module/model/grid.py +++ b/src/blenderbim/blenderbim/bim/module/model/grid.py @@ -57,10 +57,10 @@ def add_object(self, context): result = ifcopenshell.api.run( "grid.create_grid_axis", self.file, - **{"AxisTag": tag, "AxisCurve": obj, "UVWAxes": "UAxes", "Grid": grid}, + **{"axis_tag": tag, "uvw_axes": "UAxes", "grid": grid}, ) IfcStore.link_element(result, obj) - ifcopenshell.api.run("grid.create_axis_curve", self.file, **{"AxisCurve": obj, "grid_axis": result}) + ifcopenshell.api.run("grid.create_axis_curve", self.file, **{"axis_curve": obj, "grid_axis": result}) obj.BIMObjectProperties.ifc_definition_id = result.id() axes_collection = bpy.data.collections.new("VAxes") @@ -83,10 +83,10 @@ def add_object(self, context): result = ifcopenshell.api.run( "grid.create_grid_axis", self.file, - **{"AxisTag": tag, "AxisCurve": obj, "UVWAxes": "VAxes", "Grid": grid}, + **{"axis_tag": tag, "uvw_axes": "VAxes", "grid": grid}, ) IfcStore.link_element(result, obj) - ifcopenshell.api.run("grid.create_axis_curve", self.file, **{"AxisCurve": obj, "grid_axis": result}) + ifcopenshell.api.run("grid.create_axis_curve", self.file, **{"axis_curve": obj, "grid_axis": result}) obj.BIMObjectProperties.ifc_definition_id = result.id() diff --git a/src/blenderbim/blenderbim/bim/module/model/operator.py b/src/blenderbim/blenderbim/bim/module/model/operator.py index f102f68b5f..91a1ea6b3a 100644 --- a/src/blenderbim/blenderbim/bim/module/model/operator.py +++ b/src/blenderbim/blenderbim/bim/module/model/operator.py @@ -729,8 +729,8 @@ class DumbWallGenerator: bpy.ops.bim.assign_class(obj=obj.name, ifc_class="IfcWall") bpy.ops.bim.assign_type(relating_type=self.relating_type.id(), related_object=obj.name) element = self.file.by_id(obj.BIMObjectProperties.ifc_definition_id) - pset = ifcopenshell.api.run("pset.add_pset", self.file, product=element, Name="EPset_Parametric") - ifcopenshell.api.run("pset.edit_pset", self.file, pset=pset, Properties={"Engine": "BlenderBIM.DumbWall"}) + pset = ifcopenshell.api.run("pset.add_pset", self.file, product=element, name="EPset_Parametric") + ifcopenshell.api.run("pset.edit_pset", self.file, pset=pset, properties={"Engine": "BlenderBIM.DumbWall"}) ifcopenshell.api.run("material.assign_material", self.file, product=element, type="IfcMaterialLayerSetUsage") MaterialData.load(self.file) return obj diff --git a/src/blenderbim/blenderbim/bim/module/parametric/operator.py b/src/blenderbim/blenderbim/bim/module/parametric/operator.py index 43cf4bcb0a..5035bc455d 100644 --- a/src/blenderbim/blenderbim/bim/module/parametric/operator.py +++ b/src/blenderbim/blenderbim/bim/module/parametric/operator.py @@ -78,7 +78,7 @@ def calculate_dumb_quantities(usecase_path, ifc_file, **settings): if not parametric or parametric["Engine"] != "BlenderBIM.DumbWall": return qto = ifcopenshell.api.run( - "pset.add_qto", ifc_file, should_run_listeners=False, product=product, Name="Qto_WallBaseQuantities" + "pset.add_qto", ifc_file, should_run_listeners=False, product=product, name="Qto_WallBaseQuantities" ) length = obj.dimensions[0] / unit_scale width = obj.dimensions[1] / unit_scale @@ -95,7 +95,7 @@ def calculate_dumb_quantities(usecase_path, ifc_file, **settings): net_volume = gross_volume bm.free() - ifcopenshell.api.run("pset.edit_qto", ifc_file, should_run_listeners=False, qto=qto, Properties={ + ifcopenshell.api.run("pset.edit_qto", ifc_file, should_run_listeners=False, qto=qto, properties={ "Length": round(length, 2), "Width": round(width, 2), "Height": round(height, 2), diff --git a/src/blenderbim/blenderbim/bim/module/pset/operator.py b/src/blenderbim/blenderbim/bim/module/pset/operator.py index ca67ed2fd9..d92010881d 100644 --- a/src/blenderbim/blenderbim/bim/module/pset/operator.py +++ b/src/blenderbim/blenderbim/bim/module/pset/operator.py @@ -187,8 +187,8 @@ class EditPset(bpy.types.Operator): self.file, **{ "pset": self.file.by_id(pset_id), - "Name": props.active_pset_name, - "Properties": properties, + "name": props.active_pset_name, + "properties": properties, }, ) else: @@ -197,8 +197,8 @@ class EditPset(bpy.types.Operator): self.file, **{ "qto": self.file.by_id(pset_id), - "Name": props.active_pset_name, - "Properties": properties, + "name": props.active_pset_name, + "properties": properties, }, ) Data.load(IfcStore.get_file(), oprops.ifc_definition_id) @@ -260,7 +260,7 @@ class AddPset(bpy.types.Operator): self.file, **{ "product": self.file.by_id(oprops.ifc_definition_id), - "Name": pset_name, + "name": pset_name, }, ) Data.load(IfcStore.get_file(), oprops.ifc_definition_id) @@ -281,7 +281,7 @@ class AddQto(bpy.types.Operator): self.file, **{ "product": self.file.by_id(oprops.ifc_definition_id), - "Name": props.qto_name, + "name": props.qto_name, }, ) Data.load(IfcStore.get_file(), oprops.ifc_definition_id) diff --git a/src/blenderbim/blenderbim/bim/module/qto/operator.py b/src/blenderbim/blenderbim/bim/module/qto/operator.py index ee09dc4a82..b52a89cae4 100644 --- a/src/blenderbim/blenderbim/bim/module/qto/operator.py +++ b/src/blenderbim/blenderbim/bim/module/qto/operator.py @@ -99,13 +99,13 @@ class QuantifyObjects(bpy.types.Operator): "pset.add_qto", self.file, product=self.file.by_id(obj.BIMObjectProperties.ifc_definition_id), - Name=props.qto_name, + name=props.qto_name, ) ifcopenshell.api.run( "pset.edit_qto", self.file, qto=qto, - Properties={props.prop_name: result} + properties={props.prop_name: result} ) PsetData.load(self.file, obj.BIMObjectProperties.ifc_definition_id) return {"FINISHED"} diff --git a/src/blenderbim/blenderbim/bim/module/style/operator.py b/src/blenderbim/blenderbim/bim/module/style/operator.py index cc1c5f0067..9deac2e45d 100644 --- a/src/blenderbim/blenderbim/bim/module/style/operator.py +++ b/src/blenderbim/blenderbim/bim/module/style/operator.py @@ -11,9 +11,9 @@ def get_colour_settings(material): transparency = bsdf.inputs["Alpha"].default_value diffuse_colour = bsdf.inputs["Base Color"].default_value return { - "SurfaceColour": tuple(material.diffuse_color), - "Transparency": transparency, - "DiffuseColour": tuple(diffuse_colour), + "surface_colour": tuple(material.diffuse_color), + "transparency": transparency, + "diffuse_colour": tuple(diffuse_colour), } @@ -40,7 +40,7 @@ class AddStyle(bpy.types.Operator): self.file = IfcStore.get_file() material = bpy.data.materials.get(self.material) if self.material else bpy.context.active_object.active_material settings = get_colour_settings(material) - settings["Name"] = material.name + settings["name"] = material.name settings["external_definition"] = None # TODO: Implement. See #1222 style = ifcopenshell.api.run("style.add_style", self.file, **settings) material.BIMMaterialProperties.ifc_style_id = int(style.id()) diff --git a/src/ifcopenshell-python/ifcopenshell/api/grid/create_axis_curve.py b/src/ifcopenshell-python/ifcopenshell/api/grid/create_axis_curve.py index caa3f3a04e..be4283e1a4 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/grid/create_axis_curve.py +++ b/src/ifcopenshell-python/ifcopenshell/api/grid/create_axis_curve.py @@ -8,7 +8,7 @@ class Usecase: def __init__(self, file, **settings): self.file = file self.settings = { - "AxisCurve": None, # A Blender object + "axis_curve": None, # A Blender object "grid_axis": None, } for key, value in settings.items(): @@ -24,8 +24,8 @@ class Usecase: grid = [i for i in self.file.get_inverse(self.settings["grid_axis"]) if i.is_a("IfcGrid")][0] points = [ Matrix(ifcopenshell.util.placement.get_local_placement(grid.ObjectPlacement)).inverted() - @ (self.settings["AxisCurve"].matrix_world @ v.co) - for v in self.settings["AxisCurve"].data.vertices[0:2] + @ (self.settings["axis_curve"].matrix_world @ v.co) + for v in self.settings["axis_curve"].data.vertices[0:2] ] self.settings["grid_axis"].AxisCurve = self.file.createIfcPolyline( [ diff --git a/src/ifcopenshell-python/ifcopenshell/api/grid/create_grid_axis.py b/src/ifcopenshell-python/ifcopenshell/api/grid/create_grid_axis.py index 6a98a6fc59..c9817760b5 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/grid/create_grid_axis.py +++ b/src/ifcopenshell-python/ifcopenshell/api/grid/create_grid_axis.py @@ -2,20 +2,20 @@ class Usecase: def __init__(self, file, **settings): self.file = file self.settings = { - "AxisTag": "A", - "SameSense": True, - "UVWAxes": "UAxes", # Choose which axes - "Grid": None, + "axis_tag": "A", + "same_sense": True, + "uvw_axes": "UAxes", # Choose which axes + "grid": None, } for key, value in settings.items(): self.settings[key] = value def execute(self): element = self.file.create_entity("IfcGridAxis", **{ - "AxisTag": self.settings["AxisTag"], - "SameSense": self.settings["SameSense"] + "axis_tag": self.settings["axis_tag"], + "SameSense": self.settings["same_sense"] }) - axes = list(getattr(self.settings["Grid"], self.settings["UVWAxes"]) or []) + axes = list(getattr(self.settings["grid"], self.settings["uvw_axes"]) or []) axes.append(element) - setattr(self.settings["Grid"], self.settings["UVWAxes"], axes) + setattr(self.settings["grid"], self.settings["uvw_axes"], axes) return element diff --git a/src/ifcopenshell-python/ifcopenshell/api/material/add_material.py b/src/ifcopenshell-python/ifcopenshell/api/material/add_material.py index 48ee7b4511..50927d3aa9 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/material/add_material.py +++ b/src/ifcopenshell-python/ifcopenshell/api/material/add_material.py @@ -4,9 +4,9 @@ import ifcopenshell class Usecase: def __init__(self, file, **settings): self.file = file - self.settings = {"Name": "Unnamed"} + self.settings = {"name": "Unnamed"} for key, value in settings.items(): self.settings[key] = value def execute(self): - return self.file.create_entity("IfcMaterial", **{"Name": self.settings["Name"] or "Unnamed"}) + return self.file.create_entity("IfcMaterial", **{"Name": self.settings["name"] or "Unnamed"}) diff --git a/src/ifcopenshell-python/ifcopenshell/api/owner/add_organisation.py b/src/ifcopenshell-python/ifcopenshell/api/owner/add_organisation.py index 8e5583f0c3..9b0e43bbff 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/owner/add_organisation.py +++ b/src/ifcopenshell-python/ifcopenshell/api/owner/add_organisation.py @@ -2,14 +2,16 @@ class Usecase: def __init__(self, file, **settings): self.file = file self.settings = { - "Identification": "APTR", - "Name": "Aperture Science", + "identification": "APTR", + "name": "Aperture Science", } for key, value in settings.items(): self.settings[key] = value def execute(self): - if self.file.schema == "IFC2X3": - self.settings["Id"] = self.settings["Identification"] - del self.settings["Identification"] - return self.file.create_entity("IfcOrganization", **self.settings) \ No newline at end of file + data = {"Name": self.settings["Name"]} + if self.file.schema == "IFC2X3": + data["Id"] = self.settings["identification"] + else: + data["Identification"] = self.settings["identification"] + return self.file.create_entity("IfcOrganization", **data) diff --git a/src/ifcopenshell-python/ifcopenshell/api/owner/add_person.py b/src/ifcopenshell-python/ifcopenshell/api/owner/add_person.py index d19e98adfe..9142ace85d 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/owner/add_person.py +++ b/src/ifcopenshell-python/ifcopenshell/api/owner/add_person.py @@ -2,15 +2,17 @@ class Usecase: def __init__(self, file, **settings): self.file = file self.settings = { - "Identification": "HSeldon", - "FamilyName": "Seldon", - "GivenName": "Hari", + "identification": "HSeldon", + "family_name": "Seldon", + "given_name": "Hari", } for key, value in settings.items(): self.settings[key] = value def execute(self): - if self.file.schema == "IFC2X3": - self.settings["Id"] = self.settings["Identification"] - del self.settings["Identification"] - return self.file.create_entity("IfcPerson", **self.settings) \ No newline at end of file + data = {"FamilyName": self.settings["family_name"], "GivenName": self.settings["given_name"]} + if self.file.schema == "IFC2X3": + data["Id"] = self.settings["identification"] + else: + data["Identification"] = self.settings["identification"] + return self.file.create_entity("IfcPerson", **data) diff --git a/src/ifcopenshell-python/ifcopenshell/api/pset/add_pset.py b/src/ifcopenshell-python/ifcopenshell/api/pset/add_pset.py index b5b5cfd3e2..0a032b2a4e 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/pset/add_pset.py +++ b/src/ifcopenshell-python/ifcopenshell/api/pset/add_pset.py @@ -4,7 +4,7 @@ import ifcopenshell class Usecase: def __init__(self, file, **settings): self.file = file - self.settings = {"product": None, "Name": None} + self.settings = {"product": None, "name": None} for key, value in settings.items(): self.settings[key] = value @@ -13,18 +13,18 @@ class Usecase: for rel in self.settings["product"].IsDefinedBy or []: if ( rel.is_a("IfcRelDefinesByProperties") - and rel.RelatingPropertyDefinition.Name == self.settings["Name"] + and rel.RelatingPropertyDefinition.Name == self.settings["name"] ): return rel.RelatingPropertyDefinition pset = self.file.create_entity( - "IfcPropertySet", **{"GlobalId": ifcopenshell.guid.new(), "Name": self.settings["Name"]} + "IfcPropertySet", **{"GlobalId": ifcopenshell.guid.new(), "Name": self.settings["name"]} ) self.file.create_entity( "IfcRelDefinesByProperties", **{ "GlobalId": ifcopenshell.guid.new(), - # TODO: owner history + "OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file), "RelatedObjects": [self.settings["product"]], "RelatingPropertyDefinition": pset, } @@ -32,11 +32,11 @@ class Usecase: return pset elif self.settings["product"].is_a("IfcTypeObject"): for definition in self.settings["product"].HasPropertySets or []: - if definition.Name == self.settings["Name"]: + if definition.Name == self.settings["name"]: return definition pset = self.file.create_entity( - "IfcPropertySet", **{"GlobalId": ifcopenshell.guid.new(), "Name": self.settings["Name"]} + "IfcPropertySet", **{"GlobalId": ifcopenshell.guid.new(), "Name": self.settings["name"]} ) has_property_sets = list(self.settings["product"].HasPropertySets or []) has_property_sets.append(pset) @@ -44,13 +44,13 @@ class Usecase: return pset elif self.settings["product"].is_a("IfcMaterialDefinition"): for definition in self.settings["product"].HasPropertySets or []: - if definition.Name == self.settings["Name"]: + if definition.Name == self.settings["name"]: return definition return self.file.create_entity( "IfcMaterialProperties", **{ - "Name": self.settings["Name"], + "Name": self.settings["name"], "Material": self.settings["product"], } ) diff --git a/src/ifcopenshell-python/ifcopenshell/api/pset/add_qto.py b/src/ifcopenshell-python/ifcopenshell/api/pset/add_qto.py index 4105985674..5286bd8e53 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/pset/add_qto.py +++ b/src/ifcopenshell-python/ifcopenshell/api/pset/add_qto.py @@ -1,10 +1,11 @@ import ifcopenshell +import ifcopenshell.api class Usecase: def __init__(self, file, **settings): self.file = file - self.settings = {"product": None, "Name": None} + self.settings = {"product": None, "name": None} for key, value in settings.items(): self.settings[key] = value @@ -13,18 +14,18 @@ class Usecase: for rel in self.settings["product"].IsDefinedBy or []: if ( rel.is_a("IfcRelDefinesByProperties") - and rel.RelatingPropertyDefinition.Name == self.settings["Name"] + and rel.RelatingPropertyDefinition.Name == self.settings["name"] ): return rel.RelatingPropertyDefinition qto = self.file.create_entity( - "IfcElementQuantity", **{"GlobalId": ifcopenshell.guid.new(), "Name": self.settings["Name"]} + "IfcElementQuantity", **{"GlobalId": ifcopenshell.guid.new(), "Name": self.settings["name"]} ) self.file.create_entity( "IfcRelDefinesByProperties", **{ "GlobalId": ifcopenshell.guid.new(), - # TODO: owner history + "OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file), "RelatedObjects": [self.settings["product"]], "RelatingPropertyDefinition": qto, } diff --git a/src/ifcopenshell-python/ifcopenshell/api/pset/edit_pset.py b/src/ifcopenshell-python/ifcopenshell/api/pset/edit_pset.py index 65f0222488..7507708917 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/pset/edit_pset.py +++ b/src/ifcopenshell-python/ifcopenshell/api/pset/edit_pset.py @@ -5,7 +5,7 @@ import ifcopenshell.util.pset class Usecase: def __init__(self, file, **settings): self.file = file - self.settings = {"pset": None, "Name": None, "Properties": {}} + self.settings = {"pset": None, "name": None, "properties": {}} for key, value in settings.items(): self.settings[key] = value @@ -17,8 +17,8 @@ class Usecase: self.extend_pset_with_new_properties(new_properties) def update_pset_name(self): - if self.settings["Name"]: - self.settings["pset"].Name = self.settings["Name"] + if self.settings["name"]: + self.settings["pset"].Name = self.settings["name"] def load_pset_template(self): # TODO: add IFC2X3 PsetQto template support @@ -30,19 +30,19 @@ class Usecase: self.update_existing_property(prop) def update_existing_property(self, prop): - if prop.Name not in self.settings["Properties"]: + if prop.Name not in self.settings["properties"]: return - value = self.settings["Properties"][prop.Name] + value = self.settings["properties"][prop.Name] if value is None: prop.NominalValue = None else: primary_measure_type = self.get_primary_measure_type(prop.Name, previous_value=prop.NominalValue) prop.NominalValue = self.file.create_entity(primary_measure_type, value) - del self.settings["Properties"][prop.Name] + del self.settings["properties"][prop.Name] def add_new_properties(self): properties = [] - for name, value in self.settings["Properties"].items(): + for name, value in self.settings["properties"].items(): if value is None: continue primary_measure_type = self.get_primary_measure_type(name) diff --git a/src/ifcopenshell-python/ifcopenshell/api/pset/edit_qto.py b/src/ifcopenshell-python/ifcopenshell/api/pset/edit_qto.py index 67650ef10b..ac391e4552 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/pset/edit_qto.py +++ b/src/ifcopenshell-python/ifcopenshell/api/pset/edit_qto.py @@ -4,7 +4,7 @@ import ifcopenshell class Usecase: def __init__(self, file, **settings): self.file = file - self.settings = {"qto": None, "Name": None, "Properties": {}} + self.settings = {"qto": None, "name": None, "properties": {}} for key, value in settings.items(): self.settings[key] = value @@ -16,8 +16,8 @@ class Usecase: self.extend_qto_with_new_properties(new_properties) def update_qto_name(self): - if self.settings["Name"]: - self.settings["qto"].Name = self.settings["Name"] + if self.settings["name"]: + self.settings["qto"].Name = self.settings["name"] def load_qto_template(self): # TODO: add IFC2X3 PsetQto template support @@ -29,16 +29,16 @@ class Usecase: self.update_existing_property(prop) def update_existing_property(self, prop): - if prop.Name not in self.settings["Properties"]: + if prop.Name not in self.settings["properties"]: return - value = self.settings["Properties"][prop.Name] + value = self.settings["properties"][prop.Name] if prop.is_a("IfcPhysicalSimpleQuantity"): prop[3] = float(value) if value else None - del self.settings["Properties"][prop.Name] + del self.settings["properties"][prop.Name] def add_new_properties(self): properties = [] - for name, value in self.settings["Properties"].items(): + for name, value in self.settings["properties"].items(): if value is None: continue property_type = self.get_canonical_property_type(name) diff --git a/src/ifcopenshell-python/ifcopenshell/api/style/add_style.py b/src/ifcopenshell-python/ifcopenshell/api/style/add_style.py index 6221a33674..bc7c894e3a 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/style/add_style.py +++ b/src/ifcopenshell-python/ifcopenshell/api/style/add_style.py @@ -2,15 +2,11 @@ class Usecase: def __init__(self, file, **settings): self.file = file self.settings = { - "Name": "Name", - "SurfaceColour": [], # RGB - "DiffuseColour": [], # RGB - "Transparency": 0, - "external_definition": { - "Location": None, - "Identification": None, - "Name": "Name" - }, + "name": "Name", + "surface_colour": [], # RGB + "diffuse_colour": [], # RGB + "transparency": 0, + "external_definition": {"location": None, "identification": None, "name": "Name"}, } for key, value in settings.items(): self.settings[key] = value @@ -20,22 +16,26 @@ class Usecase: 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 - return self.file.createIfcSurfaceStyle(self.settings["Name"], "BOTH", styles) + return self.file.createIfcSurfaceStyle(self.settings["name"], "BOTH", styles) def create_surface_style_rendering(self): - return self.file.create_entity("IfcSurfaceStyleRendering", **{ - "SurfaceColour": self.create_colour_rgb(self.settings["SurfaceColour"]), - "Transparency": (self.settings["Transparency"] - 1) * -1, - "ReflectanceMethod": "NOTDEFINED", - "DiffuseColour": self.create_colour_rgb(self.settings["DiffuseColour"]) - }) + return self.file.create_entity( + "IfcSurfaceStyleRendering", + **{ + "SurfaceColour": self.create_colour_rgb(self.settings["surface_colour"]), + "Transparency": (self.settings["transparency"] - 1) * -1, + "ReflectanceMethod": "NOTDEFINED", + "DiffuseColour": self.create_colour_rgb(self.settings["diffuse_colour"]), + } + ) def create_externally_defined_surface_style(self): self.file.create_entity( - "IfcExternallyDefinedSurfaceStyle", **{ - "Location": self.settings["Location"], - "Identification": self.settings["Identification"], - "Name": self.settings["Name"], + "IfcExternallyDefinedSurfaceStyle", + **{ + "Location": self.settings["location"], + "Identification": self.settings["identification"], + "Name": self.settings["name"], } ) diff --git a/src/ifcopenshell-python/ifcopenshell/api/style/edit_style.py b/src/ifcopenshell-python/ifcopenshell/api/style/edit_style.py index 61cd9311d0..e5083ff97f 100644 --- a/src/ifcopenshell-python/ifcopenshell/api/style/edit_style.py +++ b/src/ifcopenshell-python/ifcopenshell/api/style/edit_style.py @@ -3,13 +3,13 @@ class Usecase: self.file = file self.settings = { "style": None, - "SurfaceColour": [], # RGB - "DiffuseColour": [], # RGB - "Transparency": 0, + "surface_colour": [], # RGB + "diffuse_colour": [], # RGB + "transparency": 0, "external_definition": { - "Location": None, - "Identification": None, - "Name": "Name" + "location": None, + "identification": None, + "name": "Name" }, } for key, value in settings.items(): @@ -20,20 +20,20 @@ class Usecase: for element in self.file.traverse(self.settings["style"]): if element.is_a("IfcSurfaceStyleShading"): if element.SurfaceColour: - self.update_colour_rgb(element.SurfaceColour, self.settings["SurfaceColour"]) + self.update_colour_rgb(element.SurfaceColour, self.settings["surface_colour"]) else: - element.SurfaceColour = self.create_colour_rgb(self.settings["SurfaceColour"]) - element.Transparency = (self.settings["Transparency"] - 1) * -1 + element.SurfaceColour = self.create_colour_rgb(self.settings["surface_colour"]) + element.Transparency = (self.settings["transparency"] - 1) * -1 if element.is_a("IfcSurfaceStyleRendering"): if element.DiffuseColour: - self.update_colour_rgb(element.DiffuseColour, self.settings["DiffuseColour"]) + self.update_colour_rgb(element.DiffuseColour, self.settings["diffuse_colour"]) else: - element.DiffuseColour = self.create_colour_rgb(self.settings["DiffuseColour"]) + element.DiffuseColour = self.create_colour_rgb(self.settings["diffuse_colour"]) # TODO: Move to separate usecase #if element.is_a("IfcExternallyDefinedSurfaceStyle"): - # element.Location = self.settings["Location"] - # element.Identification = self.settings["Identification"] - # element.Name = self.settings["Name"] + # element.Location = self.settings["location"] + # element.Identification = self.settings["identification"] + # element.Name = self.settings["name"] # has_external_definition = True #if not has_external_definition: # styles = list(self.settings["style"].Styles) @@ -43,18 +43,18 @@ class Usecase: def create_surface_style_rendering(self): return self.file.create_entity("IfcSurfaceStyleRendering", **{ - "SurfaceColour": self.create_colour_rgb(self.settings["SurfaceColour"]), - "Transparency": (self.settings["Transparency"] - 1) * -1, + "SurfaceColour": self.create_colour_rgb(self.settings["surface_colour"]), + "Transparency": (self.settings["transparency"] - 1) * -1, "ReflectanceMethod": "NOTDEFINED", - "DiffuseColour": self.create_colour_rgb(self.settings["DiffuseColour"]) + "DiffuseColour": self.create_colour_rgb(self.settings["diffuse_colour"]) }) def create_externally_defined_surface_style(self): self.file.create_entity( "IfcExternallyDefinedSurfaceStyle", **{ - "Location": self.settings["Location"], - "Identification": self.settings["Identification"], - "Name": self.settings["Name"], + "Location": self.settings["location"], + "Identification": self.settings["identification"], + "Name": self.settings["name"], } )