burned_fenrir
burned_fenrir

Reputation: 137

maya.cmds Dialog to end script

I would like to end an entire script once an attribute has not been found. Currently, I have the following code. I display a dialog and use sys.exit() to end the script but I m wondering if there is a cmds dialog that does this automatically for you without sys.exit(),

def check_attr(attr):
    if not cmds.select(cmds.ls(attr)):
         cmds.confirmDialog(title= 'Attribute not found   ', message = attr+' attribute was not found', button =['OK'])
         sys.exit()

My question: Does a cmds...Dialog that stops a script exist?

Upvotes: 0

Views: 2288

Answers (1)

Green Cell
Green Cell

Reputation: 4783

Since you're using a function the easiest way would be to use return in your if condition so that it never continues the rest of the function:

def check_attr(attr):
    if not cmds.select(cmds.ls(attr)):
         cmds.confirmDialog(title= 'Attribute not found   ', message = attr+' attribute was not found', button =['OK'])
         return

    print "Continuing script"


check_attr("someAttr")

You can also use OpenMaya.MGlobal.displayError to display it in Maya's taskbar:

import maya.OpenMaya as OpenMaya


def check_attr(attr):
    if not cmds.select(cmds.ls(attr)):
         OpenMaya.MGlobal.displayError(attr + ' attribute was not found')
         return

    print "Continuing script"


check_attr("attr")

Though be careful since OpenMaya.MGlobal.displayError simply displays an error, it doesn't stop execution like cmds.error. You could use cmds.error too, but I find that the error it spits out in the taskbar is a lot less readable.

Upvotes: 1

Related Questions