Files
cable-normalizer/operators_get.py

27 lines
1.0 KiB
Python

import bpy
class KABECK_OT_get_diameter(bpy.types.Operator):
bl_idname = "kabeck.get_diameter"
bl_label = "Set Target from Selected"
bl_description = "Measures the selected cable and sets the Target Diameter to its exact size"
def execute(self, context):
from . import utils
obj = context.active_object
if not obj or obj.type != 'MESH':
self.report({'ERROR'}, "Select a cable first")
return {'CANCELLED'}
depsgraph = context.evaluated_depsgraph_get()
eval_obj = obj.evaluated_get(depsgraph)
dims = [eval_obj.dimensions.x, eval_obj.dimensions.y, eval_obj.dimensions.z]
dims.sort()
internal_scale = utils.get_internal_scale()
# Convert internal units back to mm for the UI
diam_mm = dims[1] / internal_scale if dims[1] > 0.0001 else 13.8
context.scene.normalizer_target_diameter = diam_mm
self.report({'INFO'}, f"Target Diameter set to {diam_mm:.2f} mm")
return {'FINISHED'}