Maya Python - Set object pivot to selection center
<p>I'm trying to move the selected object pivot to the center of the objects selected vertices.</p>

<p>When I run the code I don't recieve any errors and almost everything works as intended, However the pivot of (obj)my selected object doesn't seem to set itself to the locator xform(piv).</p>

<pre><code>import maya.cmds as cmds

sel = cmds.ls(sl=True)
print sel
obj = cmds.ls(*sel, o=True)
print obj

selVerts = cmds.ls(sl=True)
tempClstr = cmds.cluster()
pos = cmds.xform(tempClstr[1], q=True, ws=True, rp=True)
loc = cmds.spaceLocator()
cmds.move(pos[0], pos[1], pos[2])
cmds.delete(tempClstr)

piv = cmds.xform (loc[1], piv=True, q=True, ws=True)
print piv
cmds.xform( obj, ws=True, piv=(piv[0], piv[1], piv[2]) )
</code></pre>

<p>Need some help on this one fast.
Any extra eyes that can spot what I'm missing would be greatly appreciated.</p>

<p>I think the main issue was that when you were using <code>obj = cmds.ls(*sel, o=True)</code>, it was only capturing the object's shape node instead of its transform. You can use <code>cmds.listRelatives</code> to get the shape's transform. You also don't need to create the locator as the cluster already gives you the position.</p>

<p>This seems to work for me, though you may want to consider some additional error checking for the selection portion as it assumes a lot.</p>

<pre><code>import maya.cmds as cmds

sel = cmds.ls(sl=True)
shapes = cmds.ls(sel, o=True)
obj = cmds.listRelatives(shapes[0], f=True, parent=True)[0]

selVerts = cmds.ls(sl=True)
tempClstr = cmds.cluster()
piv = cmds.xform(tempClstr[1], q=True, ws=True, rp=True)
cmds.delete(tempClstr)

cmds.xform(obj, ws=True, piv=(piv[0], piv[1], piv[2]) )
</code></pre>

python python-2.7 maya