mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-22 20:42:27 +00:00
Assigning product from selected objects #4015
This commit is contained in:
@@ -49,6 +49,7 @@ classes = (
|
|||||||
operator.DisableEditingSheets,
|
operator.DisableEditingSheets,
|
||||||
operator.DisableEditingText,
|
operator.DisableEditingText,
|
||||||
operator.DuplicateDrawing,
|
operator.DuplicateDrawing,
|
||||||
|
operator.AssignSelectedObjectAsProduct,
|
||||||
operator.EditAssignedProduct,
|
operator.EditAssignedProduct,
|
||||||
operator.EditSheet,
|
operator.EditSheet,
|
||||||
operator.EditText,
|
operator.EditText,
|
||||||
|
|||||||
@@ -2284,6 +2284,27 @@ class RemoveTextLiteral(bpy.types.Operator):
|
|||||||
return {"FINISHED"}
|
return {"FINISHED"}
|
||||||
|
|
||||||
|
|
||||||
|
class AssignSelectedObjectAsProduct(bpy.types.Operator):
|
||||||
|
bl_idname = "bim.assign_selected_as_product"
|
||||||
|
bl_label = "Assign Selected Object As Product"
|
||||||
|
bl_options = {"REGISTER", "UNDO"}
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def poll(cls, context):
|
||||||
|
if len(context.selected_objects) != 2:
|
||||||
|
cls.poll_message_set({"ERROR"}, "2 objects need to be selected")
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
def execute(self, context):
|
||||||
|
objs = context.selected_objects[:]
|
||||||
|
objs.remove(context.active_object)
|
||||||
|
other_selected_object = next(obj for obj in context.selected_objects if obj != context.active_object)
|
||||||
|
context.active_object.BIMAssignedProductProperties.relating_product = other_selected_object
|
||||||
|
bpy.ops.bim.edit_assigned_product()
|
||||||
|
return {"FINISHED"}
|
||||||
|
|
||||||
|
|
||||||
class EditAssignedProduct(bpy.types.Operator, Operator):
|
class EditAssignedProduct(bpy.types.Operator, Operator):
|
||||||
bl_idname = "bim.edit_assigned_product"
|
bl_idname = "bim.edit_assigned_product"
|
||||||
bl_label = "Edit Text Product"
|
bl_label = "Edit Text Product"
|
||||||
|
|||||||
@@ -409,13 +409,16 @@ class BIM_PT_product_assignments(Panel):
|
|||||||
if props.is_editing_product:
|
if props.is_editing_product:
|
||||||
row = self.layout.row(align=True)
|
row = self.layout.row(align=True)
|
||||||
row.prop(props, "relating_product", text="")
|
row.prop(props, "relating_product", text="")
|
||||||
|
row.operator("bim.assign_selected_as_product", icon="OBJECT_DATA", text="")
|
||||||
row.operator("bim.edit_assigned_product", icon="CHECKMARK", text="")
|
row.operator("bim.edit_assigned_product", icon="CHECKMARK", text="")
|
||||||
row.operator("bim.disable_editing_assigned_product", icon="CANCEL", text="")
|
row.operator("bim.disable_editing_assigned_product", icon="CANCEL", text="")
|
||||||
else:
|
else:
|
||||||
row = self.layout.row(align=True)
|
row = self.layout.row(align=True)
|
||||||
row.label(text=ProductAssignmentsData.data["relating_product"] or "No Relating Product", icon="OBJECT_DATA")
|
row.label(text=ProductAssignmentsData.data["relating_product"] or "No Relating Product", icon="OBJECT_DATA")
|
||||||
row.operator("bim.enable_editing_assigned_product", icon="GREASEPENCIL", text="")
|
row.operator("bim.enable_editing_assigned_product", icon="GREASEPENCIL", text="")
|
||||||
row.operator("bim.select_assigned_product", icon="RESTRICT_SELECT_OFF", text="")
|
col = row.column()
|
||||||
|
col.operator("bim.select_assigned_product", icon="RESTRICT_SELECT_OFF", text="")
|
||||||
|
col.enabled = bool(ProductAssignmentsData.data["relating_product"])
|
||||||
|
|
||||||
|
|
||||||
class BIM_PT_text(Panel):
|
class BIM_PT_text(Panel):
|
||||||
|
|||||||
Reference in New Issue
Block a user