OverviewFilesCommitsIssuesDocsReleasesPeers

hardops / operators / sharpeners / sharpen.py

52 lines · python ref:
import bpy
from bpy.props import BoolProperty
import bpy.utils.previews
from ... utility import addon
from math import radians


class HOPS_OT_Sharpen(bpy.types.Operator):
    bl_idname = "hops.sharp_n"
    bl_label = "Performs Sharpening"
    bl_options = {'REGISTER', 'UNDO'}
    bl_description = """LMB - Mark Sharp Edges (ssharp)
LMB + CTRL - Add Bevel / Apply Boolean /  Mark Sharp Edges (csharp)
LMB + SHIFT - Recalculate Sharp Edges (re-sharp)
LMB + ALT - Weighted Sort
LMB + CTRL + SHIFT - Remove Sharp Edges / Bevel Mod (clear-sharp)
LMB + ALT + CTRL - Sharp Manager (sharp manager)
"""

    @classmethod
    def poll(cls, context):
        return getattr(context.active_object, "type", "") == "MESH"

    def invoke(self, context, event):

        if event.ctrl and event.shift:
            bpy.ops.hops.clean_sharps()
            self.report({'INFO'}, F'Sharps Unmarked')

        elif event.alt and event.ctrl:
            bpy.ops.hops.sharp_manager('INVOKE_DEFAULT',take_sharp_from={'SEAM'},apply_sharp_to={'CREASE', 'BWEIGHT', 'SEAM', 'SHARP'})
            self.report({'INFO'}, F'Seams Converted To Sharp Markings')

        elif event.ctrl:
            bpy.ops.hops.complex_sharpen('INVOKE_DEFAULT', is_global=True, auto_smooth_angle=addon.preference().property.auto_smooth_angle, to_bwidth=True)
            self.report({'INFO'}, F'CSharpened ')

        elif event.alt:
            bpy.ops.hops.mod_weighted_normal(keep_sharp=True)
            self.report({'INFO'}, F'Weighted Normalize')
            return {'FINISHED'}

        elif event.shift:
            bpy.ops.hops.soft_sharpen('INVOKE_DEFAULT', additive_mode=False)
            self.report({'INFO'}, F'Re-Sharpened')

        else:
            bpy.ops.hops.soft_sharpen('INVOKE_DEFAULT', additive_mode=True, is_global=True, auto_smooth_angle=addon.preference().property.auto_smooth_angle)
            self.report({'INFO'}, F'SSharpened')

        return {'FINISHED'}