mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-11 02:02:22 +00:00
improve pset editing workflow and use refactored core and tool functions
This commit is contained in:
@@ -356,24 +356,7 @@ class AddPset(bpy.types.Operator, Operator):
|
||||
obj_type: bpy.props.StringProperty()
|
||||
|
||||
def _execute(self, context):
|
||||
self.file = IfcStore.get_file()
|
||||
pset_name = get_pset_props(context, self.obj, self.obj_type).pset_name
|
||||
if self.obj_type == "Object":
|
||||
if context.selected_objects:
|
||||
objects = [o.name for o in tool.Blender.get_selected_objects()]
|
||||
else:
|
||||
objects = [context.active_object.name]
|
||||
else:
|
||||
objects = [self.obj]
|
||||
for obj in objects:
|
||||
ifc_definition_id = blenderbim.bim.helper.get_obj_ifc_definition_id(context, obj, self.obj_type)
|
||||
if not ifc_definition_id:
|
||||
continue
|
||||
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):
|
||||
bpy.ops.bim.enable_pset_editing(
|
||||
pset_id=0, pset_name=pset_name, pset_type="PSET", obj=obj, obj_type=self.obj_type
|
||||
)
|
||||
core.add_pset(tool.Ifc, tool.Pset, tool.Blender, obj_name=self.obj, obj_type=self.obj_type)
|
||||
|
||||
|
||||
class AddQto(bpy.types.Operator, Operator):
|
||||
|
||||
@@ -43,3 +43,4 @@ def add_pset(ifc, pset, blender, obj_name, obj_type):
|
||||
ifc_pset = pset.get_element_pset(element, pset_name)
|
||||
if not ifc_pset:
|
||||
ifc.run("pset.add_pset", product=element, name=pset_name)
|
||||
pset.enable_pset_editing(pset_id=0, pset_name=pset_name, pset_type="PSET",obj=obj_name, obj_type=obj_type)
|
||||
@@ -66,3 +66,10 @@ class Pset(blenderbim.core.tool.Pset):
|
||||
if value is not None:
|
||||
return False
|
||||
return True
|
||||
|
||||
@classmethod
|
||||
def enable_pset_editing(cls, pset_id=None, pset_name=None, pset_type=None, obj=None, obj_type=None):
|
||||
#TODO REFACTOR ONCE toll/CORE functions are available
|
||||
bpy.ops.bim.enable_pset_editing(
|
||||
pset_id=0, pset_name=tool.Pset.get_pset_name(obj, obj_type), pset_type="PSET", obj=obj, obj_type=obj_type
|
||||
)
|
||||
Reference in New Issue
Block a user