OverviewFilesCommitsIssuesDocsReleasesPeers

hardops / operators / preferences / set_sharpness.py

77 lines · python ref:
import bpy
from math import degrees, radians
from bpy.props import FloatProperty
from ... utility import addon


class HOPS_OT_SetSharpness30(bpy.types.Operator):
    bl_idname = "hops.set_sharpness_30"
    bl_label = "Set Hops Global Sharpness Angle 30"
    bl_options = {"REGISTER", "INTERNAL"}
    bl_description = "Sets Hops global sharpness angle for use with ssharp / csharp"

    sharpness: FloatProperty(name="angle edge marks are applied to", default=radians(30), min=radians(1), max=radians(180), subtype="ANGLE")

    def execute(self, context):

        addon.preference().property.sharpness = self.sharpness
        bpy.ops.hops.display_notification(info=f'Pre-Sharp : {degrees(addon.preference().property.sharpness):.0f} ', subtext="To be used with next Sharpening operation")

        return {"FINISHED"}


class HOPS_OT_SetSharpness45(bpy.types.Operator):
    bl_idname = "hops.set_sharpness_45"
    bl_label = "Set Hops Global Sharpness Angle 45"
    bl_options = {"REGISTER", "INTERNAL"}
    bl_description = "Sets Hops global sharpness angle for use with ssharp / csharp"

    sharpness: FloatProperty(name="angle edge marks are applied to", default=radians(45), min=radians(1), max=radians(180), subtype="ANGLE")

    def execute(self, context):

        addon.preference().property.sharpness = self.sharpness
        bpy.ops.hops.display_notification(info=f'Pre-Sharp : {degrees(addon.preference().property.sharpness):.0f} ', subtext="To be used with next Sharpening operation")

        return {"FINISHED"}


class HOPS_OT_SetSharpness60(bpy.types.Operator):
    bl_idname = "hops.set_sharpness_60"
    bl_label = "Set Hops Global Sharpness Angle 60"
    bl_options = {"REGISTER", "INTERNAL"}
    bl_description = "Sets Hops global sharpness angle for use with ssharp / csharp"

    sharpness: FloatProperty(name="angle edge marks are applied to", default=radians(60), min=radians(1), max=radians(180), subtype="ANGLE")

    def execute(self, context):

        addon.preference().property.sharpness = self.sharpness
        bpy.ops.hops.display_notification(info=f'Pre-Sharp : {degrees(addon.preference().property.sharpness):.0f} ', subtext="To be used with next Sharpening operation")

        return {"FINISHED"}


class HOPS_OT_SetAutoSmooth(bpy.types.Operator):
    bl_idname = "hops.set_autosmoouth"
    bl_label = "Set Autosmooth Angle"
    bl_options = {"REGISTER", "INTERNAL"}
    bl_description = "Sets object autosmooth angle"

    angle: FloatProperty(name="Angle", default=radians(45), min=radians(1), max=radians(180), subtype="ANGLE")

    @classmethod
    def poll(cls, context):
        object = context.active_object
        if object.mode == "OBJECT":
            return True

    def execute(self, context):

        bpy.ops.object.shade_smooth()
        context.object.data.use_auto_smooth = True
        context.object.data.auto_smooth_angle = self.angle
        bpy.ops.hops.display_notification(info=f'Autosmooth {degrees(bpy.context.object.data.auto_smooth_angle):.0f} ', subtext="Set Smooth / Autosmooth Enabled")

        return {"FINISHED"}