mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-18 14:31:39 +00:00
BBIM - Feature to guess all quantities at once
This commit is contained in:
@@ -27,6 +27,7 @@ classes = (
|
|||||||
operator.EditPset,
|
operator.EditPset,
|
||||||
operator.EnablePsetEditing,
|
operator.EnablePsetEditing,
|
||||||
operator.GuessQuantity,
|
operator.GuessQuantity,
|
||||||
|
operator.GuessAllQuantities,
|
||||||
operator.RemovePset,
|
operator.RemovePset,
|
||||||
operator.TogglePsetExpansion,
|
operator.TogglePsetExpansion,
|
||||||
operator.BIM_OT_add_property_to_edit,
|
operator.BIM_OT_add_property_to_edit,
|
||||||
|
|||||||
@@ -389,6 +389,31 @@ class GuessQuantity(bpy.types.Operator):
|
|||||||
return None, "METRE"
|
return None, "METRE"
|
||||||
return unit_settings.length_unit[0 : -len("METERS")], "METRE"
|
return unit_settings.length_unit[0 : -len("METERS")], "METRE"
|
||||||
|
|
||||||
|
class GuessAllQuantities(bpy.types.Operator):
|
||||||
|
bl_idname = "bim.guess_all_quantities"
|
||||||
|
bl_label = "Guess All Quantities"
|
||||||
|
bl_options = {"REGISTER", "UNDO"}
|
||||||
|
pset_id: bpy.props.IntProperty()
|
||||||
|
obj_name : bpy.props.StringProperty()
|
||||||
|
obj_type: bpy.props.StringProperty()
|
||||||
|
|
||||||
|
def execute(self, context):
|
||||||
|
self.qto_calculator = QtoCalculator()
|
||||||
|
obj = context.active_object
|
||||||
|
bpy.ops.bim.enable_pset_editing(pset_id=self.pset_id, obj=self.obj_name, obj_type=self.obj_type)
|
||||||
|
for prop in obj.PsetProperties.properties:
|
||||||
|
if (
|
||||||
|
'length' in prop.name.lower()
|
||||||
|
or 'area' in prop.name.lower()
|
||||||
|
or 'volume' in prop.name.lower()
|
||||||
|
or "width" in prop.name.lower()
|
||||||
|
or "height" in prop.name.lower()
|
||||||
|
or "depth" in prop.name.lower()
|
||||||
|
or "perimeter" in prop.name.lower()
|
||||||
|
):
|
||||||
|
bpy.ops.bim.guess_quantity(prop=prop.name)
|
||||||
|
bpy.ops.bim.edit_pset(obj=self.obj_name, obj_type=self.obj_type)
|
||||||
|
return {"FINISHED"}
|
||||||
|
|
||||||
class CopyPropertyToSelection(bpy.types.Operator, Operator):
|
class CopyPropertyToSelection(bpy.types.Operator, Operator):
|
||||||
bl_idname = "bim.copy_property_to_selection"
|
bl_idname = "bim.copy_property_to_selection"
|
||||||
|
|||||||
@@ -88,6 +88,10 @@ def draw_psetqto_ui(context, pset_id, pset, props, layout, obj_type):
|
|||||||
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 not props.active_pset_id:
|
||||||
row.label(text=pset["Name"], icon="COPY_ID")
|
row.label(text=pset["Name"], icon="COPY_ID")
|
||||||
|
op = row.operator("bim.guess_all_quantities", icon="FILE_REFRESH", text="")
|
||||||
|
op.pset_id = pset_id
|
||||||
|
op.obj_name = obj_name
|
||||||
|
op.obj_type = obj_type
|
||||||
op = row.operator("bim.enable_pset_editing", icon="GREASEPENCIL", text="")
|
op = row.operator("bim.enable_pset_editing", icon="GREASEPENCIL", text="")
|
||||||
op.pset_id = pset_id
|
op.pset_id = pset_id
|
||||||
op.obj = obj_name
|
op.obj = obj_name
|
||||||
|
|||||||
Reference in New Issue
Block a user