Run black, and add black to a "qa" target to make it a standardised process.

This commit is contained in:
Dion Moult
2021-09-09 21:27:23 +10:00
parent 95903c965d
commit 865c0f4895
305 changed files with 1968 additions and 1143 deletions
@@ -37,12 +37,14 @@ class Data:
if data_type == "enum":
enum_items = ifcopenshell.util.attribute.get_enum_items(attribute)
cls.products[product_id].append({
"name": attribute.name(),
"value": value,
"type": data_type,
"enum_items": enum_items,
"list_type": list_type,
"is_optional": attribute.optional(),
"is_null": getattr(product, attribute.name()) is None
})
cls.products[product_id].append(
{
"name": attribute.name(),
"value": value,
"type": data_type,
"enum_items": enum_items,
"list_type": list_type,
"is_optional": attribute.optional(),
"is_null": getattr(product, attribute.name()) is None,
}
)
@@ -57,7 +57,7 @@ class Data:
for reference in cls._file.by_type("IfcClassificationReference"):
data = reference.get_info()
if reference.ReferencedSource:
#data["ReferencedSource"] = cls.get_referenced_source(reference.ReferencedSource)
# data["ReferencedSource"] = cls.get_referenced_source(reference.ReferencedSource)
data["ReferencedSource"] = reference.ReferencedSource.id()
cls.references[reference.id()] = data
@@ -1,10 +1,7 @@
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {
"classification": None,
"attributes": {}
}
self.settings = {"classification": None, "attributes": {}}
for key, value in settings.items():
self.settings[key] = value
@@ -1,10 +1,7 @@
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {
"reference": None,
"attributes": {}
}
self.settings = {"reference": None, "attributes": {}}
for key, value in settings.items():
self.settings[key] = value
@@ -1,5 +1,6 @@
import ifcopenshell
class Usecase:
def __init__(self, file, **settings):
self.file = file
@@ -10,11 +11,14 @@ class Usecase:
self.settings[key] = value
def execute(self):
metric = self.file.create_entity("IfcMetric", **{
"Name": "Unnamed",
"ConstraintGrade": "NOTDEFINED",
"Benchmark": "EQUALTO",
})
metric = self.file.create_entity(
"IfcMetric",
**{
"Name": "Unnamed",
"ConstraintGrade": "NOTDEFINED",
"Benchmark": "EQUALTO",
}
)
if self.settings["objective"]:
benchmark_values = list(self.settings["objective"].BenchmarkValues or [])
benchmark_values.append(metric)
@@ -1,5 +1,6 @@
import ifcopenshell
class Usecase:
def __init__(self, file, **settings):
self.file = file
@@ -8,8 +9,6 @@ class Usecase:
self.settings[key] = value
def execute(self):
return self.file.create_entity("IfcObjective", **{
"Name": "Unnamed",
"ConstraintGrade": "NOTDEFINED",
"ObjectiveQualifier": "NOTDEFINED"
})
return self.file.create_entity(
"IfcObjective", **{"Name": "Unnamed", "ConstraintGrade": "NOTDEFINED", "ObjectiveQualifier": "NOTDEFINED"}
)
@@ -22,8 +22,11 @@ class Usecase:
for rel in self.file.by_type("IfcRelAssociatesConstraint"):
if rel.RelatingConstraint == self.settings["constraint"]:
return rel
return self.file.create_entity("IfcRelAssociatesConstraint", **{
"GlobalId": ifcopenshell.guid.new(),
# TODO: owner history
"RelatingConstraint": self.settings["constraint"]
})
return self.file.create_entity(
"IfcRelAssociatesConstraint",
**{
"GlobalId": ifcopenshell.guid.new(),
# TODO: owner history
"RelatingConstraint": self.settings["constraint"],
}
)
@@ -15,10 +15,9 @@ class Data:
cls.is_loaded = False
cls.products = {}
cls.objectives = {}
cls.metrics ={}
cls.metrics = {}
cls.references = {}
@classmethod
def load(cls, file, product_id=None):
cls._file = file
@@ -1,10 +1,7 @@
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {
"metric": None,
"attributes": {}
}
self.settings = {"metric": None, "attributes": {}}
for key, value in settings.items():
self.settings[key] = value
@@ -1,10 +1,7 @@
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {
"objective": None,
"attributes": {}
}
self.settings = {"objective": None, "attributes": {}}
for key, value in settings.items():
self.settings[key] = value
@@ -35,12 +35,15 @@ class Usecase:
project.RepresentationContexts = contexts
return context
parent = parent[0]
return self.file.create_entity("IfcGeometricRepresentationSubContext", **{
"ContextIdentifier": self.settings["subcontext"],
"ContextType": self.settings["context"],
"ParentContext": parent,
"TargetView": self.settings["target_view"],
})
return self.file.create_entity(
"IfcGeometricRepresentationSubContext",
**{
"ContextIdentifier": self.settings["subcontext"],
"ContextType": self.settings["context"],
"ParentContext": parent,
"TargetView": self.settings["target_view"],
}
)
def create_origin(self):
self.origin = self.file.createIfcAxis2Placement3D(
@@ -20,8 +20,5 @@ class Data:
"ContextIdentifier": subcontext.ContextIdentifier,
"TargetView": subcontext.TargetView,
}
cls.contexts[int(context.id())] = {
"ContextType": context.ContextType,
"HasSubContexts": subcontexts
}
cls.contexts[int(context.id())] = {"ContextType": context.ContextType, "HasSubContexts": subcontexts}
cls.is_loaded = True
@@ -1,5 +1,6 @@
import ifcopenshell
class Usecase:
def __init__(self, file, **settings):
self.file = file
@@ -9,7 +10,6 @@ class Usecase:
def execute(self):
id_attribute = "DocumentId" if self.file.schema == "IFC2X3" else "Identification"
return self.file.create_entity("IfcDocumentInformation", **{
id_attribute: ifcopenshell.guid.new(),
"Name": "Unnamed"
})
return self.file.create_entity(
"IfcDocumentInformation", **{id_attribute: ifcopenshell.guid.new(), "Name": "Unnamed"}
)
@@ -1,5 +1,6 @@
import ifcopenshell
class Usecase:
def __init__(self, file, **settings):
self.file = file
@@ -9,6 +10,4 @@ class Usecase:
def execute(self):
id_attribute = "ItemReference" if self.file.schema == "IFC2X3" else "Identification"
return self.file.create_entity("IfcDocumentReference", **{
id_attribute: ifcopenshell.guid.new()
})
return self.file.create_entity("IfcDocumentReference", **{id_attribute: ifcopenshell.guid.new()})
@@ -34,8 +34,11 @@ class Usecase:
):
return self.settings["document"].DocumentInfoForObjects[0]
return self.file.create_entity("IfcRelAssociatesDocument", **{
"GlobalId": ifcopenshell.guid.new(),
# TODO: owner history
"RelatingDocument": self.settings["document"]
})
return self.file.create_entity(
"IfcRelAssociatesDocument",
**{
"GlobalId": ifcopenshell.guid.new(),
# TODO: owner history
"RelatingDocument": self.settings["document"],
}
)
@@ -1,10 +1,7 @@
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {
"information": None,
"attributes": {}
}
self.settings = {"information": None, "attributes": {}}
for key, value in settings.items():
self.settings[key] = value
@@ -1,10 +1,7 @@
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {
"reference": None,
"attributes": {}
}
self.settings = {"reference": None, "attributes": {}}
for key, value in settings.items():
self.settings[key] = value
@@ -28,6 +28,6 @@ class Data:
"ContextType": c.ContextType,
"ContextIdentifier": c.ContextIdentifier,
"TargetView": c.TargetView if c.is_a("IfcGeometricRepresentationSubContext") else "",
}
},
}
cls.products[product_id].append(rep_id)
@@ -11,10 +11,13 @@ class Usecase:
if not source_crs:
return
projected_crs = self.file.create_entity("IfcProjectedCRS", **{"Name": ""})
self.file.create_entity("IfcMapConversion", **{
"SourceCRS": source_crs,
"TargetCRS": projected_crs,
"Eastings": 0,
"Northings": 0,
"OrthogonalHeight": 0,
})
self.file.create_entity(
"IfcMapConversion",
**{
"SourceCRS": source_crs,
"TargetCRS": projected_crs,
"Eastings": 0,
"Northings": 0,
"OrthogonalHeight": 0,
}
)
@@ -1,5 +1,3 @@
class Usecase:
def __init__(self, file, **settings):
self.file = file
@@ -11,10 +11,9 @@ class Usecase:
self.settings[key] = value
def execute(self):
element = self.file.create_entity("IfcGridAxis", **{
"axis_tag": self.settings["axis_tag"],
"SameSense": self.settings["same_sense"]
})
element = self.file.create_entity(
"IfcGridAxis", **{"axis_tag": self.settings["axis_tag"], "SameSense": self.settings["same_sense"]}
)
axes = list(getattr(self.settings["grid"], self.settings["uvw_axes"]) or [])
axes.append(element)
setattr(self.settings["grid"], self.settings["uvw_axes"], axes)
@@ -10,8 +10,11 @@ class Usecase:
self.settings[key] = value
def execute(self):
return self.file.create_entity("IfcGroup", **{
"GlobalId": ifcopenshell.guid.new(),
"OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file),
"Name": "Unnamed"
})
return self.file.create_entity(
"IfcGroup",
**{
"GlobalId": ifcopenshell.guid.new(),
"OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file),
"Name": "Unnamed",
}
)
@@ -14,12 +14,15 @@ class Usecase:
def execute(self):
if not self.settings["group"].IsGroupedBy:
return self.file.create_entity("IfcRelAssignsToGroup", **{
"GlobalId": ifcopenshell.guid.new(),
"OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file),
"RelatedObjects": [self.settings["product"]],
"RelatingGroup": self.settings["group"]
})
return self.file.create_entity(
"IfcRelAssignsToGroup",
**{
"GlobalId": ifcopenshell.guid.new(),
"OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file),
"RelatedObjects": [self.settings["product"]],
"RelatingGroup": self.settings["group"],
}
)
rel = self.settings["group"].IsGroupedBy[0]
related_objects = set(rel.RelatedObjects) or set()
related_objects.add(self.settings["product"])
@@ -21,4 +21,4 @@ class Data:
data = group.get_info()
del data["OwnerHistory"]
cls.groups[group.id()] = data
cls.is_loaded=True
cls.is_loaded = True
@@ -1,10 +1,7 @@
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {
"group": None,
"attributes": {}
}
self.settings = {"group": None, "attributes": {}}
for key, value in settings.items():
self.settings[key] = value
@@ -6,6 +6,4 @@ class Usecase:
self.settings[key] = value
def execute(self):
return self.file.create_entity("IfcPresentationLayerAssignment", **{
"Name": "Unnamed"
})
return self.file.create_entity("IfcPresentationLayerAssignment", **{"Name": "Unnamed"})
@@ -1,10 +1,7 @@
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {
"layer": None,
"attributes": {}
}
self.settings = {"layer": None, "attributes": {}}
for key, value in settings.items():
self.settings[key] = value
@@ -7,10 +7,9 @@ class Usecase:
def execute(self):
layers = list(self.settings["layer_set"].MaterialLayers or [])
layer = self.file.create_entity("IfcMaterialLayer", **{
"Material": self.settings["material"],
"LayerThickness": 1.
})
layer = self.file.create_entity(
"IfcMaterialLayer", **{"Material": self.settings["material"], "LayerThickness": 1.0}
)
layers.append(layer)
self.settings["layer_set"].MaterialLayers = layers
return layer
@@ -1,10 +1,7 @@
class Usecase():
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {
"element": None,
"attributes": {}
}
self.settings = {"element": None, "attributes": {}}
for key, value in settings.items():
self.settings[key] = value
@@ -1,11 +1,7 @@
class Usecase():
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {
"constituent": None,
"attributes": {},
"material": None
}
self.settings = {"constituent": None, "attributes": {}, "material": None}
for key, value in settings.items():
self.settings[key] = value
@@ -1,11 +1,7 @@
class Usecase():
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {
"layer": None,
"attributes": {},
"material": None
}
self.settings = {"layer": None, "attributes": {}, "material": None}
for key, value in settings.items():
self.settings[key] = value
@@ -1,12 +1,7 @@
class Usecase():
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {
"profile": None,
"attributes": {},
"profile_attributes": {},
"material": None
}
self.settings = {"profile": None, "attributes": {}, "profile_attributes": {}, "material": None}
for key, value in settings.items():
self.settings[key] = value
@@ -46,11 +46,14 @@ class Usecase:
name = dummy_profile.attribute_name(i)
if "Radius" in name and name != "RoundingRadius":
dummy_profile[i] = None
dummy_solid = self.dummy.create_entity("IfcExtrudedAreaSolid", **{
"SweptArea": dummy_profile,
"ExtrudedDirection": self.dummy.createIfcDirection((0., 0., 1.)),
"Depth": 1
})
dummy_solid = self.dummy.create_entity(
"IfcExtrudedAreaSolid",
**{
"SweptArea": dummy_profile,
"ExtrudedDirection": self.dummy.createIfcDirection((0.0, 0.0, 1.0)),
"Depth": 1,
}
)
self.settings_2d = ifcopenshell.geom.settings()
self.settings_2d.set(self.settings_2d.INCLUDE_CURVES, True)
shape = ifcopenshell.geom.create_shape(self.settings_2d, dummy_solid)
@@ -77,61 +80,61 @@ class Usecase:
def get_bottom_left(self, shape):
v = shape.verts
x = [v[i] for i in range(0, len(v), 3)]
y = [v[i+1] for i in range(0, len(v), 3)]
y = [v[i + 1] for i in range(0, len(v), 3)]
width = max(x) - min(x)
height = max(y) - min(y)
return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((-width/2, height/2, 0.)))
return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((-width / 2, height / 2, 0.0)))
def get_bottom_centre(self, shape):
v = shape.verts
y = [v[i+1] for i in range(0, len(v), 3)]
y = [v[i + 1] for i in range(0, len(v), 3)]
height = max(y) - min(y)
return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((0., height/2, 0.)))
return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((0.0, height / 2, 0.0)))
def get_bottom_right(self, shape):
v = shape.verts
x = [v[i] for i in range(0, len(v), 3)]
y = [v[i+1] for i in range(0, len(v), 3)]
y = [v[i + 1] for i in range(0, len(v), 3)]
width = max(x) - min(x)
height = max(y) - min(y)
return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((width/2, height/2, 0.)))
return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((width / 2, height / 2, 0.0)))
def get_mid_depth_left(self, shape):
v = shape.verts
x = [v[i] for i in range(0, len(v), 3)]
width = max(x) - min(x)
return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((-width/2, 0., 0.)))
return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((-width / 2, 0.0, 0.0)))
def get_mid_depth_centre(self, shape):
return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((0., 0., 0.)))
return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((0.0, 0.0, 0.0)))
def get_mid_depth_right(self, shape):
v = shape.verts
x = [v[i] for i in range(0, len(v), 3)]
width = max(x) - min(x)
return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((width/2, 0., 0.)))
return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((width / 2, 0.0, 0.0)))
def get_top_left(self, shape):
v = shape.verts
x = [v[i] for i in range(0, len(v), 3)]
y = [v[i+1] for i in range(0, len(v), 3)]
y = [v[i + 1] for i in range(0, len(v), 3)]
width = max(x) - min(x)
height = max(y) - min(y)
return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((-width/2, -height/2, 0.)))
return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((-width / 2, -height / 2, 0.0)))
def get_top_centre(self, shape):
v = shape.verts
y = [v[i+1] for i in range(0, len(v), 3)]
y = [v[i + 1] for i in range(0, len(v), 3)]
height = max(y) - min(y)
return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((0., -height/2, 0.)))
return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((0.0, -height / 2, 0.0)))
def get_top_right(self, shape):
v = shape.verts
x = [v[i] for i in range(0, len(v), 3)]
y = [v[i+1] for i in range(0, len(v), 3)]
y = [v[i + 1] for i in range(0, len(v), 3)]
width = max(x) - min(x)
height = max(y) - min(y)
return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((width/2, -height/2, 0.)))
return self.file.createIfcAxis2Placement3D(self.file.createIfcCartesianPoint((width / 2, -height / 2, 0.0)))
def update_representation(self, element):
representation = ifcopenshell.util.representation.get_representation(element, "Model", "Body", "MODEL_VIEW")
@@ -7,7 +7,9 @@ class Usecase:
def execute(self):
address = self.file.create_entity(self.settings["ifc_class"], "OFFICE")
addresses = list(self.settings["assigned_object"].Addresses) if self.settings["assigned_object"].Addresses else []
addresses = (
list(self.settings["assigned_object"].Addresses) if self.settings["assigned_object"].Addresses else []
)
addresses.append(address)
self.settings["assigned_object"].Addresses = addresses
return address
@@ -1,10 +1,7 @@
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {
"address": None,
"attributes": {}
}
self.settings = {"address": None, "attributes": {}}
for key, value in settings.items():
self.settings[key] = value
@@ -1,10 +1,7 @@
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {
"organisation": None,
"attributes": {}
}
self.settings = {"organisation": None, "attributes": {}}
for key, value in settings.items():
self.settings[key] = value
@@ -1,10 +1,7 @@
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {
"person": None,
"attributes": {}
}
self.settings = {"person": None, "attributes": {}}
for key, value in settings.items():
self.settings[key] = value
@@ -1,10 +1,7 @@
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {
"role": None,
"attributes": {}
}
self.settings = {"role": None, "attributes": {}}
for key, value in settings.items():
self.settings[key] = value
@@ -3,7 +3,7 @@
def get_person(ifc):
people = ifc.by_type("IfcPerson") or [None]
return people [0]
return people[0]
def get_organisation(ifc):
@@ -1,4 +1,4 @@
class Usecase():
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {"profile": None, "attributes": {}}
@@ -9,13 +9,16 @@ class Usecase:
self.settings[key] = value
def execute(self):
prop_template = self.file.create_entity("IfcSimplePropertyTemplate", **{
"GlobalId": ifcopenshell.guid.new(),
"Name": "NewProperty",
"PrimaryMeasureType": "IfcLabel",
"TemplateType": "P_SINGLEVALUE",
"AccessState": "READWRITE"
})
prop_template = self.file.create_entity(
"IfcSimplePropertyTemplate",
**{
"GlobalId": ifcopenshell.guid.new(),
"Name": "NewProperty",
"PrimaryMeasureType": "IfcLabel",
"TemplateType": "P_SINGLEVALUE",
"AccessState": "READWRITE",
}
)
has_property_templates = list(self.settings["pset_template"].HasPropertyTemplates or [])
has_property_templates.append(prop_template)
self.settings["pset_template"].HasPropertyTemplates = has_property_templates
@@ -9,9 +9,12 @@ class Usecase:
self.settings[key] = value
def execute(self):
self.file.create_entity("IfcPropertySetTemplate", **{
"GlobalId": ifcopenshell.guid.new(),
"Name": "New_Pset",
"TemplateType": "PSET_TYPEDRIVENONLY",
"ApplicableEntity": "IfcTypeObject"
})
self.file.create_entity(
"IfcPropertySetTemplate",
**{
"GlobalId": ifcopenshell.guid.new(),
"Name": "New_Pset",
"TemplateType": "PSET_TYPEDRIVENONLY",
"ApplicableEntity": "IfcTypeObject",
}
)
@@ -29,6 +29,6 @@ class Data:
"GlobalId": data["GlobalId"],
"Name": data["Name"],
"Description": data["Description"],
"PrimaryMeasureType": data["PrimaryMeasureType"]
"PrimaryMeasureType": data["PrimaryMeasureType"],
}
cls.is_loaded = True
@@ -4,9 +4,7 @@ import ifcopenshell.util.element
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {
"prop_template": None
}
self.settings = {"prop_template": None}
for key, value in settings.items():
self.settings[key] = value
@@ -4,9 +4,7 @@ import ifcopenshell.util.element
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {
"pset_template": None
}
self.settings = {"pset_template": None}
for key, value in settings.items():
self.settings[key] = value
@@ -25,11 +25,12 @@ class Usecase:
# https://forums.buildingsmart.org/t/what-are-allowed-to-be-root-level-construction-resources/3550
if self.settings["parent_resource"]:
ifcopenshell.api.run(
"nest.assign_object", self.file, related_object=resource, relating_object=self.settings["parent_resource"]
"nest.assign_object",
self.file,
related_object=resource,
relating_object=self.settings["parent_resource"],
)
else:
context = self.file.by_type("IfcContext")[0]
ifcopenshell.api.run(
"project.assign_declaration", self.file, definition=resource, relating_context=context
)
ifcopenshell.api.run("project.assign_declaration", self.file, definition=resource, relating_context=context)
return resource
@@ -1,5 +1,6 @@
import ifcopenshell.util.date
class Usecase:
def __init__(self, file, **settings):
self.file = file
@@ -23,7 +23,7 @@ class Data(CostValueTrait):
return
cls.load_resources()
cls.load_resource_times()
cls.is_loaded=True
cls.is_loaded = True
@classmethod
def load_resources(cls):
@@ -63,6 +63,6 @@ class Data(CostValueTrait):
continue
if "Start" in key or "Finish" in key or key == "StatusTime":
data[key] = ifcopenshell.util.date.ifc2datetime(value)
elif "Work" in key or key =="LevelingDelay":
elif "Work" in key or key == "LevelingDelay":
data[key] = ifcopenshell.util.date.ifc2datetime(value)
cls.resource_times[resource_time.id()] = data
@@ -18,10 +18,7 @@ class Usecase:
and "ScheduleFinish" in self.settings["attributes"].keys()
):
del self.settings["attributes"]["ScheduleFinish"]
if (
self.settings["attributes"].get("ActualWork", None)
and "ActualFinish" in self.settings["attributes"].keys()
):
if self.settings["attributes"].get("ActualWork", None) and "ActualFinish" in self.settings["attributes"].keys():
del self.settings["attributes"]["ActualFinish"]
for name, value in self.settings["attributes"].items():
@@ -14,10 +14,13 @@ class Usecase:
self.settings[key] = value
def execute(self):
element = self.file.create_entity(self.settings["ifc_class"], **{
"GlobalId": ifcopenshell.guid.new(),
"OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file)
})
element = self.file.create_entity(
self.settings["ifc_class"],
**{
"GlobalId": ifcopenshell.guid.new(),
"OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file),
}
)
element.Name = self.settings["name"] or None
if self.settings["predefined_type"]:
if hasattr(element, "PredefinedType"):
@@ -13,5 +13,5 @@ class Data:
cls.products[product_id] = {
"type": product.is_a(),
"PredefinedType": product.PredefinedType if hasattr(product, "PredefinedType") else None,
"ObjectType": product.ObjectType if hasattr(product, "ObjectType") else None
"ObjectType": product.ObjectType if hasattr(product, "ObjectType") else None,
}
@@ -1,5 +1,6 @@
import ifcopenshell.util.date
class Usecase:
def __init__(self, file, **settings):
self.file = file
@@ -25,7 +25,5 @@ class Usecase:
work_plan.StartTime = ifcopenshell.util.date.datetime2ifc(self.settings["start_time"], "IfcDateTime")
context = self.file.by_type("IfcContext")[0]
ifcopenshell.api.run(
"project.assign_declaration", self.file, definition=work_plan, relating_context=context
)
ifcopenshell.api.run("project.assign_declaration", self.file, definition=work_plan, relating_context=context)
return work_plan
@@ -38,7 +38,11 @@ class Usecase:
if not work_schedule:
return default_seconds_per_day
psets = ifcopenshell.util.element.get_psets(work_schedule)
if not psets or "Pset_WorkControlCommon" not in psets or "WorkDayDuration" not in psets["Pset_WorkControlCommon"]:
if (
not psets
or "Pset_WorkControlCommon" not in psets
or "WorkDayDuration" not in psets["Pset_WorkControlCommon"]
):
return default_seconds_per_day
work_day_duration = ifcopenshell.util.date.ifc2datetime(psets["Pset_WorkControlCommon"]["WorkDayDuration"])
return work_day_duration.seconds
@@ -142,8 +142,14 @@ class Data:
for r in task.HasAssignments
if r.is_a("IfcRelAssignsToProduct")
]
[data["Resources"].extend([o.id() for o in r.RelatedObjects if o.is_a("IfcResource")]) for r in task.OperatesOn]
[data["Controls"].extend([o.id() for o in r.RelatedObjects if o.is_a("IfcControl")]) for r in task.OperatesOn]
[
data["Resources"].extend([o.id() for o in r.RelatedObjects if o.is_a("IfcResource")])
for r in task.OperatesOn
]
[
data["Controls"].extend([o.id() for o in r.RelatedObjects if o.is_a("IfcControl")])
for r in task.OperatesOn
]
[data["Inputs"].extend([o.id() for o in r.RelatedObjects if o.is_a("IfcProduct")]) for r in task.OperatesOn]
[data["IsPredecessorTo"].append(rel.id()) for rel in task.IsPredecessorTo or []]
[data["IsSuccessorFrom"].append(rel.id()) for rel in task.IsSuccessorFrom or []]
@@ -55,13 +55,10 @@ class Usecase:
elif "ScheduleFinish" in self.settings["attributes"].keys() and self.settings["task_time"].ScheduleStart:
self.calculate_duration()
if (
self.settings["task_time"].ScheduleDuration
and (
"ScheduleStart" in self.settings["attributes"].keys()
or "ScheduleFinish" in self.settings["attributes"].keys()
or "ScheduleDuration" in self.settings["attributes"].keys()
)
if self.settings["task_time"].ScheduleDuration and (
"ScheduleStart" in self.settings["attributes"].keys()
or "ScheduleFinish" in self.settings["attributes"].keys()
or "ScheduleDuration" in self.settings["attributes"].keys()
):
ifcopenshell.api.run("sequence.cascade_schedule", self.file, task=self.task)
@@ -19,9 +19,5 @@ class Usecase:
for rel in self.settings["work_schedule"].Controls:
for related_object in rel.RelatedObjects:
if related_object.is_a("IfcTask"):
ifcopenshell.api.run(
"sequence.remove_task",
self.file,
task=related_object
)
ifcopenshell.api.run("sequence.remove_task", self.file, task=related_object)
self.file.remove(self.settings["work_schedule"])
@@ -15,6 +15,4 @@ class Usecase:
self.file.remove(self.settings["rel_sequence"].TimeLag)
else:
self.settings["rel_sequence"].TimeLag = None
ifcopenshell.api.run(
"sequence.cascade_schedule", self.file, task=self.settings["rel_sequence"].RelatedProcess
)
ifcopenshell.api.run("sequence.cascade_schedule", self.file, task=self.settings["rel_sequence"].RelatedProcess)
@@ -46,5 +46,5 @@ class Data:
"Name": element.Name,
"LongName": element.LongName,
"Decomposes": decomposes,
"IsDecomposedBy": is_decomposed_by
"IsDecomposedBy": is_decomposed_by,
}
@@ -14,12 +14,15 @@ class Usecase:
def execute(self):
if not self.settings["structural_analysis_model"].IsGroupedBy:
return self.file.create_entity("IfcRelAssignsToGroup", **{
"GlobalId": ifcopenshell.guid.new(),
"OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file),
"RelatedObjects": [self.settings["product"]],
"RelatingGroup": self.settings["structural_analysis_model"]
})
return self.file.create_entity(
"IfcRelAssignsToGroup",
**{
"GlobalId": ifcopenshell.guid.new(),
"OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file),
"RelatedObjects": [self.settings["product"]],
"RelatingGroup": self.settings["structural_analysis_model"],
}
)
rel = self.settings["structural_analysis_model"].IsGroupedBy[0]
related_objects = set(rel.RelatedObjects) or set()
related_objects.add(self.settings["product"])
@@ -155,7 +155,9 @@ class Data:
if connection.is_a("IfcStructuralCurveConnection"):
data["Axis"] = data["Axis"].id() if data["Axis"] is not None else None
if connection.is_a("IfcStructuralPointConnection"):
data["ConditionCoordinateSystem"] = data["ConditionCoordinateSystem"].id() if data["ConditionCoordinateSystem"] is not None else None
data["ConditionCoordinateSystem"] = (
data["ConditionCoordinateSystem"].id() if data["ConditionCoordinateSystem"] is not None else None
)
data["ConnectsStructuralMembers"] = []
@@ -238,7 +240,7 @@ class Data:
data["Representation"] = data["Representation"].id() if data["Representation"] is not None else None
if member.is_a("IfcStructuralCurveMember"):
data["Axis"] = data["Axis"].id() if data["Axis"] is not None else None
data["ConnectsStructuralActivities"] = []
data["ConnectedBy"] = []
@@ -249,6 +251,5 @@ class Data:
for rel in member.ConnectedBy or []:
cls.load_connects_structural_member(rel)
data["ConnectedBy"].append(rel.id())
cls.members[member.id()] = data
@@ -1,10 +1,7 @@
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {
"structural_analysis_model": None,
"attributes": {}
}
self.settings = {"structural_analysis_model": None, "attributes": {}}
for key, value in settings.items():
self.settings[key] = value
@@ -1,10 +1,7 @@
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {
"condition": None,
"attributes": {}
}
self.settings = {"condition": None, "attributes": {}}
for key, value in settings.items():
self.settings[key] = value
@@ -11,7 +11,7 @@ class Usecase:
ccs = self.file.createIfcAxis2Placement3D(point, None, None)
self.settings["structural_item"].ConditionCoordinateSystem = ccs
print(ccs)
ccs = self.settings["structural_item"].ConditionCoordinateSystem
print("use case")
print(ccs)
@@ -20,4 +20,4 @@ class Usecase:
ccs.Axis = self.file.createIfcDirection(self.settings["axis"])
if ccs.RefDirection and len(self.file.get_inverse(ccs.RefDirection)) == 1:
self.file.remove(ccs.RefDirection)
ccs.RefDirection = self.file.createIfcDirection(self.settings["ref_direction"])
ccs.RefDirection = self.file.createIfcDirection(self.settings["ref_direction"])
@@ -1,10 +1,7 @@
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {
"structural_load": None,
"attributes": {}
}
self.settings = {"structural_load": None, "attributes": {}}
for key, value in settings.items():
self.settings[key] = value
@@ -16,4 +16,3 @@ class Usecase:
**{"connection": self.settings["relation"].RelatedStructuralConnection}
)
self.file.remove(self.settings["relation"])
@@ -63,8 +63,8 @@ class Usecase:
def get_styled_representation(self, definition_representation):
representations = [
r
for r in definition_representation.Representations if r.is_a("IfcStyledRepresentation")
and r.ContextOfItems == self.settings["context"]
for r in definition_representation.Representations
if r.is_a("IfcStyledRepresentation") and r.ContextOfItems == self.settings["context"]
]
if representations:
return representations[0]
@@ -3,20 +3,16 @@ class Usecase:
self.file = file
self.settings = {
"style": None,
"surface_colour": [], # RGB
"diffuse_colour": [], # RGB
"surface_colour": [], # RGB
"diffuse_colour": [], # RGB
"transparency": 0,
"external_definition": {
"location": None,
"identification": None,
"name": "Name"
},
"external_definition": {"location": None, "identification": None, "name": "Name"},
}
for key, value in settings.items():
self.settings[key] = value
def execute(self):
#has_external_definition = None
# has_external_definition = None
for element in self.file.traverse(self.settings["style"]):
if element.is_a("IfcSurfaceStyleShading"):
if element.SurfaceColour:
@@ -30,28 +26,32 @@ class Usecase:
else:
element.DiffuseColour = self.create_colour_rgb(self.settings["diffuse_colour"])
# TODO: Move to separate usecase
#if element.is_a("IfcExternallyDefinedSurfaceStyle"):
# if element.is_a("IfcExternallyDefinedSurfaceStyle"):
# element.Location = self.settings["location"]
# element.Identification = self.settings["identification"]
# element.Name = self.settings["name"]
# has_external_definition = True
#if not has_external_definition:
# if not has_external_definition:
# styles = list(self.settings["style"].Styles)
# styles.append(self.create_externally_defined_surface_style())
# self.settings["style"].Styles = styles
return self.settings["style"]
def create_surface_style_rendering(self):
return self.file.create_entity("IfcSurfaceStyleRendering", **{
"SurfaceColour": self.create_colour_rgb(self.settings["surface_colour"]),
"Transparency": self.settings["transparency"],
"ReflectanceMethod": "NOTDEFINED",
"DiffuseColour": self.create_colour_rgb(self.settings["diffuse_colour"])
})
return self.file.create_entity(
"IfcSurfaceStyleRendering",
**{
"SurfaceColour": self.create_colour_rgb(self.settings["surface_colour"]),
"Transparency": self.settings["transparency"],
"ReflectanceMethod": "NOTDEFINED",
"DiffuseColour": self.create_colour_rgb(self.settings["diffuse_colour"]),
}
)
def create_externally_defined_surface_style(self):
self.file.create_entity(
"IfcExternallyDefinedSurfaceStyle", **{
"IfcExternallyDefinedSurfaceStyle",
**{
"Location": self.settings["location"],
"Identification": self.settings["identification"],
"Name": self.settings["name"],
@@ -10,8 +10,11 @@ class Usecase:
self.settings[key] = value
def execute(self):
return self.file.create_entity("IfcSystem", **{
"GlobalId": ifcopenshell.guid.new(),
"OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file),
"Name": "Unnamed"
})
return self.file.create_entity(
"IfcSystem",
**{
"GlobalId": ifcopenshell.guid.new(),
"OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file),
"Name": "Unnamed",
}
)
@@ -14,12 +14,15 @@ class Usecase:
def execute(self):
if not self.settings["system"].IsGroupedBy:
return self.file.create_entity("IfcRelAssignsToGroup", **{
"GlobalId": ifcopenshell.guid.new(),
"OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file),
"RelatedObjects": [self.settings["product"]],
"RelatingGroup": self.settings["system"]
})
return self.file.create_entity(
"IfcRelAssignsToGroup",
**{
"GlobalId": ifcopenshell.guid.new(),
"OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file),
"RelatedObjects": [self.settings["product"]],
"RelatingGroup": self.settings["system"],
}
)
rel = self.settings["system"].IsGroupedBy[0]
related_objects = set(rel.RelatedObjects) or set()
related_objects.add(self.settings["product"])
@@ -21,4 +21,4 @@ class Data:
data = system.get_info()
del data["OwnerHistory"]
cls.systems[system.id()] = data
cls.is_loaded=True
cls.is_loaded = True
@@ -1,10 +1,7 @@
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {
"system": None,
"attributes": {}
}
self.settings = {"system": None, "attributes": {}}
for key, value in settings.items():
self.settings[key] = value
@@ -5,9 +5,7 @@ import ifcopenshell.api
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {
"related_object": None
}
self.settings = {"related_object": None}
for key, value in settings.items():
self.settings[key] = value
@@ -2,7 +2,7 @@ import ifcopenshell.util.unit
import ifcopenshell.util.element
class Usecase():
class Usecase:
def __init__(self, file, **settings):
self.file = file
self.settings = {"unit": None}
@@ -9,8 +9,11 @@ class Usecase:
self.settings[key] = value
def execute(self):
self.file.create_entity("IfcRelFillsElement", **{
"GlobalId": ifcopenshell.guid.new(),
"RelatingOpeningElement": self.settings["opening"],
"RelatedBuildingElement": self.settings["element"]
})
self.file.create_entity(
"IfcRelFillsElement",
**{
"GlobalId": ifcopenshell.guid.new(),
"RelatingOpeningElement": self.settings["opening"],
"RelatedBuildingElement": self.settings["element"],
}
)
@@ -10,9 +10,12 @@ class Usecase:
self.settings[key] = value
def execute(self):
self.file.create_entity("IfcRelVoidsElement", **{
"GlobalId": ifcopenshell.guid.new(),
"OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file),
"RelatingBuildingElement": self.settings["element"],
"RelatedOpeningElement": self.settings["opening"]
})
self.file.create_entity(
"IfcRelVoidsElement",
**{
"GlobalId": ifcopenshell.guid.new(),
"OwnerHistory": ifcopenshell.api.run("owner.create_owner_history", self.file),
"RelatingBuildingElement": self.settings["element"],
"RelatedOpeningElement": self.settings["opening"],
}
)
@@ -40,9 +40,9 @@ class Data:
cls.fillings[filling_id] = {"Name": filling.Name, "FillsVoid": opening_id}
cls.openings[opening_id]["HasFillings"].add(filling_id)
return # See bug #1224
#if not hasattr(product, "HasOpenings") or not product.HasOpenings:
# if not hasattr(product, "HasOpenings") or not product.HasOpenings:
# return
#for rel_voids_element in product.HasOpenings:
# for rel_voids_element in product.HasOpenings:
# opening = rel_voids_element.RelatedOpeningElement
# opening_id = int(opening.id())
# fillings = []