Skip to content

Instantly share code, notes, and snippets.

View BigRoy's full-sized avatar

Roy Nieterau BigRoy

View GitHub Profile
"""
maya.cmds.listHistory() will always include the node itself when history is returned.
Here we're testing whether it's always the first node returned, if not a RuntimeError is raised.
We're also checking whether all nodes in the scene will return a valid history list, which isn't True.
The 'defaultColorMgtGlobals' node returns None instead of an empty list.
"""
from maya import cmds
import maya.OpenMaya as om
import maya.cmds as mc
import uuid
def get_name(node):
"""Get the long name from the MObject where appropriate"""
if node.hasFn(om.MFn.kDagNode):
return om.MFnDagNode(node).fullPathName()
else:
return om.MFnDependencyNode(node).name()
import maya.OpenMaya as om
import maya.cmds as mc
def callback(node, clientData):
fnDep = om.MFnDependencyNode(node)
node_name = fnDep.name()
print node_name
if __name__ == '__main__':
# Delete previous run (testing only)
import maya.OpenMaya as om
import maya.cmds as mc
import uuid
def get_name(node):
"""Get the long name from the MObject where appropriate"""
if node.hasFn(om.MFn.kDagNode):
return om.MFnDagNode(node).fullPathName()
else:
return om.MFnDependencyNode(node).name()
import maya.OpenMaya as om
import maya.cmds as mc
import uuid
def ensure_id(node):
"""Add a uuid attribute on the given node with a unique value.
Skips nodes that already have the attribute, unless when used upon duplicating.
Maya temporarily assigns the prefix '__PrenotatoPerDuplicare_' so we use that
import maya.cmds as mc
def offsets_to_input(mesh):
num_pts = mc.getAttr('{0}.pnts'.format(mesh), size=True)
for i in range(num_pts):
# Get the internal offset
offset = mc.getAttr('{0}.pnts[{1}]'.format(mesh, i))[0]
# Move the vertex position by the internal offset value (relative)
@BigRoy
BigRoy / inspect_file.py
Created October 27, 2015 10:56
Testing inspect filepath options for Pyblish plugins
cls.__path__ = None
if cls.__module__ != '__main__': # if not local (in-memory)
try:
cls.__path__ = inspect.getfile(cls)
except RuntimeError, e:
print e
@BigRoy
BigRoy / pyblish_get_family_options.py
Last active November 20, 2015 10:57
Get the options supported by a families' plug-ins by retrieving their "options" property and assembling them. The "options" property should be provided by the plug-in. For example this is done in Extractors in Pyblish Magenta: https://github.com/pyblish/pyblish-magenta
import pyblish.api
import logging
log = logging.getLogger(__name__)
def get_family_options(plugins, family):
"""Return the user-specifiable options for this family
The options name and types are gathered through
@BigRoy
BigRoy / maya_extract_edits.py
Created January 20, 2016 15:28
Description of how one could retrieve the "edits" for referenced nodes (draft implementation)
"""This is a first draft template that could be used to retrieve the edits on referenced nodes that define a look
Next step would be to filter the edits of interest, like shader assignments, sets they are added to, attributes that were added or changed in value.
Then we need to store these changes in a format that is artist-friendly and can be re-applied in another scene.
"""
import maya.cmds as mc
from collections import defaultdict
@BigRoy
BigRoy / parse_mel_cmd.py
Last active October 12, 2021 13:11
Parse a Maya MEL command string into the command name, args and kwargs.
def parse_mel_cmd(melStr):
"""Return the command, args and kwargs for a MEL command string"""
# Get python variant and split of pymel import line
import pymel.tools.mel2py as mel2py
pyCmd = mel2py.mel2pyStr(melStr)
pyCmd = pyCmd.splitlines()[1]
cmd, arguments = pyCmd.split("(", 1)