Fix #3193. Revert "partially addresses #3103."

This reverts commit 1b2ab4e3f0.
This commit is contained in:
Dion Moult
2023-05-24 21:31:41 +10:00
parent 610ec7d8ad
commit d72ac7827b
@@ -248,7 +248,6 @@ class EditPset(bpy.types.Operator, Operator):
def _execute(self, context): def _execute(self, context):
self.file = IfcStore.get_file() self.file = IfcStore.get_file()
objects = tool.Blender.get_selected_objects()
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) element = tool.Ifc.get().by_id(ifc_definition_id)
@@ -276,40 +275,28 @@ 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
] ]
if pset.is_a() in ("IfcPropertySet", "IfcMaterialProperties", "IfcProfileProperties"):
for obj in objects: ifcopenshell.api.run(
element = blenderbim.tool.Ifc.get_entity(obj) "pset.edit_pset",
pset_list = element.IsDefinedBy self.file,
copy_of_properties = properties.copy() pset=pset,
name=props.active_pset_name,
for rel in pset_list: properties=properties,
rel_name = rel.RelatingPropertyDefinition.Name pset_template=blenderbim.bim.schema.ifc.psetqto.get_by_name(props.active_pset_name),
if rel.is_a("IfcRelDefinesByProperties") and rel_name == props.active_pset_name: )
rel_ID = rel.RelatingPropertyDefinition.id() else:
rel_pset = rel.RelatingPropertyDefinition for key, value in properties.items():
if rel_pset.is_a() in ("IfcPropertySet", "IfcMaterialProperties", "IfcProfileProperties"): if isinstance(value, float):
ifcopenshell.api.run( properties[key] = round(value, 4)
"pset.edit_pset", ifcopenshell.api.run(
self.file, "pset.edit_qto",
pset=rel_pset, self.file,
name=props.active_pset_name, qto=pset,
properties=copy_of_properties, name=props.active_pset_name,
pset_template=blenderbim.bim.schema.ifc.psetqto.get_by_name(props.active_pset_name), properties=properties,
) )
else: if tool.Cost.has_schedules():
for key, value in copy_of_properties.items(): tool.Cost.update_cost_items(pset=pset)
if isinstance(value, float):
copy_of_properties[key] = round(value, 4)
ifcopenshell.api.run(
"pset.edit_qto",
self.file,
qto=rel_pset,
name=props.active_pset_name,
properties=copy_of_properties,
)
if tool.Cost.has_schedules():
tool.Cost.update_cost_items(pset=rel_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)
tool.Blender.update_viewport() tool.Blender.update_viewport()