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

拜拜、爱过 提交于 2019-12-19 12:01:44

问题


I'm using: Maya2014 + pyqt4.8 + python2.7

I'm doing an application which allows you to speed up and simplify the selection of items in Maya. Is a selector which the user can attach to how the objects in the scene. Selection of objects in the window leads to the separation of objects in the scene. but on the contrary I can not find how to do.

How to catch an event that occurs when changing the selection of objects in the scene and process it further its program?


回答1:


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)



回答2:


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.




回答3:


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.



来源:https://stackoverflow.com/questions/32090392/how-to-get-from-maya-event-of-a-change-highlight-objects-in-the-scene

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