Search code examples
pythonmaya

maya + python: Execute and continue upon errored operation


Is there a way I can modify this script which tries to fillet two lines and results in an error during the operation, and continue on through the script? The try exception didn't seem to work.

import maya.cmds as cmds

cmds.file(new=True, f=True)

# Create a circular fillet (by default) having radius 2.5 between the
# active curves:
a = cmds.curve(d=1, p=[(0, 0, 0), (0, 0, 5)] )
b = cmds.curve(d=1, p=[(0, 0, 5), (0, 0, 10)] )
c = cmds.curve(d=1, p=[(0, 0, 10), (-5, 0, 10)] )

allShapes = [a,b,c]

# do the first fillet
filletA = cmds.filletCurve(a,b, r=1.5 )
if cmds.objExists(filletA):
    allShapes.append(filletA)

# do the second fillet  
filletB = cmds.filletCurve(b,c, r=1.5 )  
if cmds.objExists(filletB):
    allShapes.append(filletB) 

print 'ran'
print allShapes

the error

# Warning: No curve contact point specified. Using start of curve instead. # 
# Warning: No curve contact point specified. Using start of curve instead. # 
# Warning: filletCurve1 (Fillet Curve): failed to get normal. # 
# Traceback (most recent call last):
#   File "<string>", line 12, in <module>
#   File "C:\\Users\\Martini\\Desktop\\trash\\fillet_01.py", line 14, in <module>
#     filletA = cmds.filletCurve(a,b, r=1.5 )
# # RuntimeError: Command filletCurve failed. Open Script Editor for details.

Solution

  • Standard python try / except:

    try: 
       #... do your stuff here...
    except RuntimeError:
       #... continue here
    

    limit your exception catching to ones you expect (in this case, RuntimeError is what Maya usually throws if a command fails) so you can get around Maya problems without hiding your errors.

    Some general notes here: