27 lines
1.0 KiB
Python
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'}
|