How to get from Maya event of a change highlight objects in the scene?

依然范特西╮ 提交于 2019-12-01 14:06:32

I really recommend if you doing a pretty heavy stuff then stay away from scriptjob. I prefer to go with API

def test(*args, **kwargs):
    print "Fooo"


import maya.OpenMaya as OpenMaya
idx = OpenMaya.MEventMessage.addEventCallback("SelectionChanged", test)

#when ever you finish doing your stuff
OpenMaya.MMessage.removeCallback(idx)

You can use scriptJob command for this.

scriptJob let's you specify code or perform some action(s) when specified condition is met or a specified event is triggered.

For selection change, you'd use the event flag with "SelectionChanged" as parameter:

myScriptJobID = scriptJob(event=["SelectionChanged", your_function])

# You can later use this scriptJob's id to modify or delete it like so:

scriptJob(kill=myScriptJobID)

Check out the docs for more options.

until I found just such a solution based on maya api:

self.sJob = cmds.scriptJob(event=['SelectionChanged', self.myFnc])

This mechanism creates Maya event that calls my function when there is a change object selection.

Perhaps there is a more correct option. For example to get identifokator window maya and it make your event. Although I think that the use of maya api also not a bad option. The only downside is that you have to follow and remove scriptJob when closing a window, but it's a solvable problem.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!