Skip to main content
2 of 5
tags, api link
p2or
  • 16.1k
  • 10
  • 87
  • 146

Why does bpy.ops.object.convert(target='MESH') have an error?

So in this script for Csharpen I am getting an error after the first if for the bpy.ops.object.convert(target='MESH'). I am not sure why that is since it was working fine before adding conditionals. Is there a reason why that is happening?

class sharpenOperator(bpy.types.Operator):
'''Sharpen With Modifiers and Bevelling'''
bl_idname = "csharpen.objects"
bl_label = "CSharpen"
bl_options = {'REGISTER', 'UNDO'} 

ssharpangle = FloatProperty(name="SSharpening Angle", description="Set SSharp Angle", default= 30.0, min = 0.0, max = 180.0)

angle = FloatProperty(name="AutoSmooth Angle", description="Set AutoSmooth angle", default= 60.0, min = 0.0, max = 180.0)

bevelwidth = FloatProperty(name="Bevel Width Amount", description="Set Bevel Width", default= 0.0071, min = 0.002, max = .25)

applyAll = BoolProperty(default = True)

originalbevel = FloatProperty()

    # ADD A DRAW FUNCTION TO DISPLAY PROPERTIES ON THE F6 MENU
def draw(self, context):
    layout = self.layout

    box = layout.box()
    # DRAW YOUR PROPERTIES IN A BOX
    box.prop( self, 'ssharpangle', text = "SsharpAngle" )
    box.prop( self, 'angle', text = "SmoothingAngle" )
    box.prop( self, 'bevelwidth', text = "BevelWidth")
    box.prop( self, 'applyall', text = "ApplyAll")
  
def execute(self, context):
    #convert angle
    ob = bpy.context.selected_objects
    angle = self.angle
    originalbevel = self.originalbevel
    ssharpangle = self.ssharpangle
    angle = angle * (3.14159265359/180)
    ssharpangle = ssharpangle * (3.14159265359/180)
    bevelwidth = self.bevelwidth
    
    #Sets the Bevel Width To The Orig Bevel Width
    originalbevel = bpy.context.object.modifiers["Bevel"].width
           
    if self.Applyall:
        #remove modifiers no one would want applied in this instance
        bpy.ops.object.modifier_remove(modifier="Bevel")
        bpy.ops.object.modifier_remove(modifier="Solidify"
        #convert to mesh for sanity
        bpy.ops.object.convert(target='MESH')

        #apply the scale to keep me sane
        bpy.ops.object.transform_apply(location=False, rotation=False, scale=True)
        
        #Start In Edit Mode
        bpy.ops.object.mode_set(mode='EDIT')
       
        #Unhide all The Geo!
        bpy.ops.mesh.reveal()
        
        #Clear SSharps Then Redo It
        #bpy.ops.mesh.select_mode(use_extend=False, use_expand=False, type='EDGE')
        #bpy.ops.mesh.select_all(action='DESELECT')
        #bpy.ops.mesh.select_all(action='TOGGLE')
        
        #AR suggested using -1s instead of Zeroes
        #bpy.ops.transform.edge_bevelweight(value=-1)
        #bpy.ops.mesh.mark_sharp(clear=True)
        #bpy.ops.transform.edge_crease(value=-1)
        
        #then do the csharp operator stuff.
        bpy.ops.mesh.select_mode(use_extend=False, use_expand=False, type='EDGE')
        bpy.ops.mesh.select_all(action='DESELECT')
        
        #Sharpening now using the ssharpangle parameter.
        bpy.ops.mesh.edges_select_sharp(sharpness=ssharpangle)
                            
        bpy.ops.transform.edge_bevelweight(value=1)
        bpy.ops.transform.edge_crease(value=1)
        bpy.ops.mesh.mark_sharp()
        bpy.ops.object.editmode_toggle()     
        
    else:
        #Start In Edit Mode
        bpy.ops.object.mode_set(mode='EDIT')
       
        #Unhide all The Geo!
        bpy.ops.mesh.reveal()
        
        #Clear SSharps Then Redo It
        #bpy.ops.mesh.select_mode(use_extend=False, use_expand=False, type='EDGE')
        #bpy.ops.mesh.select_all(action='DESELECT')
        #bpy.ops.mesh.select_all(action='TOGGLE')
        
        #AR suggested using -1s instead of Zeroes
        #bpy.ops.transform.edge_bevelweight(value=-1)
        #bpy.ops.mesh.mark_sharp(clear=True)
        #bpy.ops.transform.edge_crease(value=-1)
        
        #then do the csharp operator stuff.
        bpy.ops.mesh.select_mode(use_extend=False, use_expand=False, type='EDGE')
        bpy.ops.mesh.select_all(action='DESELECT')
        
        #Sharpening now using the ssharpangle parameter.
        bpy.ops.mesh.edges_select_sharp(sharpness=ssharpangle)
                            
        bpy.ops.transform.edge_bevelweight(value=1)
        bpy.ops.transform.edge_crease(value=1)
        bpy.ops.mesh.mark_sharp()
        bpy.ops.object.editmode_toggle()     
        
    #keep the old here for now
    bpy.ops.object.modifier_add(type='BEVEL')
    bpy.context.object.modifiers["Bevel"].use_clamp_overlap = False
    bpy.context.object.modifiers["Bevel"].show_in_editmode = False
    bpy.context.object.modifiers["Bevel"].width = 0.0071
    bpy.context.object.modifiers["Bevel"].segments = 3
    bpy.context.object.modifiers["Bevel"].profile = 0.70
    bpy.context.object.modifiers["Bevel"].limit_method = 'WEIGHT'

    #Sets Bevel To Bevel Width needs IF
    bpy.context.object.modifiers["Bevel"].width = bevelwidth
    
    bpy.context.object.data.use_auto_smooth = True
    
    #now sets angle to Var angle.
    bpy.context.object.data.auto_smooth_angle = angle
    
    
    bpy.ops.object.shade_smooth()
    
    return {'FINISHED'}