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 |
| 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 | |
| CameraSet | |
| Command | create a subclass of this with a doIt method |
| ComponentShape | |
| Constraint | |
| DeformerNode | |
| DependNode | |
| EmitterNode | |
| FieldNode | |
| FluidEmitterNode | |
| HardwareShader | |
| HwShaderNode | |
| IkSolverNode | |
| ImagePlane | |
| LocatorNode | |
| ManipContainer | |
| ManipulatorNode | |
| ObjectSet | |
| ParticleAttributeMapperNode | |
| PolyTrg | |
| PyNodeMethod | Used as a decorator, placed on methods on a plugin node class, to signal |
| Representation | |
| SpringNode | |
| SurfaceShape | |
| Transform | |
| TransformationMatrix | |
| defaultdict | defaultdict(default_factory) –> dict with default factory |
Exceptions
| AlreadyRegisteredError | |
| NotRegisteredError | |
| PluginError | |
| PluginRegistryError |