BBIM - Feature to guess all quantities at once

This commit is contained in:
Sigma Dimensions
2022-09-09 13:24:26 +01:00
parent e2df4f335d
commit f7403e8eee
3 changed files with 30 additions and 0 deletions
@@ -27,6 +27,7 @@ classes = (
operator.EditPset,
operator.EnablePsetEditing,
operator.GuessQuantity,
operator.GuessAllQuantities,
operator.RemovePset,
operator.TogglePsetExpansion,
operator.BIM_OT_add_property_to_edit,
@@ -389,6 +389,31 @@ class GuessQuantity(bpy.types.Operator):
return None, "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):
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)
if not props.active_pset_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.pset_id = pset_id
op.obj = obj_name