mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-18 06:21:40 +00:00
Fix #1462. Standardise IfcOpenShell API to use Pythonic argument names.
This commit is contained in:
@@ -269,7 +269,7 @@ class UpdateRepresentation(bpy.types.Operator):
|
|||||||
product = self.file.by_id(obj.BIMObjectProperties.ifc_definition_id)
|
product = self.file.by_id(obj.BIMObjectProperties.ifc_definition_id)
|
||||||
|
|
||||||
if product.is_a("IfcGridAxis"):
|
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
|
return
|
||||||
|
|
||||||
bpy.ops.bim.edit_object_placement(obj=obj.name)
|
bpy.ops.bim.edit_object_placement(obj=obj.name)
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ class AddMaterial(bpy.types.Operator):
|
|||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
obj = bpy.data.materials.get(self.obj) if self.obj else bpy.context.active_object.active_material
|
obj = bpy.data.materials.get(self.obj) if self.obj else bpy.context.active_object.active_material
|
||||||
self.file = IfcStore.get_file()
|
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()
|
obj.BIMObjectProperties.ifc_definition_id = result.id()
|
||||||
Data.load(IfcStore.get_file())
|
Data.load(IfcStore.get_file())
|
||||||
material_prop_purge()
|
material_prop_purge()
|
||||||
|
|||||||
@@ -57,10 +57,10 @@ def add_object(self, context):
|
|||||||
result = ifcopenshell.api.run(
|
result = ifcopenshell.api.run(
|
||||||
"grid.create_grid_axis",
|
"grid.create_grid_axis",
|
||||||
self.file,
|
self.file,
|
||||||
**{"AxisTag": tag, "AxisCurve": obj, "UVWAxes": "UAxes", "Grid": grid},
|
**{"axis_tag": tag, "uvw_axes": "UAxes", "grid": grid},
|
||||||
)
|
)
|
||||||
IfcStore.link_element(result, obj)
|
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()
|
obj.BIMObjectProperties.ifc_definition_id = result.id()
|
||||||
|
|
||||||
axes_collection = bpy.data.collections.new("VAxes")
|
axes_collection = bpy.data.collections.new("VAxes")
|
||||||
@@ -83,10 +83,10 @@ def add_object(self, context):
|
|||||||
result = ifcopenshell.api.run(
|
result = ifcopenshell.api.run(
|
||||||
"grid.create_grid_axis",
|
"grid.create_grid_axis",
|
||||||
self.file,
|
self.file,
|
||||||
**{"AxisTag": tag, "AxisCurve": obj, "UVWAxes": "VAxes", "Grid": grid},
|
**{"axis_tag": tag, "uvw_axes": "VAxes", "grid": grid},
|
||||||
)
|
)
|
||||||
IfcStore.link_element(result, obj)
|
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()
|
obj.BIMObjectProperties.ifc_definition_id = result.id()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -729,8 +729,8 @@ class DumbWallGenerator:
|
|||||||
bpy.ops.bim.assign_class(obj=obj.name, ifc_class="IfcWall")
|
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)
|
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)
|
element = self.file.by_id(obj.BIMObjectProperties.ifc_definition_id)
|
||||||
pset = ifcopenshell.api.run("pset.add_pset", self.file, product=element, Name="EPset_Parametric")
|
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("pset.edit_pset", self.file, pset=pset, properties={"Engine": "BlenderBIM.DumbWall"})
|
||||||
ifcopenshell.api.run("material.assign_material", self.file, product=element, type="IfcMaterialLayerSetUsage")
|
ifcopenshell.api.run("material.assign_material", self.file, product=element, type="IfcMaterialLayerSetUsage")
|
||||||
MaterialData.load(self.file)
|
MaterialData.load(self.file)
|
||||||
return obj
|
return obj
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ def calculate_dumb_quantities(usecase_path, ifc_file, **settings):
|
|||||||
if not parametric or parametric["Engine"] != "BlenderBIM.DumbWall":
|
if not parametric or parametric["Engine"] != "BlenderBIM.DumbWall":
|
||||||
return
|
return
|
||||||
qto = ifcopenshell.api.run(
|
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
|
length = obj.dimensions[0] / unit_scale
|
||||||
width = obj.dimensions[1] / 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
|
net_volume = gross_volume
|
||||||
bm.free()
|
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),
|
"Length": round(length, 2),
|
||||||
"Width": round(width, 2),
|
"Width": round(width, 2),
|
||||||
"Height": round(height, 2),
|
"Height": round(height, 2),
|
||||||
|
|||||||
@@ -187,8 +187,8 @@ class EditPset(bpy.types.Operator):
|
|||||||
self.file,
|
self.file,
|
||||||
**{
|
**{
|
||||||
"pset": self.file.by_id(pset_id),
|
"pset": self.file.by_id(pset_id),
|
||||||
"Name": props.active_pset_name,
|
"name": props.active_pset_name,
|
||||||
"Properties": properties,
|
"properties": properties,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
@@ -197,8 +197,8 @@ class EditPset(bpy.types.Operator):
|
|||||||
self.file,
|
self.file,
|
||||||
**{
|
**{
|
||||||
"qto": self.file.by_id(pset_id),
|
"qto": self.file.by_id(pset_id),
|
||||||
"Name": props.active_pset_name,
|
"name": props.active_pset_name,
|
||||||
"Properties": properties,
|
"properties": properties,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
Data.load(IfcStore.get_file(), oprops.ifc_definition_id)
|
Data.load(IfcStore.get_file(), oprops.ifc_definition_id)
|
||||||
@@ -260,7 +260,7 @@ class AddPset(bpy.types.Operator):
|
|||||||
self.file,
|
self.file,
|
||||||
**{
|
**{
|
||||||
"product": self.file.by_id(oprops.ifc_definition_id),
|
"product": self.file.by_id(oprops.ifc_definition_id),
|
||||||
"Name": pset_name,
|
"name": pset_name,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
Data.load(IfcStore.get_file(), oprops.ifc_definition_id)
|
Data.load(IfcStore.get_file(), oprops.ifc_definition_id)
|
||||||
@@ -281,7 +281,7 @@ class AddQto(bpy.types.Operator):
|
|||||||
self.file,
|
self.file,
|
||||||
**{
|
**{
|
||||||
"product": self.file.by_id(oprops.ifc_definition_id),
|
"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)
|
Data.load(IfcStore.get_file(), oprops.ifc_definition_id)
|
||||||
|
|||||||
@@ -99,13 +99,13 @@ class QuantifyObjects(bpy.types.Operator):
|
|||||||
"pset.add_qto",
|
"pset.add_qto",
|
||||||
self.file,
|
self.file,
|
||||||
product=self.file.by_id(obj.BIMObjectProperties.ifc_definition_id),
|
product=self.file.by_id(obj.BIMObjectProperties.ifc_definition_id),
|
||||||
Name=props.qto_name,
|
name=props.qto_name,
|
||||||
)
|
)
|
||||||
ifcopenshell.api.run(
|
ifcopenshell.api.run(
|
||||||
"pset.edit_qto",
|
"pset.edit_qto",
|
||||||
self.file,
|
self.file,
|
||||||
qto=qto,
|
qto=qto,
|
||||||
Properties={props.prop_name: result}
|
properties={props.prop_name: result}
|
||||||
)
|
)
|
||||||
PsetData.load(self.file, obj.BIMObjectProperties.ifc_definition_id)
|
PsetData.load(self.file, obj.BIMObjectProperties.ifc_definition_id)
|
||||||
return {"FINISHED"}
|
return {"FINISHED"}
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ def get_colour_settings(material):
|
|||||||
transparency = bsdf.inputs["Alpha"].default_value
|
transparency = bsdf.inputs["Alpha"].default_value
|
||||||
diffuse_colour = bsdf.inputs["Base Color"].default_value
|
diffuse_colour = bsdf.inputs["Base Color"].default_value
|
||||||
return {
|
return {
|
||||||
"SurfaceColour": tuple(material.diffuse_color),
|
"surface_colour": tuple(material.diffuse_color),
|
||||||
"Transparency": transparency,
|
"transparency": transparency,
|
||||||
"DiffuseColour": tuple(diffuse_colour),
|
"diffuse_colour": tuple(diffuse_colour),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -40,7 +40,7 @@ class AddStyle(bpy.types.Operator):
|
|||||||
self.file = IfcStore.get_file()
|
self.file = IfcStore.get_file()
|
||||||
material = bpy.data.materials.get(self.material) if self.material else bpy.context.active_object.active_material
|
material = bpy.data.materials.get(self.material) if self.material else bpy.context.active_object.active_material
|
||||||
settings = get_colour_settings(material)
|
settings = get_colour_settings(material)
|
||||||
settings["Name"] = material.name
|
settings["name"] = material.name
|
||||||
settings["external_definition"] = None # TODO: Implement. See #1222
|
settings["external_definition"] = None # TODO: Implement. See #1222
|
||||||
style = ifcopenshell.api.run("style.add_style", self.file, **settings)
|
style = ifcopenshell.api.run("style.add_style", self.file, **settings)
|
||||||
material.BIMMaterialProperties.ifc_style_id = int(style.id())
|
material.BIMMaterialProperties.ifc_style_id = int(style.id())
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ class Usecase:
|
|||||||
def __init__(self, file, **settings):
|
def __init__(self, file, **settings):
|
||||||
self.file = file
|
self.file = file
|
||||||
self.settings = {
|
self.settings = {
|
||||||
"AxisCurve": None, # A Blender object
|
"axis_curve": None, # A Blender object
|
||||||
"grid_axis": None,
|
"grid_axis": None,
|
||||||
}
|
}
|
||||||
for key, value in settings.items():
|
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]
|
grid = [i for i in self.file.get_inverse(self.settings["grid_axis"]) if i.is_a("IfcGrid")][0]
|
||||||
points = [
|
points = [
|
||||||
Matrix(ifcopenshell.util.placement.get_local_placement(grid.ObjectPlacement)).inverted()
|
Matrix(ifcopenshell.util.placement.get_local_placement(grid.ObjectPlacement)).inverted()
|
||||||
@ (self.settings["AxisCurve"].matrix_world @ v.co)
|
@ (self.settings["axis_curve"].matrix_world @ v.co)
|
||||||
for v in self.settings["AxisCurve"].data.vertices[0:2]
|
for v in self.settings["axis_curve"].data.vertices[0:2]
|
||||||
]
|
]
|
||||||
self.settings["grid_axis"].AxisCurve = self.file.createIfcPolyline(
|
self.settings["grid_axis"].AxisCurve = self.file.createIfcPolyline(
|
||||||
[
|
[
|
||||||
|
|||||||
@@ -2,20 +2,20 @@ class Usecase:
|
|||||||
def __init__(self, file, **settings):
|
def __init__(self, file, **settings):
|
||||||
self.file = file
|
self.file = file
|
||||||
self.settings = {
|
self.settings = {
|
||||||
"AxisTag": "A",
|
"axis_tag": "A",
|
||||||
"SameSense": True,
|
"same_sense": True,
|
||||||
"UVWAxes": "UAxes", # Choose which axes
|
"uvw_axes": "UAxes", # Choose which axes
|
||||||
"Grid": None,
|
"grid": None,
|
||||||
}
|
}
|
||||||
for key, value in settings.items():
|
for key, value in settings.items():
|
||||||
self.settings[key] = value
|
self.settings[key] = value
|
||||||
|
|
||||||
def execute(self):
|
def execute(self):
|
||||||
element = self.file.create_entity("IfcGridAxis", **{
|
element = self.file.create_entity("IfcGridAxis", **{
|
||||||
"AxisTag": self.settings["AxisTag"],
|
"axis_tag": self.settings["axis_tag"],
|
||||||
"SameSense": self.settings["SameSense"]
|
"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)
|
axes.append(element)
|
||||||
setattr(self.settings["Grid"], self.settings["UVWAxes"], axes)
|
setattr(self.settings["grid"], self.settings["uvw_axes"], axes)
|
||||||
return element
|
return element
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ import ifcopenshell
|
|||||||
class Usecase:
|
class Usecase:
|
||||||
def __init__(self, file, **settings):
|
def __init__(self, file, **settings):
|
||||||
self.file = file
|
self.file = file
|
||||||
self.settings = {"Name": "Unnamed"}
|
self.settings = {"name": "Unnamed"}
|
||||||
for key, value in settings.items():
|
for key, value in settings.items():
|
||||||
self.settings[key] = value
|
self.settings[key] = value
|
||||||
|
|
||||||
def execute(self):
|
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"})
|
||||||
|
|||||||
@@ -2,14 +2,16 @@ class Usecase:
|
|||||||
def __init__(self, file, **settings):
|
def __init__(self, file, **settings):
|
||||||
self.file = file
|
self.file = file
|
||||||
self.settings = {
|
self.settings = {
|
||||||
"Identification": "APTR",
|
"identification": "APTR",
|
||||||
"Name": "Aperture Science",
|
"name": "Aperture Science",
|
||||||
}
|
}
|
||||||
for key, value in settings.items():
|
for key, value in settings.items():
|
||||||
self.settings[key] = value
|
self.settings[key] = value
|
||||||
|
|
||||||
def execute(self):
|
def execute(self):
|
||||||
|
data = {"Name": self.settings["Name"]}
|
||||||
if self.file.schema == "IFC2X3":
|
if self.file.schema == "IFC2X3":
|
||||||
self.settings["Id"] = self.settings["Identification"]
|
data["Id"] = self.settings["identification"]
|
||||||
del self.settings["Identification"]
|
else:
|
||||||
return self.file.create_entity("IfcOrganization", **self.settings)
|
data["Identification"] = self.settings["identification"]
|
||||||
|
return self.file.create_entity("IfcOrganization", **data)
|
||||||
|
|||||||
@@ -2,15 +2,17 @@ class Usecase:
|
|||||||
def __init__(self, file, **settings):
|
def __init__(self, file, **settings):
|
||||||
self.file = file
|
self.file = file
|
||||||
self.settings = {
|
self.settings = {
|
||||||
"Identification": "HSeldon",
|
"identification": "HSeldon",
|
||||||
"FamilyName": "Seldon",
|
"family_name": "Seldon",
|
||||||
"GivenName": "Hari",
|
"given_name": "Hari",
|
||||||
}
|
}
|
||||||
for key, value in settings.items():
|
for key, value in settings.items():
|
||||||
self.settings[key] = value
|
self.settings[key] = value
|
||||||
|
|
||||||
def execute(self):
|
def execute(self):
|
||||||
|
data = {"FamilyName": self.settings["family_name"], "GivenName": self.settings["given_name"]}
|
||||||
if self.file.schema == "IFC2X3":
|
if self.file.schema == "IFC2X3":
|
||||||
self.settings["Id"] = self.settings["Identification"]
|
data["Id"] = self.settings["identification"]
|
||||||
del self.settings["Identification"]
|
else:
|
||||||
return self.file.create_entity("IfcPerson", **self.settings)
|
data["Identification"] = self.settings["identification"]
|
||||||
|
return self.file.create_entity("IfcPerson", **data)
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import ifcopenshell
|
|||||||
class Usecase:
|
class Usecase:
|
||||||
def __init__(self, file, **settings):
|
def __init__(self, file, **settings):
|
||||||
self.file = file
|
self.file = file
|
||||||
self.settings = {"product": None, "Name": None}
|
self.settings = {"product": None, "name": None}
|
||||||
for key, value in settings.items():
|
for key, value in settings.items():
|
||||||
self.settings[key] = value
|
self.settings[key] = value
|
||||||
|
|
||||||
@@ -13,18 +13,18 @@ class Usecase:
|
|||||||
for rel in self.settings["product"].IsDefinedBy or []:
|
for rel in self.settings["product"].IsDefinedBy or []:
|
||||||
if (
|
if (
|
||||||
rel.is_a("IfcRelDefinesByProperties")
|
rel.is_a("IfcRelDefinesByProperties")
|
||||||
and rel.RelatingPropertyDefinition.Name == self.settings["Name"]
|
and rel.RelatingPropertyDefinition.Name == self.settings["name"]
|
||||||
):
|
):
|
||||||
return rel.RelatingPropertyDefinition
|
return rel.RelatingPropertyDefinition
|
||||||
|
|
||||||
pset = self.file.create_entity(
|
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(
|
self.file.create_entity(
|
||||||
"IfcRelDefinesByProperties",
|
"IfcRelDefinesByProperties",
|
||||||
**{
|
**{
|
||||||
"GlobalId": ifcopenshell.guid.new(),
|
"GlobalId": ifcopenshell.guid.new(),
|
||||||
# TODO: owner history
|
"OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file),
|
||||||
"RelatedObjects": [self.settings["product"]],
|
"RelatedObjects": [self.settings["product"]],
|
||||||
"RelatingPropertyDefinition": pset,
|
"RelatingPropertyDefinition": pset,
|
||||||
}
|
}
|
||||||
@@ -32,11 +32,11 @@ class Usecase:
|
|||||||
return pset
|
return pset
|
||||||
elif self.settings["product"].is_a("IfcTypeObject"):
|
elif self.settings["product"].is_a("IfcTypeObject"):
|
||||||
for definition in self.settings["product"].HasPropertySets or []:
|
for definition in self.settings["product"].HasPropertySets or []:
|
||||||
if definition.Name == self.settings["Name"]:
|
if definition.Name == self.settings["name"]:
|
||||||
return definition
|
return definition
|
||||||
|
|
||||||
pset = self.file.create_entity(
|
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 = list(self.settings["product"].HasPropertySets or [])
|
||||||
has_property_sets.append(pset)
|
has_property_sets.append(pset)
|
||||||
@@ -44,13 +44,13 @@ class Usecase:
|
|||||||
return pset
|
return pset
|
||||||
elif self.settings["product"].is_a("IfcMaterialDefinition"):
|
elif self.settings["product"].is_a("IfcMaterialDefinition"):
|
||||||
for definition in self.settings["product"].HasPropertySets or []:
|
for definition in self.settings["product"].HasPropertySets or []:
|
||||||
if definition.Name == self.settings["Name"]:
|
if definition.Name == self.settings["name"]:
|
||||||
return definition
|
return definition
|
||||||
|
|
||||||
return self.file.create_entity(
|
return self.file.create_entity(
|
||||||
"IfcMaterialProperties",
|
"IfcMaterialProperties",
|
||||||
**{
|
**{
|
||||||
"Name": self.settings["Name"],
|
"Name": self.settings["name"],
|
||||||
"Material": self.settings["product"],
|
"Material": self.settings["product"],
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
import ifcopenshell
|
import ifcopenshell
|
||||||
|
import ifcopenshell.api
|
||||||
|
|
||||||
|
|
||||||
class Usecase:
|
class Usecase:
|
||||||
def __init__(self, file, **settings):
|
def __init__(self, file, **settings):
|
||||||
self.file = file
|
self.file = file
|
||||||
self.settings = {"product": None, "Name": None}
|
self.settings = {"product": None, "name": None}
|
||||||
for key, value in settings.items():
|
for key, value in settings.items():
|
||||||
self.settings[key] = value
|
self.settings[key] = value
|
||||||
|
|
||||||
@@ -13,18 +14,18 @@ class Usecase:
|
|||||||
for rel in self.settings["product"].IsDefinedBy or []:
|
for rel in self.settings["product"].IsDefinedBy or []:
|
||||||
if (
|
if (
|
||||||
rel.is_a("IfcRelDefinesByProperties")
|
rel.is_a("IfcRelDefinesByProperties")
|
||||||
and rel.RelatingPropertyDefinition.Name == self.settings["Name"]
|
and rel.RelatingPropertyDefinition.Name == self.settings["name"]
|
||||||
):
|
):
|
||||||
return rel.RelatingPropertyDefinition
|
return rel.RelatingPropertyDefinition
|
||||||
|
|
||||||
qto = self.file.create_entity(
|
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(
|
self.file.create_entity(
|
||||||
"IfcRelDefinesByProperties",
|
"IfcRelDefinesByProperties",
|
||||||
**{
|
**{
|
||||||
"GlobalId": ifcopenshell.guid.new(),
|
"GlobalId": ifcopenshell.guid.new(),
|
||||||
# TODO: owner history
|
"OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file),
|
||||||
"RelatedObjects": [self.settings["product"]],
|
"RelatedObjects": [self.settings["product"]],
|
||||||
"RelatingPropertyDefinition": qto,
|
"RelatingPropertyDefinition": qto,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import ifcopenshell.util.pset
|
|||||||
class Usecase:
|
class Usecase:
|
||||||
def __init__(self, file, **settings):
|
def __init__(self, file, **settings):
|
||||||
self.file = file
|
self.file = file
|
||||||
self.settings = {"pset": None, "Name": None, "Properties": {}}
|
self.settings = {"pset": None, "name": None, "properties": {}}
|
||||||
for key, value in settings.items():
|
for key, value in settings.items():
|
||||||
self.settings[key] = value
|
self.settings[key] = value
|
||||||
|
|
||||||
@@ -17,8 +17,8 @@ class Usecase:
|
|||||||
self.extend_pset_with_new_properties(new_properties)
|
self.extend_pset_with_new_properties(new_properties)
|
||||||
|
|
||||||
def update_pset_name(self):
|
def update_pset_name(self):
|
||||||
if self.settings["Name"]:
|
if self.settings["name"]:
|
||||||
self.settings["pset"].Name = self.settings["Name"]
|
self.settings["pset"].Name = self.settings["name"]
|
||||||
|
|
||||||
def load_pset_template(self):
|
def load_pset_template(self):
|
||||||
# TODO: add IFC2X3 PsetQto template support
|
# TODO: add IFC2X3 PsetQto template support
|
||||||
@@ -30,19 +30,19 @@ class Usecase:
|
|||||||
self.update_existing_property(prop)
|
self.update_existing_property(prop)
|
||||||
|
|
||||||
def update_existing_property(self, prop):
|
def update_existing_property(self, prop):
|
||||||
if prop.Name not in self.settings["Properties"]:
|
if prop.Name not in self.settings["properties"]:
|
||||||
return
|
return
|
||||||
value = self.settings["Properties"][prop.Name]
|
value = self.settings["properties"][prop.Name]
|
||||||
if value is None:
|
if value is None:
|
||||||
prop.NominalValue = None
|
prop.NominalValue = None
|
||||||
else:
|
else:
|
||||||
primary_measure_type = self.get_primary_measure_type(prop.Name, previous_value=prop.NominalValue)
|
primary_measure_type = self.get_primary_measure_type(prop.Name, previous_value=prop.NominalValue)
|
||||||
prop.NominalValue = self.file.create_entity(primary_measure_type, value)
|
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):
|
def add_new_properties(self):
|
||||||
properties = []
|
properties = []
|
||||||
for name, value in self.settings["Properties"].items():
|
for name, value in self.settings["properties"].items():
|
||||||
if value is None:
|
if value is None:
|
||||||
continue
|
continue
|
||||||
primary_measure_type = self.get_primary_measure_type(name)
|
primary_measure_type = self.get_primary_measure_type(name)
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import ifcopenshell
|
|||||||
class Usecase:
|
class Usecase:
|
||||||
def __init__(self, file, **settings):
|
def __init__(self, file, **settings):
|
||||||
self.file = file
|
self.file = file
|
||||||
self.settings = {"qto": None, "Name": None, "Properties": {}}
|
self.settings = {"qto": None, "name": None, "properties": {}}
|
||||||
for key, value in settings.items():
|
for key, value in settings.items():
|
||||||
self.settings[key] = value
|
self.settings[key] = value
|
||||||
|
|
||||||
@@ -16,8 +16,8 @@ class Usecase:
|
|||||||
self.extend_qto_with_new_properties(new_properties)
|
self.extend_qto_with_new_properties(new_properties)
|
||||||
|
|
||||||
def update_qto_name(self):
|
def update_qto_name(self):
|
||||||
if self.settings["Name"]:
|
if self.settings["name"]:
|
||||||
self.settings["qto"].Name = self.settings["Name"]
|
self.settings["qto"].Name = self.settings["name"]
|
||||||
|
|
||||||
def load_qto_template(self):
|
def load_qto_template(self):
|
||||||
# TODO: add IFC2X3 PsetQto template support
|
# TODO: add IFC2X3 PsetQto template support
|
||||||
@@ -29,16 +29,16 @@ class Usecase:
|
|||||||
self.update_existing_property(prop)
|
self.update_existing_property(prop)
|
||||||
|
|
||||||
def update_existing_property(self, prop):
|
def update_existing_property(self, prop):
|
||||||
if prop.Name not in self.settings["Properties"]:
|
if prop.Name not in self.settings["properties"]:
|
||||||
return
|
return
|
||||||
value = self.settings["Properties"][prop.Name]
|
value = self.settings["properties"][prop.Name]
|
||||||
if prop.is_a("IfcPhysicalSimpleQuantity"):
|
if prop.is_a("IfcPhysicalSimpleQuantity"):
|
||||||
prop[3] = float(value) if value else None
|
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):
|
def add_new_properties(self):
|
||||||
properties = []
|
properties = []
|
||||||
for name, value in self.settings["Properties"].items():
|
for name, value in self.settings["properties"].items():
|
||||||
if value is None:
|
if value is None:
|
||||||
continue
|
continue
|
||||||
property_type = self.get_canonical_property_type(name)
|
property_type = self.get_canonical_property_type(name)
|
||||||
|
|||||||
@@ -2,15 +2,11 @@ class Usecase:
|
|||||||
def __init__(self, file, **settings):
|
def __init__(self, file, **settings):
|
||||||
self.file = file
|
self.file = file
|
||||||
self.settings = {
|
self.settings = {
|
||||||
"Name": "Name",
|
"name": "Name",
|
||||||
"SurfaceColour": [], # RGB
|
"surface_colour": [], # RGB
|
||||||
"DiffuseColour": [], # RGB
|
"diffuse_colour": [], # RGB
|
||||||
"Transparency": 0,
|
"transparency": 0,
|
||||||
"external_definition": {
|
"external_definition": {"location": None, "identification": None, "name": "Name"},
|
||||||
"Location": None,
|
|
||||||
"Identification": None,
|
|
||||||
"Name": "Name"
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
for key, value in settings.items():
|
for key, value in settings.items():
|
||||||
self.settings[key] = value
|
self.settings[key] = value
|
||||||
@@ -20,22 +16,26 @@ class Usecase:
|
|||||||
if self.settings["external_definition"]:
|
if self.settings["external_definition"]:
|
||||||
styles.append(self.create_externally_defined_surface_style())
|
styles.append(self.create_externally_defined_surface_style())
|
||||||
# Name is filled out because Revit treats this incorrectly as the material name
|
# 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):
|
def create_surface_style_rendering(self):
|
||||||
return self.file.create_entity("IfcSurfaceStyleRendering", **{
|
return self.file.create_entity(
|
||||||
"SurfaceColour": self.create_colour_rgb(self.settings["SurfaceColour"]),
|
"IfcSurfaceStyleRendering",
|
||||||
"Transparency": (self.settings["Transparency"] - 1) * -1,
|
**{
|
||||||
"ReflectanceMethod": "NOTDEFINED",
|
"SurfaceColour": self.create_colour_rgb(self.settings["surface_colour"]),
|
||||||
"DiffuseColour": self.create_colour_rgb(self.settings["DiffuseColour"])
|
"Transparency": (self.settings["transparency"] - 1) * -1,
|
||||||
})
|
"ReflectanceMethod": "NOTDEFINED",
|
||||||
|
"DiffuseColour": self.create_colour_rgb(self.settings["diffuse_colour"]),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
def create_externally_defined_surface_style(self):
|
def create_externally_defined_surface_style(self):
|
||||||
self.file.create_entity(
|
self.file.create_entity(
|
||||||
"IfcExternallyDefinedSurfaceStyle", **{
|
"IfcExternallyDefinedSurfaceStyle",
|
||||||
"Location": self.settings["Location"],
|
**{
|
||||||
"Identification": self.settings["Identification"],
|
"Location": self.settings["location"],
|
||||||
"Name": self.settings["Name"],
|
"Identification": self.settings["identification"],
|
||||||
|
"Name": self.settings["name"],
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -3,13 +3,13 @@ class Usecase:
|
|||||||
self.file = file
|
self.file = file
|
||||||
self.settings = {
|
self.settings = {
|
||||||
"style": None,
|
"style": None,
|
||||||
"SurfaceColour": [], # RGB
|
"surface_colour": [], # RGB
|
||||||
"DiffuseColour": [], # RGB
|
"diffuse_colour": [], # RGB
|
||||||
"Transparency": 0,
|
"transparency": 0,
|
||||||
"external_definition": {
|
"external_definition": {
|
||||||
"Location": None,
|
"location": None,
|
||||||
"Identification": None,
|
"identification": None,
|
||||||
"Name": "Name"
|
"name": "Name"
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for key, value in settings.items():
|
for key, value in settings.items():
|
||||||
@@ -20,20 +20,20 @@ class Usecase:
|
|||||||
for element in self.file.traverse(self.settings["style"]):
|
for element in self.file.traverse(self.settings["style"]):
|
||||||
if element.is_a("IfcSurfaceStyleShading"):
|
if element.is_a("IfcSurfaceStyleShading"):
|
||||||
if element.SurfaceColour:
|
if element.SurfaceColour:
|
||||||
self.update_colour_rgb(element.SurfaceColour, self.settings["SurfaceColour"])
|
self.update_colour_rgb(element.SurfaceColour, self.settings["surface_colour"])
|
||||||
else:
|
else:
|
||||||
element.SurfaceColour = self.create_colour_rgb(self.settings["SurfaceColour"])
|
element.SurfaceColour = self.create_colour_rgb(self.settings["surface_colour"])
|
||||||
element.Transparency = (self.settings["Transparency"] - 1) * -1
|
element.Transparency = (self.settings["transparency"] - 1) * -1
|
||||||
if element.is_a("IfcSurfaceStyleRendering"):
|
if element.is_a("IfcSurfaceStyleRendering"):
|
||||||
if element.DiffuseColour:
|
if element.DiffuseColour:
|
||||||
self.update_colour_rgb(element.DiffuseColour, self.settings["DiffuseColour"])
|
self.update_colour_rgb(element.DiffuseColour, self.settings["diffuse_colour"])
|
||||||
else:
|
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
|
# TODO: Move to separate usecase
|
||||||
#if element.is_a("IfcExternallyDefinedSurfaceStyle"):
|
#if element.is_a("IfcExternallyDefinedSurfaceStyle"):
|
||||||
# element.Location = self.settings["Location"]
|
# element.Location = self.settings["location"]
|
||||||
# element.Identification = self.settings["Identification"]
|
# element.Identification = self.settings["identification"]
|
||||||
# element.Name = self.settings["Name"]
|
# element.Name = self.settings["name"]
|
||||||
# has_external_definition = True
|
# has_external_definition = True
|
||||||
#if not has_external_definition:
|
#if not has_external_definition:
|
||||||
# styles = list(self.settings["style"].Styles)
|
# styles = list(self.settings["style"].Styles)
|
||||||
@@ -43,18 +43,18 @@ class Usecase:
|
|||||||
|
|
||||||
def create_surface_style_rendering(self):
|
def create_surface_style_rendering(self):
|
||||||
return self.file.create_entity("IfcSurfaceStyleRendering", **{
|
return self.file.create_entity("IfcSurfaceStyleRendering", **{
|
||||||
"SurfaceColour": self.create_colour_rgb(self.settings["SurfaceColour"]),
|
"SurfaceColour": self.create_colour_rgb(self.settings["surface_colour"]),
|
||||||
"Transparency": (self.settings["Transparency"] - 1) * -1,
|
"Transparency": (self.settings["transparency"] - 1) * -1,
|
||||||
"ReflectanceMethod": "NOTDEFINED",
|
"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):
|
def create_externally_defined_surface_style(self):
|
||||||
self.file.create_entity(
|
self.file.create_entity(
|
||||||
"IfcExternallyDefinedSurfaceStyle", **{
|
"IfcExternallyDefinedSurfaceStyle", **{
|
||||||
"Location": self.settings["Location"],
|
"Location": self.settings["location"],
|
||||||
"Identification": self.settings["Identification"],
|
"Identification": self.settings["identification"],
|
||||||
"Name": self.settings["Name"],
|
"Name": self.settings["name"],
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user