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 | |
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 |