have in mind that this will only work if mel command you're testing
makes something undoable at once
my guess is that "get attr", "sphere();sphere();" would make some bad
things in the scene (either undo what's been done, or leave garbage).
> not sure how robust this is, but it seems to work:
>
> import maya.cmds as cmds
> import maya.mel as mel
> def isValidMelCmd( cmdStr ):
> undoState = cmds.undoInfo(q=1, state=1)
> cmds.undoInfo(state=1)
> isValid = None
> try:
> mel.eval(cmdStr)
> except:
> isValid = False
> else:
> isValid = True
> cmds.undo()
> finally:
> cmds.undoInfo(state=undoState)
> return isValid
>
> isValidMelCmd( "setAttr persp.tx 2" )
> # Result: True #
> isValidMelCmd( "3etAttr persp.tx 2" )
> # Result: False #
>
> if you wanted to make it work for python statements, it wouldn't be
> hard. just use eval instead of mel.eval
>
> -chad
>
>
>
>
> On Aug 27, 2009, at 10:13 PM, Taylor Carrasco wrote:
>
>> Is there a way to validate a mel command is valid (not necessarily
>> that it will execute properly) before running it?
>>
>> Something like .....
>> cmdValid("setAttr "PUP1:root_ctrl.extraRotY" 20;") returns true
>> cmdValid("3etAttr "PUP1:root_ctrl.extraRotY" 20;") returns false
>>
>>
>>
>>
>
>
> >
--
viktoras
www.neglostyti.com
--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/python_inside_maya
-~----------~----~----~----~------~----~------~--~---