diff --git a/src/blenderbim/blenderbim/bim/module/pset/__init__.py b/src/blenderbim/blenderbim/bim/module/pset/__init__.py index 5e04e16662..2ba0a44e31 100644 --- a/src/blenderbim/blenderbim/bim/module/pset/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/pset/__init__.py @@ -27,6 +27,7 @@ classes = ( operator.EditPset, operator.EnablePsetEditing, operator.GuessQuantity, + operator.GuessAllQuantities, operator.RemovePset, operator.TogglePsetExpansion, operator.BIM_OT_add_property_to_edit, diff --git a/src/blenderbim/blenderbim/bim/module/pset/operator.py b/src/blenderbim/blenderbim/bim/module/pset/operator.py index 97ff77edd0..2178f74223 100644 --- a/src/blenderbim/blenderbim/bim/module/pset/operator.py +++ b/src/blenderbim/blenderbim/bim/module/pset/operator.py @@ -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" diff --git a/src/blenderbim/blenderbim/bim/module/pset/ui.py b/src/blenderbim/blenderbim/bim/module/pset/ui.py index a74ad6078f..70a1a173b7 100644 --- a/src/blenderbim/blenderbim/bim/module/pset/ui.py +++ b/src/blenderbim/blenderbim/bim/module/pset/ui.py @@ -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