pymel.api.plugins

Maya API plugin utilities

A quick example:

from pymel.api.plugins import Command
class testCmd(Command):
    def doIt(self, args):
        print "doIt..."

testCmd.register()
cmds.testCmd()
testCmd.deregister()

An example of a plugin which creates a node:

import math

import pymel.api.plugins as plugins
import maya.OpenMaya as om

class PymelSineNode(plugins.DependNode):
    '''Example node adapted from maya's example sine node plugin

    Shows how much easier it is to create a plugin node using pymel.api.plugins
    '''
    # For quick testing, if _typeId is not defined, pymel will create one by
    # hashing the node name. For longer-term uses, you should explicitly set
    # own typeId like this
    #
    # (NOTE - if using the automatic typeId generation, the hashlib python
    # builtin library must be functional / working from within maya... due
    # to dynamic library linking issues (ie, libssl, libcrypto), this
    # may not always be the case out-of-the-box on some linux distros
    _typeId = om.MTypeId(0x900FF)

    # by default, the name of the node will be the name of the class - to
    # override and set your own maya node name, do this:
    #_name = 'PymelSineNode'

    @classmethod
    def initialize(cls):
        # input
        nAttr = om.MFnNumericAttribute()
        cls.input = nAttr.create( "input", "in", om.MFnNumericData.kFloat, 0.0 )
        nAttr.setStorable(1)
        cls.addAttribute( cls.input )

        # output
        cls.output = nAttr.create( "output", "out", om.MFnNumericData.kFloat, 0.0 )
        nAttr.setStorable(1)
        nAttr.setWritable(1)
        cls.addAttribute( cls.output )

        # set attributeAffects relationships
        cls.attributeAffects( cls.input, cls.output )

    def compute(self, plug, dataBlock):
        if ( plug == self.output ):
            dataHandle = dataBlock.inputValue( self.input )
            inputFloat = dataHandle.asFloat()
            result = math.sin( inputFloat )
            outputHandle = dataBlock.outputValue( self.output )
            outputHandle.setFloat( result )
            dataBlock.setClean( plug )
            return om.MStatus.kSuccess
        return om.MStatus.kUnknownParameter

## initialize the script plug-in
def initializePlugin(mobject):
    PymelSineNode.register(mobject)

# uninitialize the script plug-in
def uninitializePlugin(mobject):
    PymelSineNode.deregister(mobject)

Functions

allMPx Returns a list of all MPx classes
enumToStr Returns a dictionary mapping from an MPxNode node type enum to it’s string name.
initializePlugin do not call directly
loadAllMayaPlugins will load all maya-installed plugins
mayaPlugins all maya plugins in the maya install directory
pluginCommands Returns the list of all commands that the plugin provides, to the best of our knowledge.
uninitializePlugin do not call directly
unloadAllPlugins

Classes

Assembly
BasePluginMixin
BlendShape
CameraSet
Command create a subclass of this with a doIt method
ComponentShape
Constraint
DeformerNode
DependNode
EmitterNode
FieldNode
FileTranslator
FluidEmitterNode
GeometryFilter
HardwareShader
HwShaderNode
IkSolverNode
ImagePlane
LocatorNode
ManipContainer
ManipulatorNode
MotionPathNode
ObjectSet
ParticleAttributeMapperNode
PolyTrg
PyNodeMethod Used as a decorator, placed on methods on a plugin node class, to signal that these methods should be placed on to PyNode objects constructed for the resulting depend nodes.
SkinCluster
SpringNode
SurfaceShape
Transform
TransformationMatrix

Exceptions

AlreadyRegisteredError
NotRegisteredError
PluginError
PluginRegistryError