您的位置:首页 > 其它

alembicTool_assemblyInfo

2016-03-23 11:47 330 查看
import re
import maya.OpenMaya as OpenMaya
import bplatform.path

def getAssemblyRepresentationsInfo(name):
sel = OpenMaya.MSelectionList()
object = OpenMaya.MObject()
try:
sel.add(name)
sel.getDependNode(0,object)
except:
raise Exception('can not find object named: %s' % name)

if object.apiType() != OpenMaya.MFn.kAssembly:
raise Exception('object named: %s is not a assembly' % name)

ass = OpenMaya.MFnAssembly(object)

plug = ass.findPlug('representations')
representations = list()
for i in xrange(plug.numElements()):
plug_index = plug.elementByPhysicalIndex(i)
if plug_index.numChildren() == 4:
representations.append({'name':plug_index.child(0),
'label':plug_index.child(1),
'type':plug_index.child(2),
'data':plug_index.child(3)})
return representations

def getAssemblyActivePath(name):
sel = OpenMaya.MSelectionList()
object = OpenMaya.MObject()
try:
sel.add(name)
sel.getDependNode(0,object)
except:
raise Exception('can not find object named: %s' % name)

if object.apiType() != OpenMaya.MFn.kAssembly:
raise Exception('object named: %s is not a assembly' % name)

ass = OpenMaya.MFnAssembly(object)

plug = ass.findPlug('representations')
representations = list()
for i in xrange(plug.numElements()):
plug_index = plug.elementByPhysicalIndex(i)
if plug_index.numChildren() == 4:
representations.append({'name':plug_index.child(0),
'label':plug_index.child(1),
'type':plug_index.child(2),
'data':plug_index.child(3)})

for i in representations:
if ass.getActive() == i['name'].asString():
return i['data'].asString()

def getNamespace(name):
sel = OpenMaya.MSelectionList()
object = OpenMaya.MObject()
try:
sel.add(name)
sel.getDependNode(0,object)
except:
raise Exception('can not find object named: %s' % name)

if object.apiType() != OpenMaya.MFn.kAssembly:
raise Exception('object named: %s is not a assembly' % name)

ass = OpenMaya.MFnAssembly(object)
return ass.getRepNamespace()

def setActive(name,fiterText = None,type = 'Scene'):
sel = OpenMaya.MSelectionList()
object = OpenMaya.MObject()
try:
sel.add(name)
sel.getDependNode(0,object)
except:
raise Exception('can not find object named: %s' % name)

if object.apiType() != OpenMaya.MFn.kAssembly:
raise Exception('object named: %s is not a assembly' % name)

ass = OpenMaya.MFnAssembly(object)

all_rep = getAssemblyRepresentationsInfo(name)

if not fiterText:
fiterText = ['']

elif isinstance(fiterText,basestring):
fiterText = [fiterText]

for f in fiterText:
for i in all_rep:
if i.get('type').asString() == type and re.match(r'.*%s.*' % f,i.get('name').asString()):
if ass.getActive() != i.get('name').asString():
ass.activate(i.get('name').asString())
return i.get('name').asString()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: