You can even create a nice little 'with' statement handler for tracking
node creation... John Patrick (who's on here sometimes) wrote a handy one
we use over here...

- Paul



On Mon, Oct 22, 2012 at 9:29 PM, Danny Wynne <[email protected]> wrote:

> add a callback to MObjectHandle, then you can get every node that is
> created regardless of what the command returns. Once you got your nodes,
> remove the callback
>
> import maya.OpenMaya as om
> import maya.cmds as cmds
> cmds.polyCube(n="testCube")
> new_nodes = []
> def cb_add_nodes(node, data):
> new_nodes.append(om.MObjectHandle(node))
> id = om.MDGMessage.addNodeAddedCallback(cb_add_nodes)
> #setDrivenKeyframe command does not return the anim_curve node
> cmds.setDrivenKeyframe("testCube", v=1, at="tx", cd="testCube.ty", dv=1,
> ott = "spline", itt = "spline")
> om.MDGMessage.removeCallback(id)
> for n in new_nodes:
> n_name = om.MFnDependencyNode(n.object()).name()
> print n_name
>
>
> I learned this from http://www.macaronikazoo.com/
>
> On Thursday, October 18, 2012 12:04:07 PM UTC+8, Berg Jones wrote:
>>
>> Trying to get the name of a newly created node without having to use a
>> certain workaround. Im adding a light shader with DL_createSurfaceShader.
>> This creates uber_surfaceN depending on whats in the scene. Then Im doing
>> more stuff in the same loop. How do I capture the name?
>>
>>
>> import maya.cmds as cmds
>> import maya.mel as mel
>>
>> def checkGeo():
>>     objNames = cmds.ls(sl=1)
>>     if objNames:
>>         geoShapes = cmds.ls(geometry=1)
>>         if geoShapes:
>>             geoTransforms = cmds.listRelatives(geoShapes, p=1)
>>             if 'lockedGeo1' in geoTransforms:
>>                 for i in objNames:
>>                     cmds.select(i)
>>                     createSurfaceShader()
>>                     cmds.select(clear=1)
>>
>> def createSurfaceShader():
>>     mel.eval('$selected_geo = `ls -sl`')
>>     mel.eval('$selected_geo_shape = `listRelatives -children -shapes
>> $selected_geo[0]`')
>>     mel.eval('DL_setObjectAttrib(**DL_createSurfaceShader("uber_**surface",
>> 0), "surface", $selected_geo_shape)')
>>
>  --
> view archives: http://groups.google.com/group/python_inside_maya
> change your subscription settings:
> http://groups.google.com/group/python_inside_maya/subscribe
>

-- 
view archives: http://groups.google.com/group/python_inside_maya
change your subscription settings: 
http://groups.google.com/group/python_inside_maya/subscribe

Reply via email to