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()
alembicTool_assemblyInfo
最新推荐文章于 2020-09-22 22:47:42 发布