mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-10 01:41:57 +00:00
BBIM - Feature to guess all quantities at once
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user