Evgeniy Zaitsev Technical Artist

16Nov/15Off

Get all extra attributes Maya Python API

Select the node and run:

 
m_list = getAllExtraAttributes()
print( m_list )


import maya.cmds as cmds
import maya.OpenMaya as OpenMaya

def getMObjectFromSelection():
    m_selectionList = OpenMaya.MSelectionList()
    OpenMaya.MGlobal.getActiveSelectionList( m_selectionList )
    m_node = OpenMaya.MObject() 
    try:                          
        m_selectionList.getDependNode( 0, m_node )
        if ( m_node.isNull() ): return None
    except:
        return None
    return m_node
    
def getAllExtraAttributes():
    m_result = []
    m_obj         = getMObjectFromSelection()
    m_workMFnDep  = OpenMaya.MFnDependencyNode()
    m_workMDagMod = OpenMaya.MDagModifier()
    if ( m_obj ):
        m_objFn    = OpenMaya.MFnDependencyNode()
        m_objFn.setObject( m_obj ) # get function set from MObject
        m_objRef = m_workMFnDep.create( m_objFn.typeName() ) # Create reference MObject of the given type
        # -- get the list --    
        m_result = getAttrListDifference( m_obj,m_objRef )
        # -- 
        m_workMDagMod.deleteNode( m_objRef ) # set node to delete 
        m_workMDagMod.doIt() # execute delete operation
    return m_result
        
def getAttrListDifference( m_obj, m_objRef ):
    m_objFn    = OpenMaya.MFnDependencyNode()
    m_objRefFn = OpenMaya.MFnDependencyNode()
    m_objFn.setObject( m_obj )
    m_objRefFn.setObject( m_objRef )
    m_result = []
    if ( m_objFn.attributeCount() > m_objRefFn.attributeCount() ):
        for i in range( m_objRefFn.attributeCount(), m_objFn.attributeCount()  ):
            m_atrr = m_objFn.attribute(i)
            m_fnAttr = OpenMaya.MFnAttribute( m_atrr )
            m_result.append( m_fnAttr.name() )      
    return m_result

How you can use it:

 
m_list = getAllExtraAttributes()
print( m_list )
Comments (0) Trackbacks (0)

Sorry, the comment form is closed at this time.

Trackbacks are disabled.