mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-17 22:11:36 +00:00
Psets and qtos are now only created when properties exist to prevent invalid IFCs.
This commit is contained in:
@@ -76,6 +76,8 @@ class EnablePsetEditing(bpy.types.Operator):
|
|||||||
bl_label = "Enable Pset Editing"
|
bl_label = "Enable Pset Editing"
|
||||||
bl_options = {"REGISTER", "UNDO"}
|
bl_options = {"REGISTER", "UNDO"}
|
||||||
pset_id: bpy.props.IntProperty()
|
pset_id: bpy.props.IntProperty()
|
||||||
|
pset_name: bpy.props.StringProperty()
|
||||||
|
pset_type: bpy.props.StringProperty()
|
||||||
obj: bpy.props.StringProperty()
|
obj: bpy.props.StringProperty()
|
||||||
obj_type: bpy.props.StringProperty()
|
obj_type: bpy.props.StringProperty()
|
||||||
|
|
||||||
@@ -83,10 +85,17 @@ class EnablePsetEditing(bpy.types.Operator):
|
|||||||
self.props = get_pset_props(context, self.obj, self.obj_type)
|
self.props = get_pset_props(context, self.obj, self.obj_type)
|
||||||
self.props.properties.clear()
|
self.props.properties.clear()
|
||||||
ifc_definition_id = blenderbim.bim.helper.get_obj_ifc_definition_id(context, self.obj, self.obj_type)
|
ifc_definition_id = blenderbim.bim.helper.get_obj_ifc_definition_id(context, self.obj, self.obj_type)
|
||||||
pset = tool.Ifc.get().by_id(self.pset_id)
|
|
||||||
self.props.active_pset_name = pset.Name
|
|
||||||
|
|
||||||
pset_template = blenderbim.bim.schema.ifc.psetqto.get_by_name(pset.Name)
|
if self.pset_id:
|
||||||
|
pset = tool.Ifc.get().by_id(self.pset_id)
|
||||||
|
self.props.active_pset_name = pset.Name
|
||||||
|
self.props.active_pset_type = ""
|
||||||
|
pset_template = blenderbim.bim.schema.ifc.psetqto.get_by_name(pset.Name)
|
||||||
|
else:
|
||||||
|
pset = None
|
||||||
|
self.props.active_pset_name = self.pset_name
|
||||||
|
self.props.active_pset_type = self.pset_type
|
||||||
|
pset_template = blenderbim.bim.schema.ifc.psetqto.get_by_name(self.pset_name)
|
||||||
|
|
||||||
if pset_template:
|
if pset_template:
|
||||||
self.load_from_pset_template(pset_template, pset)
|
self.load_from_pset_template(pset_template, pset)
|
||||||
@@ -97,8 +106,11 @@ class EnablePsetEditing(bpy.types.Operator):
|
|||||||
return {"FINISHED"}
|
return {"FINISHED"}
|
||||||
|
|
||||||
def load_from_pset_template(self, pset_template, pset):
|
def load_from_pset_template(self, pset_template, pset):
|
||||||
data = ifcopenshell.util.element.get_property_definition(pset)
|
if pset:
|
||||||
del data["id"]
|
data = ifcopenshell.util.element.get_property_definition(pset)
|
||||||
|
del data["id"]
|
||||||
|
else:
|
||||||
|
data = {}
|
||||||
for prop_template in pset_template.HasPropertyTemplates:
|
for prop_template in pset_template.HasPropertyTemplates:
|
||||||
if not prop_template.is_a("IfcSimplePropertyTemplate"):
|
if not prop_template.is_a("IfcSimplePropertyTemplate"):
|
||||||
continue # Other types not yet supported
|
continue # Other types not yet supported
|
||||||
@@ -138,15 +150,9 @@ class EnablePsetEditing(bpy.types.Operator):
|
|||||||
return "float"
|
return "float"
|
||||||
elif prop_template.TemplateType == "Q_COUNT":
|
elif prop_template.TemplateType == "Q_COUNT":
|
||||||
return "integer"
|
return "integer"
|
||||||
try:
|
return ifcopenshell.util.attribute.get_primitive_type(
|
||||||
return ifcopenshell.util.attribute.get_primitive_type(
|
IfcStore.get_schema().declaration_by_name(prop_template.PrimaryMeasureType or "IfcLabel")
|
||||||
IfcStore.get_schema().declaration_by_name(prop_template.PrimaryMeasureType or "IfcLabel")
|
)
|
||||||
)
|
|
||||||
except:
|
|
||||||
# TODO: Occurs if the data type is something that exists in
|
|
||||||
# IFC4 and not in IFC2X3. To fully fix this we need to
|
|
||||||
# generate the IFC2X3 pset template definitions.
|
|
||||||
pass
|
|
||||||
|
|
||||||
def load_enumerated_value(self, prop_template, data):
|
def load_enumerated_value(self, prop_template, data):
|
||||||
enum_items = [v.wrappedValue for v in prop_template.Enumerators.EnumerationValues]
|
enum_items = [v.wrappedValue for v in prop_template.Enumerators.EnumerationValues]
|
||||||
@@ -219,13 +225,16 @@ class DisablePsetEditing(bpy.types.Operator, Operator):
|
|||||||
|
|
||||||
def _execute(self, context):
|
def _execute(self, context):
|
||||||
props = get_pset_props(context, self.obj, self.obj_type)
|
props = get_pset_props(context, self.obj, self.obj_type)
|
||||||
pset = tool.Ifc.get().by_id(props.active_pset_id)
|
if props.active_pset_id:
|
||||||
ifc_definition_id = blenderbim.bim.helper.get_obj_ifc_definition_id(context, self.obj, self.obj_type)
|
pset = tool.Ifc.get().by_id(props.active_pset_id)
|
||||||
if tool.Pset.is_pset_empty(pset):
|
ifc_definition_id = blenderbim.bim.helper.get_obj_ifc_definition_id(context, self.obj, self.obj_type)
|
||||||
ifcopenshell.api.run(
|
if tool.Pset.is_pset_empty(pset):
|
||||||
"pset.remove_pset", tool.Ifc.get(), product=tool.Ifc.get().by_id(ifc_definition_id), pset=pset
|
ifcopenshell.api.run(
|
||||||
)
|
"pset.remove_pset", tool.Ifc.get(), product=tool.Ifc.get().by_id(ifc_definition_id), pset=pset
|
||||||
|
)
|
||||||
props.active_pset_id = 0
|
props.active_pset_id = 0
|
||||||
|
props.active_pset_name = ""
|
||||||
|
props.active_pset_type = ""
|
||||||
|
|
||||||
|
|
||||||
class EditPset(bpy.types.Operator, Operator):
|
class EditPset(bpy.types.Operator, Operator):
|
||||||
@@ -241,9 +250,19 @@ class EditPset(bpy.types.Operator, Operator):
|
|||||||
self.file = IfcStore.get_file()
|
self.file = IfcStore.get_file()
|
||||||
props = get_pset_props(context, self.obj, self.obj_type)
|
props = get_pset_props(context, self.obj, self.obj_type)
|
||||||
ifc_definition_id = blenderbim.bim.helper.get_obj_ifc_definition_id(context, self.obj, self.obj_type)
|
ifc_definition_id = blenderbim.bim.helper.get_obj_ifc_definition_id(context, self.obj, self.obj_type)
|
||||||
|
element = tool.Ifc.get().by_id(ifc_definition_id)
|
||||||
properties = {}
|
properties = {}
|
||||||
|
|
||||||
pset_id = self.pset_id or props.active_pset_id
|
pset_id = self.pset_id or props.active_pset_id
|
||||||
|
if pset_id:
|
||||||
|
pset = self.file.by_id(pset_id)
|
||||||
|
elif props.active_pset_type == "PSET":
|
||||||
|
pset = ifcopenshell.api.run("pset.add_pset", self.file, product=element, name=props.active_pset_name)
|
||||||
|
props.active_pset_id = pset.id()
|
||||||
|
elif props.active_pset_type == "QTO":
|
||||||
|
pset = ifcopenshell.api.run("pset.add_qto", self.file, product=element, name=props.active_pset_name)
|
||||||
|
props.active_pset_id = pset.id()
|
||||||
|
|
||||||
if self.properties:
|
if self.properties:
|
||||||
properties = json.loads(self.properties)
|
properties = json.loads(self.properties)
|
||||||
else:
|
else:
|
||||||
@@ -256,8 +275,7 @@ class EditPset(bpy.types.Operator, Operator):
|
|||||||
e[value_name] for e in prop.enumerated_value.enumerated_values if e.is_selected
|
e[value_name] for e in prop.enumerated_value.enumerated_values if e.is_selected
|
||||||
]
|
]
|
||||||
|
|
||||||
pset = self.file.by_id(pset_id)
|
if pset.is_a() in ("IfcPropertySet", "IfcMaterialProperties", "IfcProfileProperties"):
|
||||||
if tool.Ifc.get().by_id(pset_id).is_a() in ("IfcPropertySet", "IfcMaterialProperties", "IfcProfileProperties"):
|
|
||||||
ifcopenshell.api.run(
|
ifcopenshell.api.run(
|
||||||
"pset.edit_pset",
|
"pset.edit_pset",
|
||||||
self.file,
|
self.file,
|
||||||
@@ -279,11 +297,6 @@ class EditPset(bpy.types.Operator, Operator):
|
|||||||
)
|
)
|
||||||
bpy.ops.bim.load_cost_item_quantities()
|
bpy.ops.bim.load_cost_item_quantities()
|
||||||
|
|
||||||
if tool.Pset.is_pset_empty(pset):
|
|
||||||
ifcopenshell.api.run(
|
|
||||||
"pset.remove_pset", tool.Ifc.get(), product=tool.Ifc.get().by_id(ifc_definition_id), pset=pset
|
|
||||||
)
|
|
||||||
|
|
||||||
bpy.ops.bim.disable_pset_editing(obj=self.obj, obj_type=self.obj_type)
|
bpy.ops.bim.disable_pset_editing(obj=self.obj, obj_type=self.obj_type)
|
||||||
|
|
||||||
|
|
||||||
@@ -338,7 +351,7 @@ class AddPset(bpy.types.Operator, Operator):
|
|||||||
continue
|
continue
|
||||||
element = tool.Ifc.get().by_id(ifc_definition_id)
|
element = tool.Ifc.get().by_id(ifc_definition_id)
|
||||||
if pset_name in blenderbim.bim.schema.ifc.psetqto.get_applicable_names(element.is_a(), pset_only=True):
|
if pset_name in blenderbim.bim.schema.ifc.psetqto.get_applicable_names(element.is_a(), pset_only=True):
|
||||||
ifcopenshell.api.run("pset.add_pset", self.file, product=element, name=pset_name)
|
bpy.ops.bim.enable_pset_editing(pset_id=0, pset_name=pset_name, pset_type="PSET", obj=obj, obj_type=self.obj_type)
|
||||||
|
|
||||||
|
|
||||||
class AddQto(bpy.types.Operator, Operator):
|
class AddQto(bpy.types.Operator, Operator):
|
||||||
@@ -353,14 +366,8 @@ class AddQto(bpy.types.Operator, Operator):
|
|||||||
self.file = IfcStore.get_file()
|
self.file = IfcStore.get_file()
|
||||||
props = get_pset_props(context, self.obj, self.obj_type)
|
props = get_pset_props(context, self.obj, self.obj_type)
|
||||||
ifc_definition_id = blenderbim.bim.helper.get_obj_ifc_definition_id(context, self.obj, self.obj_type)
|
ifc_definition_id = blenderbim.bim.helper.get_obj_ifc_definition_id(context, self.obj, self.obj_type)
|
||||||
ifcopenshell.api.run(
|
element = tool.Ifc.get().by_id(ifc_definition_id)
|
||||||
"pset.add_qto",
|
bpy.ops.bim.enable_pset_editing(pset_id=0, pset_name=props.qto_name, pset_type="QTO", obj=self.obj, obj_type=self.obj_type)
|
||||||
self.file,
|
|
||||||
**{
|
|
||||||
"product": self.file.by_id(ifc_definition_id),
|
|
||||||
"name": props.qto_name,
|
|
||||||
},
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class CalculateQuantity(bpy.types.Operator):
|
class CalculateQuantity(bpy.types.Operator):
|
||||||
@@ -452,7 +459,11 @@ class CopyPropertyToSelection(bpy.types.Operator, Operator):
|
|||||||
name: bpy.props.StringProperty()
|
name: bpy.props.StringProperty()
|
||||||
|
|
||||||
def _execute(self, context):
|
def _execute(self, context):
|
||||||
is_pset = tool.Ifc.get().by_id(context.active_object.PsetProperties.active_pset_id).is_a("IfcPropertySet")
|
pset_id = context.active_object.PsetProperties.active_pset_id
|
||||||
|
if pset_id:
|
||||||
|
is_pset = tool.Ifc.get().by_id(pset_id).is_a("IfcPropertySet")
|
||||||
|
else:
|
||||||
|
is_pset = context.active_object.PsetProperties.active_pset_type == "PSET"
|
||||||
pset_name = context.active_object.PsetProperties.active_pset_name
|
pset_name = context.active_object.PsetProperties.active_pset_name
|
||||||
prop_value = context.active_object.PsetProperties.properties.get(self.name).metadata.get_value()
|
prop_value = context.active_object.PsetProperties.properties.get(self.name).metadata.get_value()
|
||||||
for obj in tool.Blender.get_selected_objects():
|
for obj in tool.Blender.get_selected_objects():
|
||||||
|
|||||||
@@ -195,6 +195,7 @@ class IfcProperty(PropertyGroup):
|
|||||||
class PsetProperties(PropertyGroup):
|
class PsetProperties(PropertyGroup):
|
||||||
active_pset_id: IntProperty(name="Active Pset ID")
|
active_pset_id: IntProperty(name="Active Pset ID")
|
||||||
active_pset_name: StringProperty(name="Pset Name")
|
active_pset_name: StringProperty(name="Pset Name")
|
||||||
|
active_pset_type: StringProperty(name="Active Pset Type")
|
||||||
properties: CollectionProperty(name="Properties", type=IfcProperty)
|
properties: CollectionProperty(name="Properties", type=IfcProperty)
|
||||||
pset_name: EnumProperty(items=get_pset_names, name="Pset Name")
|
pset_name: EnumProperty(items=get_pset_names, name="Pset Name")
|
||||||
qto_name: EnumProperty(items=get_qto_names, name="Qto Name")
|
qto_name: EnumProperty(items=get_qto_names, name="Qto Name")
|
||||||
@@ -203,6 +204,7 @@ class PsetProperties(PropertyGroup):
|
|||||||
class MaterialPsetProperties(PropertyGroup):
|
class MaterialPsetProperties(PropertyGroup):
|
||||||
active_pset_id: IntProperty(name="Active Pset ID")
|
active_pset_id: IntProperty(name="Active Pset ID")
|
||||||
active_pset_name: StringProperty(name="Pset Name")
|
active_pset_name: StringProperty(name="Pset Name")
|
||||||
|
active_pset_type: StringProperty(name="Active Pset Type")
|
||||||
properties: CollectionProperty(name="Properties", type=IfcProperty)
|
properties: CollectionProperty(name="Properties", type=IfcProperty)
|
||||||
pset_name: EnumProperty(items=get_material_pset_names, name="Pset Name")
|
pset_name: EnumProperty(items=get_material_pset_names, name="Pset Name")
|
||||||
|
|
||||||
@@ -210,6 +212,7 @@ class MaterialPsetProperties(PropertyGroup):
|
|||||||
class MaterialSetPsetProperties(PropertyGroup):
|
class MaterialSetPsetProperties(PropertyGroup):
|
||||||
active_pset_id: IntProperty(name="Active Pset ID")
|
active_pset_id: IntProperty(name="Active Pset ID")
|
||||||
active_pset_name: StringProperty(name="Pset Name")
|
active_pset_name: StringProperty(name="Pset Name")
|
||||||
|
active_pset_type: StringProperty(name="Active Pset Type")
|
||||||
properties: CollectionProperty(name="Properties", type=IfcProperty)
|
properties: CollectionProperty(name="Properties", type=IfcProperty)
|
||||||
pset_name: EnumProperty(items=get_material_set_pset_names, name="Pset Name")
|
pset_name: EnumProperty(items=get_material_set_pset_names, name="Pset Name")
|
||||||
|
|
||||||
@@ -217,6 +220,7 @@ class MaterialSetPsetProperties(PropertyGroup):
|
|||||||
class MaterialSetItemPsetProperties(PropertyGroup):
|
class MaterialSetItemPsetProperties(PropertyGroup):
|
||||||
active_pset_id: IntProperty(name="Active Pset ID")
|
active_pset_id: IntProperty(name="Active Pset ID")
|
||||||
active_pset_name: StringProperty(name="Pset Name")
|
active_pset_name: StringProperty(name="Pset Name")
|
||||||
|
active_pset_type: StringProperty(name="Active Pset Type")
|
||||||
properties: CollectionProperty(name="Properties", type=IfcProperty)
|
properties: CollectionProperty(name="Properties", type=IfcProperty)
|
||||||
pset_name: EnumProperty(items=get_material_set_item_pset_names, name="Pset Name")
|
pset_name: EnumProperty(items=get_material_set_item_pset_names, name="Pset Name")
|
||||||
|
|
||||||
@@ -224,6 +228,7 @@ class MaterialSetItemPsetProperties(PropertyGroup):
|
|||||||
class TaskPsetProperties(PropertyGroup):
|
class TaskPsetProperties(PropertyGroup):
|
||||||
active_pset_id: IntProperty(name="Active Pset ID")
|
active_pset_id: IntProperty(name="Active Pset ID")
|
||||||
active_pset_name: StringProperty(name="Pset Name")
|
active_pset_name: StringProperty(name="Pset Name")
|
||||||
|
active_pset_type: StringProperty(name="Active Pset Type")
|
||||||
properties: CollectionProperty(name="Properties", type=IfcProperty)
|
properties: CollectionProperty(name="Properties", type=IfcProperty)
|
||||||
qto_name: EnumProperty(items=get_task_qto_names, name="Qto Name")
|
qto_name: EnumProperty(items=get_task_qto_names, name="Qto Name")
|
||||||
|
|
||||||
@@ -231,6 +236,7 @@ class TaskPsetProperties(PropertyGroup):
|
|||||||
class ResourcePsetProperties(PropertyGroup):
|
class ResourcePsetProperties(PropertyGroup):
|
||||||
active_pset_id: IntProperty(name="Active Pset ID")
|
active_pset_id: IntProperty(name="Active Pset ID")
|
||||||
active_pset_name: StringProperty(name="Pset Name")
|
active_pset_name: StringProperty(name="Pset Name")
|
||||||
|
active_pset_type: StringProperty(name="Active Pset Type")
|
||||||
properties: CollectionProperty(name="Properties", type=IfcProperty)
|
properties: CollectionProperty(name="Properties", type=IfcProperty)
|
||||||
pset_name: EnumProperty(items=get_resource_pset_names, name="Pset Name")
|
pset_name: EnumProperty(items=get_resource_pset_names, name="Pset Name")
|
||||||
qto_name: EnumProperty(items=get_resource_qto_names, name="Qto Name")
|
qto_name: EnumProperty(items=get_resource_qto_names, name="Qto Name")
|
||||||
@@ -239,6 +245,7 @@ class ResourcePsetProperties(PropertyGroup):
|
|||||||
class ProfilePsetProperties(PropertyGroup):
|
class ProfilePsetProperties(PropertyGroup):
|
||||||
active_pset_id: IntProperty(name="Active Pset ID")
|
active_pset_id: IntProperty(name="Active Pset ID")
|
||||||
active_pset_name: StringProperty(name="Pset Name")
|
active_pset_name: StringProperty(name="Pset Name")
|
||||||
|
active_pset_type: StringProperty(name="Active Pset Type")
|
||||||
properties: CollectionProperty(name="Properties", type=IfcProperty)
|
properties: CollectionProperty(name="Properties", type=IfcProperty)
|
||||||
pset_name: EnumProperty(items=get_profile_pset_names, name="Pset Name")
|
pset_name: EnumProperty(items=get_profile_pset_names, name="Pset Name")
|
||||||
|
|
||||||
@@ -246,6 +253,7 @@ class ProfilePsetProperties(PropertyGroup):
|
|||||||
class WorkSchedulePsetProperties(PropertyGroup):
|
class WorkSchedulePsetProperties(PropertyGroup):
|
||||||
active_pset_id: IntProperty(name="Active Pset ID")
|
active_pset_id: IntProperty(name="Active Pset ID")
|
||||||
active_pset_name: StringProperty(name="Pset Name")
|
active_pset_name: StringProperty(name="Pset Name")
|
||||||
|
active_pset_type: StringProperty(name="Active Pset Type")
|
||||||
properties: CollectionProperty(name="Properties", type=IfcProperty)
|
properties: CollectionProperty(name="Properties", type=IfcProperty)
|
||||||
pset_name: EnumProperty(items=get_work_schedule_pset_names, name="Pset Name")
|
pset_name: EnumProperty(items=get_work_schedule_pset_names, name="Pset Name")
|
||||||
|
|
||||||
|
|||||||
@@ -93,7 +93,15 @@ def draw_psetqto_ui(context, pset_id, pset, props, layout, obj_type):
|
|||||||
icon = "TRIA_DOWN" if pset["is_expanded"] else "TRIA_RIGHT"
|
icon = "TRIA_DOWN" if pset["is_expanded"] else "TRIA_RIGHT"
|
||||||
row.operator("bim.toggle_pset_expansion", icon=icon, text="", emboss=False).pset_id = pset_id
|
row.operator("bim.toggle_pset_expansion", icon=icon, text="", emboss=False).pset_id = pset_id
|
||||||
obj_name = get_active_pset_obj_name(context, obj_type)
|
obj_name = get_active_pset_obj_name(context, obj_type)
|
||||||
if not props.active_pset_id:
|
if props.active_pset_id == pset_id:
|
||||||
|
row.prop(props, "active_pset_name", icon="COPY_ID", text="")
|
||||||
|
op = row.operator("bim.edit_pset", icon="CHECKMARK", text="")
|
||||||
|
op.obj = obj_name
|
||||||
|
op.obj_type = obj_type
|
||||||
|
op = row.operator("bim.disable_pset_editing", icon="CANCEL", text="")
|
||||||
|
op.obj = obj_name
|
||||||
|
op.obj_type = obj_type
|
||||||
|
elif not props.active_pset_id:
|
||||||
row.label(text=pset["Name"], icon="COPY_ID")
|
row.label(text=pset["Name"], icon="COPY_ID")
|
||||||
if "Qto" in pset["Name"] and "Base" in pset["Name"]:
|
if "Qto" in pset["Name"] and "Base" in pset["Name"]:
|
||||||
op = row.operator("bim.calculate_all_quantities", icon="MOD_EDGESPLIT", text="")
|
op = row.operator("bim.calculate_all_quantities", icon="MOD_EDGESPLIT", text="")
|
||||||
@@ -111,14 +119,6 @@ def draw_psetqto_ui(context, pset_id, pset, props, layout, obj_type):
|
|||||||
op.pset_id = pset_id
|
op.pset_id = pset_id
|
||||||
op.obj = obj_name
|
op.obj = obj_name
|
||||||
op.obj_type = obj_type
|
op.obj_type = obj_type
|
||||||
elif props.active_pset_id == pset_id:
|
|
||||||
row.prop(props, "active_pset_name", icon="COPY_ID", text="")
|
|
||||||
op = row.operator("bim.edit_pset", icon="CHECKMARK", text="")
|
|
||||||
op.obj = obj_name
|
|
||||||
op.obj_type = obj_type
|
|
||||||
op = row.operator("bim.disable_pset_editing", icon="CANCEL", text="")
|
|
||||||
op.obj = obj_name
|
|
||||||
op.obj_type = obj_type
|
|
||||||
if pset["is_expanded"]:
|
if pset["is_expanded"]:
|
||||||
if props.active_pset_id == pset_id:
|
if props.active_pset_id == pset_id:
|
||||||
for prop in props.properties:
|
for prop in props.properties:
|
||||||
@@ -196,6 +196,9 @@ class BIM_PT_object_psets(Panel):
|
|||||||
op.obj = context.active_object.name
|
op.obj = context.active_object.name
|
||||||
op.obj_type = "Object"
|
op.obj_type = "Object"
|
||||||
|
|
||||||
|
if not props.active_pset_id and props.active_pset_name and props.active_pset_type == "PSET":
|
||||||
|
draw_psetqto_ui(context, 0, {}, props, self.layout, "Object")
|
||||||
|
|
||||||
for pset in ObjectPsetsData.data["psets"]:
|
for pset in ObjectPsetsData.data["psets"]:
|
||||||
draw_psetqto_ui(context, pset["id"], pset, props, self.layout, "Object")
|
draw_psetqto_ui(context, pset["id"], pset, props, self.layout, "Object")
|
||||||
|
|
||||||
@@ -236,6 +239,9 @@ class BIM_PT_object_qtos(Panel):
|
|||||||
op.obj = context.active_object.name
|
op.obj = context.active_object.name
|
||||||
op.obj_type = "Object"
|
op.obj_type = "Object"
|
||||||
|
|
||||||
|
if not props.active_pset_id and props.active_pset_name and props.active_pset_type == "QTO":
|
||||||
|
draw_psetqto_ui(context, 0, {}, props, self.layout, "Object")
|
||||||
|
|
||||||
for qto in ObjectQtosData.data["qtos"]:
|
for qto in ObjectQtosData.data["qtos"]:
|
||||||
draw_psetqto_ui(context, qto["id"], qto, props, self.layout, "Object")
|
draw_psetqto_ui(context, qto["id"], qto, props, self.layout, "Object")
|
||||||
|
|
||||||
@@ -272,6 +278,9 @@ class BIM_PT_material_psets(Panel):
|
|||||||
op.obj = context.active_object.active_material.name
|
op.obj = context.active_object.active_material.name
|
||||||
op.obj_type = "Material"
|
op.obj_type = "Material"
|
||||||
|
|
||||||
|
if not props.active_pset_id and props.active_pset_name and props.active_pset_type == "PSET":
|
||||||
|
draw_psetqto_ui(context, 0, {}, props, self.layout, "Material")
|
||||||
|
|
||||||
for pset in MaterialPsetsData.data["psets"]:
|
for pset in MaterialPsetsData.data["psets"]:
|
||||||
draw_psetqto_ui(context, pset["id"], pset, props, self.layout, "Material")
|
draw_psetqto_ui(context, pset["id"], pset, props, self.layout, "Material")
|
||||||
|
|
||||||
@@ -307,6 +316,9 @@ class BIM_PT_material_set_psets(Panel):
|
|||||||
op.obj = context.active_object.name
|
op.obj = context.active_object.name
|
||||||
op.obj_type = "MaterialSet"
|
op.obj_type = "MaterialSet"
|
||||||
|
|
||||||
|
if not props.active_pset_id and props.active_pset_name and props.active_pset_type == "PSET":
|
||||||
|
draw_psetqto_ui(context, 0, {}, props, self.layout, "MaterialSet")
|
||||||
|
|
||||||
for pset in MaterialSetPsetsData.data["psets"]:
|
for pset in MaterialSetPsetsData.data["psets"]:
|
||||||
draw_psetqto_ui(context, pset["id"], pset, props, self.layout, "MaterialSet")
|
draw_psetqto_ui(context, pset["id"], pset, props, self.layout, "MaterialSet")
|
||||||
|
|
||||||
@@ -342,11 +354,13 @@ class BIM_PT_material_set_item_psets(Panel):
|
|||||||
op.obj = context.active_object.name
|
op.obj = context.active_object.name
|
||||||
op.obj_type = "MaterialSetItem"
|
op.obj_type = "MaterialSetItem"
|
||||||
|
|
||||||
|
if not props.active_pset_id and props.active_pset_name and props.active_pset_type == "PSET":
|
||||||
|
draw_psetqto_ui(context, 0, {}, props, self.layout, "MaterialSetItem")
|
||||||
|
|
||||||
for pset in MaterialSetItemPsetsData.data["psets"]:
|
for pset in MaterialSetItemPsetsData.data["psets"]:
|
||||||
draw_psetqto_ui(context, pset["id"], pset, props, self.layout, "MaterialSetItem")
|
draw_psetqto_ui(context, pset["id"], pset, props, self.layout, "MaterialSetItem")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class BIM_PT_task_qtos(Panel):
|
class BIM_PT_task_qtos(Panel):
|
||||||
bl_label = "IFC Task Quantity Sets"
|
bl_label = "IFC Task Quantity Sets"
|
||||||
bl_idname = "BIM_PT_task_qtos"
|
bl_idname = "BIM_PT_task_qtos"
|
||||||
@@ -376,6 +390,9 @@ class BIM_PT_task_qtos(Panel):
|
|||||||
op = row.operator("bim.add_qto", icon="ADD", text="")
|
op = row.operator("bim.add_qto", icon="ADD", text="")
|
||||||
op.obj_type = "Task"
|
op.obj_type = "Task"
|
||||||
|
|
||||||
|
if not props.active_pset_id and props.active_pset_name and props.active_pset_type == "QTO":
|
||||||
|
draw_psetqto_ui(context, 0, {}, props, self.layout, "Task")
|
||||||
|
|
||||||
for qto in TaskQtosData.data["qtos"]:
|
for qto in TaskQtosData.data["qtos"]:
|
||||||
draw_psetqto_ui(context, qto["id"], qto, props, self.layout, "Task")
|
draw_psetqto_ui(context, qto["id"], qto, props, self.layout, "Task")
|
||||||
|
|
||||||
@@ -407,6 +424,9 @@ class BIM_PT_resource_qtos(Panel):
|
|||||||
op = row.operator("bim.add_qto", icon="ADD", text="")
|
op = row.operator("bim.add_qto", icon="ADD", text="")
|
||||||
op.obj_type = "Resource"
|
op.obj_type = "Resource"
|
||||||
|
|
||||||
|
if not props.active_pset_id and props.active_pset_name and props.active_pset_type == "QTO":
|
||||||
|
draw_psetqto_ui(context, 0, {}, props, self.layout, "Resource")
|
||||||
|
|
||||||
for qto in ResourceQtosData.data["qtos"]:
|
for qto in ResourceQtosData.data["qtos"]:
|
||||||
draw_psetqto_ui(context, qto["id"], qto, props, self.layout, "Resource")
|
draw_psetqto_ui(context, qto["id"], qto, props, self.layout, "Resource")
|
||||||
|
|
||||||
@@ -438,6 +458,9 @@ class BIM_PT_resource_psets(Panel):
|
|||||||
op = row.operator("bim.add_pset", icon="ADD", text="")
|
op = row.operator("bim.add_pset", icon="ADD", text="")
|
||||||
op.obj_type = "Resource"
|
op.obj_type = "Resource"
|
||||||
|
|
||||||
|
if not props.active_pset_id and props.active_pset_name and props.active_pset_type == "PSET":
|
||||||
|
draw_psetqto_ui(context, 0, {}, props, self.layout, "Resource")
|
||||||
|
|
||||||
for pset in ResourcePsetsData.data["psets"]:
|
for pset in ResourcePsetsData.data["psets"]:
|
||||||
draw_psetqto_ui(context, pset["id"], pset, props, self.layout, "Resource")
|
draw_psetqto_ui(context, pset["id"], pset, props, self.layout, "Resource")
|
||||||
|
|
||||||
@@ -471,6 +494,9 @@ class BIM_PT_profile_psets(Panel):
|
|||||||
op = row.operator("bim.add_pset", icon="ADD", text="")
|
op = row.operator("bim.add_pset", icon="ADD", text="")
|
||||||
op.obj_type = "Profile"
|
op.obj_type = "Profile"
|
||||||
|
|
||||||
|
if not props.active_pset_id and props.active_pset_name and props.active_pset_type == "PSET":
|
||||||
|
draw_psetqto_ui(context, 0, {}, props, self.layout, "Profile")
|
||||||
|
|
||||||
for pset in ProfilePsetsData.data["psets"]:
|
for pset in ProfilePsetsData.data["psets"]:
|
||||||
draw_psetqto_ui(context, pset["id"], pset, props, self.layout, "Profile")
|
draw_psetqto_ui(context, pset["id"], pset, props, self.layout, "Profile")
|
||||||
|
|
||||||
@@ -500,6 +526,9 @@ class BIM_PT_work_schedule_psets(Panel):
|
|||||||
op = row.operator("bim.add_pset", icon="ADD", text="")
|
op = row.operator("bim.add_pset", icon="ADD", text="")
|
||||||
op.obj_type = "WorkSchedule"
|
op.obj_type = "WorkSchedule"
|
||||||
|
|
||||||
|
if not props.active_pset_id and props.active_pset_name and props.active_pset_type == "PSET":
|
||||||
|
draw_psetqto_ui(context, 0, {}, props, self.layout, "WorkSchedule")
|
||||||
|
|
||||||
for pset in WorkSchedulePsetsData.data["psets"]:
|
for pset in WorkSchedulePsetsData.data["psets"]:
|
||||||
draw_psetqto_ui(context, pset["id"], pset, props, self.layout, "WorkSchedule")
|
draw_psetqto_ui(context, pset["id"], pset, props, self.layout, "WorkSchedule")
|
||||||
|
|
||||||
|
|||||||
@@ -38,6 +38,8 @@ Scenario: Enable pset editing - object
|
|||||||
And the object "IfcWall/Cube" is selected
|
And the object "IfcWall/Cube" is selected
|
||||||
And I set "active_object.PsetProperties.pset_name" to "Pset_WallCommon"
|
And I set "active_object.PsetProperties.pset_name" to "Pset_WallCommon"
|
||||||
And I press "bim.add_pset(obj='IfcWall/Cube', obj_type='Object')"
|
And I press "bim.add_pset(obj='IfcWall/Cube', obj_type='Object')"
|
||||||
|
And I set "active_object.PsetProperties.properties[0].metadata.string_value" to "Foobar"
|
||||||
|
And I press "bim.edit_pset(obj='IfcWall/Cube', obj_type='Object')"
|
||||||
And the variable "pset" is "{ifc}.by_type('IfcPropertySet')[-1].id()"
|
And the variable "pset" is "{ifc}.by_type('IfcPropertySet')[-1].id()"
|
||||||
When I press "bim.enable_pset_editing(pset_id={pset}, obj='IfcWall/Cube', obj_type='Object')"
|
When I press "bim.enable_pset_editing(pset_id={pset}, obj='IfcWall/Cube', obj_type='Object')"
|
||||||
Then nothing happens
|
Then nothing happens
|
||||||
@@ -53,6 +55,8 @@ Scenario: Enable pset editing - material
|
|||||||
And I press "bim.assign_material"
|
And I press "bim.assign_material"
|
||||||
And the object "IfcWall/Cube" is selected
|
And the object "IfcWall/Cube" is selected
|
||||||
And I press "bim.add_pset(obj='Default', obj_type='Material')"
|
And I press "bim.add_pset(obj='Default', obj_type='Material')"
|
||||||
|
And I set "active_object.active_material.PsetProperties.properties[0].metadata.float_value" to "0.42"
|
||||||
|
And I press "bim.edit_pset(obj='Default', obj_type='Material')"
|
||||||
And the variable "pset" is "{ifc}.by_type('IfcMaterialProperties')[-1].id()"
|
And the variable "pset" is "{ifc}.by_type('IfcMaterialProperties')[-1].id()"
|
||||||
When I press "bim.enable_pset_editing(pset_id={pset}, obj='Default', obj_type='Material')"
|
When I press "bim.enable_pset_editing(pset_id={pset}, obj='Default', obj_type='Material')"
|
||||||
Then nothing happens
|
Then nothing happens
|
||||||
@@ -63,6 +67,8 @@ Scenario: Enable pset editing - profile
|
|||||||
And I press "bim.add_profile_def"
|
And I press "bim.add_profile_def"
|
||||||
And I set "scene.ProfilePsetProperties.pset_name" to "Pset_ProfileMechanical"
|
And I set "scene.ProfilePsetProperties.pset_name" to "Pset_ProfileMechanical"
|
||||||
And I press "bim.add_pset(obj_type='Profile')"
|
And I press "bim.add_pset(obj_type='Profile')"
|
||||||
|
And I set "scene.ProfilePsetProperties.properties[0].metadata.float_value" to "0.42"
|
||||||
|
And I press "bim.edit_pset(obj='', obj_type='Profile')"
|
||||||
And the variable "pset" is "{ifc}.by_type('IfcProfileProperties')[-1].id()"
|
And the variable "pset" is "{ifc}.by_type('IfcProfileProperties')[-1].id()"
|
||||||
When I press "bim.enable_pset_editing(pset_id={pset}, obj='', obj_type='Profile')"
|
When I press "bim.enable_pset_editing(pset_id={pset}, obj='', obj_type='Profile')"
|
||||||
Then nothing happens
|
Then nothing happens
|
||||||
@@ -74,6 +80,8 @@ Scenario: Enable pset editing - work schedule
|
|||||||
And I press "bim.enable_editing_work_schedule_tasks(work_schedule={work_schedule})"
|
And I press "bim.enable_editing_work_schedule_tasks(work_schedule={work_schedule})"
|
||||||
And I set "scene.WorkSchedulePsetProperties.pset_name" to "Pset_WorkControlCommon"
|
And I set "scene.WorkSchedulePsetProperties.pset_name" to "Pset_WorkControlCommon"
|
||||||
And I press "bim.add_pset(obj_type='WorkSchedule')"
|
And I press "bim.add_pset(obj_type='WorkSchedule')"
|
||||||
|
And I set "scene.WorkSchedulePsetProperties.properties[0].metadata.string_value" to "Foobar"
|
||||||
|
And I press "bim.edit_pset(obj='', obj_type='WorkSchedule')"
|
||||||
And the variable "pset" is "{ifc}.by_type('IfcPropertySet')[-1].id()"
|
And the variable "pset" is "{ifc}.by_type('IfcPropertySet')[-1].id()"
|
||||||
When I press "bim.enable_pset_editing(pset_id={pset}, obj='', obj_type='WorkSchedule')"
|
When I press "bim.enable_pset_editing(pset_id={pset}, obj='', obj_type='WorkSchedule')"
|
||||||
Then nothing happens
|
Then nothing happens
|
||||||
@@ -83,9 +91,7 @@ Scenario: Enable pset editing - resource with time series properties
|
|||||||
And I press "bim.load_resources"
|
And I press "bim.load_resources"
|
||||||
And I press "bim.add_resource(ifc_class='IfcSubContractResource', parent_resource=0)"
|
And I press "bim.add_resource(ifc_class='IfcSubContractResource', parent_resource=0)"
|
||||||
And I set "scene.ResourcePsetProperties.pset_name" to "Pset_ConstructionResource"
|
And I set "scene.ResourcePsetProperties.pset_name" to "Pset_ConstructionResource"
|
||||||
And I press "bim.add_pset(obj_type='Resource')"
|
When I press "bim.add_pset(obj_type='Resource')"
|
||||||
And the variable "pset" is "{ifc}.by_type('IfcPropertySet')[-1].id()"
|
|
||||||
When I press "bim.enable_pset_editing(pset_id={pset}, obj='', obj_type='Resource')"
|
|
||||||
Then nothing happens
|
Then nothing happens
|
||||||
|
|
||||||
Scenario: Enable pset editing - resource with regular single properties
|
Scenario: Enable pset editing - resource with regular single properties
|
||||||
@@ -97,6 +103,8 @@ Scenario: Enable pset editing - resource with regular single properties
|
|||||||
And I set "scene.BIMResourceProperties.active_resource_index" to "1"
|
And I set "scene.BIMResourceProperties.active_resource_index" to "1"
|
||||||
And I set "scene.ResourcePsetProperties.pset_name" to "EPset_Productivity"
|
And I set "scene.ResourcePsetProperties.pset_name" to "EPset_Productivity"
|
||||||
And I press "bim.add_pset(obj_type='Resource')"
|
And I press "bim.add_pset(obj_type='Resource')"
|
||||||
|
And I set "scene.ResourcePsetProperties.properties[0].metadata.string_value" to "Foobar"
|
||||||
|
And I press "bim.edit_pset(obj='', obj_type='Resource')"
|
||||||
And the variable "pset" is "{ifc}.by_type('IfcPropertySet')[-1].id()"
|
And the variable "pset" is "{ifc}.by_type('IfcPropertySet')[-1].id()"
|
||||||
When I press "bim.enable_pset_editing(pset_id={pset}, obj='', obj_type='Resource')"
|
When I press "bim.enable_pset_editing(pset_id={pset}, obj='', obj_type='Resource')"
|
||||||
Then nothing happens
|
Then nothing happens
|
||||||
@@ -109,6 +117,8 @@ Scenario: Enable pset editing - task
|
|||||||
And I press "bim.add_summary_task(work_schedule={work_schedule})"
|
And I press "bim.add_summary_task(work_schedule={work_schedule})"
|
||||||
And I set "scene.TaskPsetProperties.qto_name" to "Qto_TaskBaseQuantities"
|
And I set "scene.TaskPsetProperties.qto_name" to "Qto_TaskBaseQuantities"
|
||||||
And I press "bim.add_qto(obj_type='Task')"
|
And I press "bim.add_qto(obj_type='Task')"
|
||||||
|
And I set "scene.TaskPsetProperties.properties[0].metadata.float_value" to "0.42"
|
||||||
|
And I press "bim.edit_pset(obj='', obj_type='Task')"
|
||||||
And the variable "pset" is "{ifc}.by_type('IfcElementQuantity')[-1].id()"
|
And the variable "pset" is "{ifc}.by_type('IfcElementQuantity')[-1].id()"
|
||||||
When I press "bim.enable_pset_editing(pset_id={pset}, obj='', obj_type='Task')"
|
When I press "bim.enable_pset_editing(pset_id={pset}, obj='', obj_type='Task')"
|
||||||
Then nothing happens
|
Then nothing happens
|
||||||
@@ -122,8 +132,6 @@ Scenario: Disable pset editing - object
|
|||||||
And the object "IfcWall/Cube" is selected
|
And the object "IfcWall/Cube" is selected
|
||||||
And I set "active_object.PsetProperties.pset_name" to "Pset_WallCommon"
|
And I set "active_object.PsetProperties.pset_name" to "Pset_WallCommon"
|
||||||
And I press "bim.add_pset(obj='IfcWall/Cube', obj_type='Object')"
|
And I press "bim.add_pset(obj='IfcWall/Cube', obj_type='Object')"
|
||||||
And the variable "pset" is "{ifc}.by_type('IfcPropertySet')[-1].id()"
|
|
||||||
And I press "bim.enable_pset_editing(pset_id={pset}, obj='IfcWall/Cube', obj_type='Object')"
|
|
||||||
When I press "bim.disable_pset_editing(obj='IfcWall/Cube', obj_type='Object')"
|
When I press "bim.disable_pset_editing(obj='IfcWall/Cube', obj_type='Object')"
|
||||||
Then nothing happens
|
Then nothing happens
|
||||||
|
|
||||||
@@ -138,8 +146,6 @@ Scenario: Disable pset editing - material
|
|||||||
And I press "bim.assign_material"
|
And I press "bim.assign_material"
|
||||||
And the object "IfcWall/Cube" is selected
|
And the object "IfcWall/Cube" is selected
|
||||||
And I press "bim.add_pset(obj='Default', obj_type='Material')"
|
And I press "bim.add_pset(obj='Default', obj_type='Material')"
|
||||||
And the variable "pset" is "{ifc}.by_type('IfcMaterialProperties')[-1].id()"
|
|
||||||
And I press "bim.enable_pset_editing(pset_id={pset}, obj='Default', obj_type='Material')"
|
|
||||||
When I press "bim.disable_pset_editing(obj='Default', obj_type='Material')"
|
When I press "bim.disable_pset_editing(obj='Default', obj_type='Material')"
|
||||||
Then nothing happens
|
Then nothing happens
|
||||||
|
|
||||||
@@ -149,8 +155,6 @@ Scenario: Disable pset editing - profile
|
|||||||
And I press "bim.add_profile_def"
|
And I press "bim.add_profile_def"
|
||||||
And I set "scene.ProfilePsetProperties.pset_name" to "Pset_ProfileMechanical"
|
And I set "scene.ProfilePsetProperties.pset_name" to "Pset_ProfileMechanical"
|
||||||
And I press "bim.add_pset(obj_type='Profile')"
|
And I press "bim.add_pset(obj_type='Profile')"
|
||||||
And the variable "pset" is "{ifc}.by_type('IfcProfileProperties')[-1].id()"
|
|
||||||
And I press "bim.enable_pset_editing(pset_id={pset}, obj='', obj_type='Profile')"
|
|
||||||
When I press "bim.disable_pset_editing(obj='', obj_type='Profile')"
|
When I press "bim.disable_pset_editing(obj='', obj_type='Profile')"
|
||||||
Then nothing happens
|
Then nothing happens
|
||||||
|
|
||||||
@@ -161,8 +165,6 @@ Scenario: Disable pset editing - work schedule
|
|||||||
And I press "bim.enable_editing_work_schedule_tasks(work_schedule={work_schedule})"
|
And I press "bim.enable_editing_work_schedule_tasks(work_schedule={work_schedule})"
|
||||||
And I set "scene.WorkSchedulePsetProperties.pset_name" to "Pset_WorkControlCommon"
|
And I set "scene.WorkSchedulePsetProperties.pset_name" to "Pset_WorkControlCommon"
|
||||||
And I press "bim.add_pset(obj_type='WorkSchedule')"
|
And I press "bim.add_pset(obj_type='WorkSchedule')"
|
||||||
And the variable "pset" is "{ifc}.by_type('IfcPropertySet')[-1].id()"
|
|
||||||
And I press "bim.enable_pset_editing(pset_id={pset}, obj='', obj_type='WorkSchedule')"
|
|
||||||
When I press "bim.disable_pset_editing(obj='', obj_type='WorkSchedule')"
|
When I press "bim.disable_pset_editing(obj='', obj_type='WorkSchedule')"
|
||||||
Then nothing happens
|
Then nothing happens
|
||||||
|
|
||||||
@@ -172,8 +174,6 @@ Scenario: Disable pset editing - resource with time series properties
|
|||||||
And I press "bim.add_resource(ifc_class='IfcSubContractResource', parent_resource=0)"
|
And I press "bim.add_resource(ifc_class='IfcSubContractResource', parent_resource=0)"
|
||||||
And I set "scene.ResourcePsetProperties.pset_name" to "Pset_ConstructionResource"
|
And I set "scene.ResourcePsetProperties.pset_name" to "Pset_ConstructionResource"
|
||||||
And I press "bim.add_pset(obj_type='Resource')"
|
And I press "bim.add_pset(obj_type='Resource')"
|
||||||
And the variable "pset" is "{ifc}.by_type('IfcPropertySet')[-1].id()"
|
|
||||||
And I press "bim.enable_pset_editing(pset_id={pset}, obj='', obj_type='Resource')"
|
|
||||||
When I press "bim.disable_pset_editing(obj='', obj_type='Resource')"
|
When I press "bim.disable_pset_editing(obj='', obj_type='Resource')"
|
||||||
Then nothing happens
|
Then nothing happens
|
||||||
|
|
||||||
@@ -186,8 +186,6 @@ Scenario: Disable pset editing - resource with regular single properties
|
|||||||
And I set "scene.BIMResourceProperties.active_resource_index" to "1"
|
And I set "scene.BIMResourceProperties.active_resource_index" to "1"
|
||||||
And I set "scene.ResourcePsetProperties.pset_name" to "EPset_Productivity"
|
And I set "scene.ResourcePsetProperties.pset_name" to "EPset_Productivity"
|
||||||
And I press "bim.add_pset(obj_type='Resource')"
|
And I press "bim.add_pset(obj_type='Resource')"
|
||||||
And the variable "pset" is "{ifc}.by_type('IfcPropertySet')[-1].id()"
|
|
||||||
And I press "bim.enable_pset_editing(pset_id={pset}, obj='', obj_type='Resource')"
|
|
||||||
When I press "bim.disable_pset_editing(obj='', obj_type='Resource')"
|
When I press "bim.disable_pset_editing(obj='', obj_type='Resource')"
|
||||||
Then nothing happens
|
Then nothing happens
|
||||||
|
|
||||||
@@ -199,8 +197,6 @@ Scenario: Disable pset editing - task
|
|||||||
And I press "bim.add_summary_task(work_schedule={work_schedule})"
|
And I press "bim.add_summary_task(work_schedule={work_schedule})"
|
||||||
And I set "scene.TaskPsetProperties.qto_name" to "Qto_TaskBaseQuantities"
|
And I set "scene.TaskPsetProperties.qto_name" to "Qto_TaskBaseQuantities"
|
||||||
And I press "bim.add_qto(obj_type='Task')"
|
And I press "bim.add_qto(obj_type='Task')"
|
||||||
And the variable "pset" is "{ifc}.by_type('IfcElementQuantity')[-1].id()"
|
|
||||||
And I press "bim.enable_pset_editing(pset_id={pset}, obj='', obj_type='Task')"
|
|
||||||
When I press "bim.disable_pset_editing(obj='', obj_type='Task')"
|
When I press "bim.disable_pset_editing(obj='', obj_type='Task')"
|
||||||
Then nothing happens
|
Then nothing happens
|
||||||
|
|
||||||
@@ -213,8 +209,6 @@ Scenario: Edit pset - object
|
|||||||
And the object "IfcWall/Cube" is selected
|
And the object "IfcWall/Cube" is selected
|
||||||
And I set "active_object.PsetProperties.pset_name" to "Pset_WallCommon"
|
And I set "active_object.PsetProperties.pset_name" to "Pset_WallCommon"
|
||||||
And I press "bim.add_pset(obj='IfcWall/Cube', obj_type='Object')"
|
And I press "bim.add_pset(obj='IfcWall/Cube', obj_type='Object')"
|
||||||
And the variable "pset" is "{ifc}.by_type('IfcPropertySet')[-1].id()"
|
|
||||||
And I press "bim.enable_pset_editing(pset_id={pset}, obj='IfcWall/Cube', obj_type='Object')"
|
|
||||||
When I press "bim.edit_pset(obj='IfcWall/Cube', obj_type='Object')"
|
When I press "bim.edit_pset(obj='IfcWall/Cube', obj_type='Object')"
|
||||||
Then nothing happens
|
Then nothing happens
|
||||||
|
|
||||||
@@ -229,8 +223,6 @@ Scenario: Edit pset - material
|
|||||||
And I press "bim.assign_material"
|
And I press "bim.assign_material"
|
||||||
And the object "IfcWall/Cube" is selected
|
And the object "IfcWall/Cube" is selected
|
||||||
And I press "bim.add_pset(obj='Default', obj_type='Material')"
|
And I press "bim.add_pset(obj='Default', obj_type='Material')"
|
||||||
And the variable "pset" is "{ifc}.by_type('IfcMaterialProperties')[-1].id()"
|
|
||||||
And I press "bim.enable_pset_editing(pset_id={pset}, obj='Default', obj_type='Material')"
|
|
||||||
When I press "bim.edit_pset(obj='Default', obj_type='Material')"
|
When I press "bim.edit_pset(obj='Default', obj_type='Material')"
|
||||||
Then nothing happens
|
Then nothing happens
|
||||||
|
|
||||||
@@ -240,8 +232,6 @@ Scenario: Edit pset - profile
|
|||||||
And I press "bim.add_profile_def"
|
And I press "bim.add_profile_def"
|
||||||
And I set "scene.ProfilePsetProperties.pset_name" to "Pset_ProfileMechanical"
|
And I set "scene.ProfilePsetProperties.pset_name" to "Pset_ProfileMechanical"
|
||||||
And I press "bim.add_pset(obj_type='Profile')"
|
And I press "bim.add_pset(obj_type='Profile')"
|
||||||
And the variable "pset" is "{ifc}.by_type('IfcProfileProperties')[-1].id()"
|
|
||||||
And I press "bim.enable_pset_editing(pset_id={pset}, obj='', obj_type='Profile')"
|
|
||||||
When I press "bim.edit_pset(obj='', obj_type='Profile')"
|
When I press "bim.edit_pset(obj='', obj_type='Profile')"
|
||||||
Then nothing happens
|
Then nothing happens
|
||||||
|
|
||||||
@@ -252,23 +242,19 @@ Scenario: Edit pset - work schedule
|
|||||||
And I press "bim.enable_editing_work_schedule_tasks(work_schedule={work_schedule})"
|
And I press "bim.enable_editing_work_schedule_tasks(work_schedule={work_schedule})"
|
||||||
And I set "scene.WorkSchedulePsetProperties.pset_name" to "Pset_WorkControlCommon"
|
And I set "scene.WorkSchedulePsetProperties.pset_name" to "Pset_WorkControlCommon"
|
||||||
And I press "bim.add_pset(obj_type='WorkSchedule')"
|
And I press "bim.add_pset(obj_type='WorkSchedule')"
|
||||||
And the variable "pset" is "{ifc}.by_type('IfcPropertySet')[-1].id()"
|
|
||||||
And I press "bim.enable_pset_editing(pset_id={pset}, obj='', obj_type='WorkSchedule')"
|
|
||||||
When I press "bim.edit_pset(obj='', obj_type='WorkSchedule')"
|
When I press "bim.edit_pset(obj='', obj_type='WorkSchedule')"
|
||||||
Then nothing happens
|
Then nothing happens
|
||||||
|
|
||||||
Scenario: Enable pset editing - resource with time series properties
|
Scenario: Edit pset - resource with time series properties
|
||||||
Given an empty IFC project
|
Given an empty IFC project
|
||||||
And I press "bim.load_resources"
|
And I press "bim.load_resources"
|
||||||
And I press "bim.add_resource(ifc_class='IfcSubContractResource', parent_resource=0)"
|
And I press "bim.add_resource(ifc_class='IfcSubContractResource', parent_resource=0)"
|
||||||
And I set "scene.ResourcePsetProperties.pset_name" to "Pset_ConstructionResource"
|
And I set "scene.ResourcePsetProperties.pset_name" to "Pset_ConstructionResource"
|
||||||
And I press "bim.add_pset(obj_type='Resource')"
|
And I press "bim.add_pset(obj_type='Resource')"
|
||||||
And the variable "pset" is "{ifc}.by_type('IfcPropertySet')[-1].id()"
|
|
||||||
And I press "bim.enable_pset_editing(pset_id={pset}, obj='', obj_type='Resource')"
|
|
||||||
When I press "bim.edit_pset(obj='', obj_type='Resource')"
|
When I press "bim.edit_pset(obj='', obj_type='Resource')"
|
||||||
Then nothing happens
|
Then nothing happens
|
||||||
|
|
||||||
Scenario: Enable pset editing - resource with regular single properties
|
Scenario: Edit pset - resource with regular single properties
|
||||||
Given an empty IFC project
|
Given an empty IFC project
|
||||||
And I press "bim.load_resources"
|
And I press "bim.load_resources"
|
||||||
And I press "bim.add_resource(ifc_class='IfcCrewResource', parent_resource=0)"
|
And I press "bim.add_resource(ifc_class='IfcCrewResource', parent_resource=0)"
|
||||||
@@ -277,12 +263,10 @@ Scenario: Enable pset editing - resource with regular single properties
|
|||||||
And I set "scene.BIMResourceProperties.active_resource_index" to "1"
|
And I set "scene.BIMResourceProperties.active_resource_index" to "1"
|
||||||
And I set "scene.ResourcePsetProperties.pset_name" to "EPset_Productivity"
|
And I set "scene.ResourcePsetProperties.pset_name" to "EPset_Productivity"
|
||||||
And I press "bim.add_pset(obj_type='Resource')"
|
And I press "bim.add_pset(obj_type='Resource')"
|
||||||
And the variable "pset" is "{ifc}.by_type('IfcPropertySet')[-1].id()"
|
|
||||||
And I press "bim.enable_pset_editing(pset_id={pset}, obj='', obj_type='Resource')"
|
|
||||||
When I press "bim.edit_pset(obj='', obj_type='Resource')"
|
When I press "bim.edit_pset(obj='', obj_type='Resource')"
|
||||||
Then nothing happens
|
Then nothing happens
|
||||||
|
|
||||||
Scenario: Enable pset editing - task
|
Scenario: Edit pset - task
|
||||||
Given an empty IFC project
|
Given an empty IFC project
|
||||||
And I press "bim.add_work_schedule"
|
And I press "bim.add_work_schedule"
|
||||||
And the variable "work_schedule" is "IfcStore.get_file().by_type('IfcWorkSchedule')[0].id()"
|
And the variable "work_schedule" is "IfcStore.get_file().by_type('IfcWorkSchedule')[0].id()"
|
||||||
@@ -290,8 +274,6 @@ Scenario: Enable pset editing - task
|
|||||||
And I press "bim.add_summary_task(work_schedule={work_schedule})"
|
And I press "bim.add_summary_task(work_schedule={work_schedule})"
|
||||||
And I set "scene.TaskPsetProperties.qto_name" to "Qto_TaskBaseQuantities"
|
And I set "scene.TaskPsetProperties.qto_name" to "Qto_TaskBaseQuantities"
|
||||||
And I press "bim.add_qto(obj_type='Task')"
|
And I press "bim.add_qto(obj_type='Task')"
|
||||||
And the variable "pset" is "{ifc}.by_type('IfcElementQuantity')[-1].id()"
|
|
||||||
And I press "bim.enable_pset_editing(pset_id={pset}, obj='', obj_type='Task')"
|
|
||||||
When I press "bim.edit_pset(obj='', obj_type='Task')"
|
When I press "bim.edit_pset(obj='', obj_type='Task')"
|
||||||
Then nothing happens
|
Then nothing happens
|
||||||
|
|
||||||
@@ -309,8 +291,6 @@ Scenario: Copy property to selected - copy property
|
|||||||
And additionally the object "IfcWall/Cube.001" is selected
|
And additionally the object "IfcWall/Cube.001" is selected
|
||||||
And I set "active_object.PsetProperties.pset_name" to "Pset_WallCommon"
|
And I set "active_object.PsetProperties.pset_name" to "Pset_WallCommon"
|
||||||
And I press "bim.add_pset(obj='IfcWall/Cube.001', obj_type='Object')"
|
And I press "bim.add_pset(obj='IfcWall/Cube.001', obj_type='Object')"
|
||||||
And the variable "pset" is "{ifc}.by_type('IfcPropertySet')[-1].id()"
|
|
||||||
And I press "bim.enable_pset_editing(obj='IfcWall/Cube.001', obj_type='Object', pset_id={pset})"
|
|
||||||
And I set "active_object.PsetProperties.properties[2].metadata.string_value" to "Foo"
|
And I set "active_object.PsetProperties.properties[2].metadata.string_value" to "Foo"
|
||||||
When I press "bim.copy_property_to_selection(name='FireRating')"
|
When I press "bim.copy_property_to_selection(name='FireRating')"
|
||||||
Then nothing happens
|
Then nothing happens
|
||||||
@@ -324,6 +304,8 @@ Scenario: Remove pset - object
|
|||||||
And the object "IfcWall/Cube" is selected
|
And the object "IfcWall/Cube" is selected
|
||||||
And I set "active_object.PsetProperties.pset_name" to "Pset_WallCommon"
|
And I set "active_object.PsetProperties.pset_name" to "Pset_WallCommon"
|
||||||
And I press "bim.add_pset(obj='IfcWall/Cube', obj_type='Object')"
|
And I press "bim.add_pset(obj='IfcWall/Cube', obj_type='Object')"
|
||||||
|
And I set "active_object.PsetProperties.properties[0].metadata.string_value" to "Foobar"
|
||||||
|
And I press "bim.edit_pset(obj='IfcWall/Cube', obj_type='Object')"
|
||||||
And the variable "pset" is "{ifc}.by_type('IfcPropertySet')[-1].id()"
|
And the variable "pset" is "{ifc}.by_type('IfcPropertySet')[-1].id()"
|
||||||
When I press "bim.remove_pset(pset_id={pset}, obj='IfcWall/Cube', obj_type='Object')"
|
When I press "bim.remove_pset(pset_id={pset}, obj='IfcWall/Cube', obj_type='Object')"
|
||||||
Then nothing happens
|
Then nothing happens
|
||||||
@@ -342,7 +324,9 @@ Scenario: Remove pset - multiple objects
|
|||||||
And the object "IfcWall/Cube" is selected
|
And the object "IfcWall/Cube" is selected
|
||||||
And additionally the object "IfcWall/Cube.001" is selected
|
And additionally the object "IfcWall/Cube.001" is selected
|
||||||
And I set "active_object.PsetProperties.pset_name" to "Pset_WallCommon"
|
And I set "active_object.PsetProperties.pset_name" to "Pset_WallCommon"
|
||||||
And I press "bim.add_pset(obj='IfcWall/Cube', obj_type='Object')"
|
And I press "bim.add_pset(obj='IfcWall/Cube.001', obj_type='Object')"
|
||||||
|
And I set "active_object.PsetProperties.properties[0].metadata.string_value" to "Foobar"
|
||||||
|
And I press "bim.edit_pset(obj='IfcWall/Cube.001', obj_type='Object')"
|
||||||
And the variable "pset" is "{ifc}.by_type('IfcPropertySet')[-1].id()"
|
And the variable "pset" is "{ifc}.by_type('IfcPropertySet')[-1].id()"
|
||||||
When I press "bim.remove_pset(pset_id={pset}, obj='IfcWall/Cube', obj_type='Object')"
|
When I press "bim.remove_pset(pset_id={pset}, obj='IfcWall/Cube', obj_type='Object')"
|
||||||
Then nothing happens
|
Then nothing happens
|
||||||
|
|||||||
@@ -251,7 +251,7 @@ def i_set_prop_to_value(prop, value):
|
|||||||
try:
|
try:
|
||||||
eval(f"bpy.context.{prop}")
|
eval(f"bpy.context.{prop}")
|
||||||
except:
|
except:
|
||||||
assert False, "Property does not exist"
|
assert False, f"Property {prop} does not exist when trying to set to value {value}"
|
||||||
try:
|
try:
|
||||||
exec(f'bpy.context.{prop} = r"{value}"')
|
exec(f'bpy.context.{prop} = r"{value}"')
|
||||||
except:
|
except:
|
||||||
@@ -264,7 +264,7 @@ def i_set_prop_to_value(prop):
|
|||||||
try:
|
try:
|
||||||
eval(f"bpy.context.{prop}")
|
eval(f"bpy.context.{prop}")
|
||||||
except:
|
except:
|
||||||
assert False, "Property does not exist"
|
assert False, f"Property {prop} does not exist"
|
||||||
try:
|
try:
|
||||||
exec(f'bpy.context.{prop} = r""')
|
exec(f'bpy.context.{prop} = r""')
|
||||||
except:
|
except:
|
||||||
|
|||||||
Reference in New Issue
Block a user