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'}