here is some code I use for doing that. It could be written better, but I
was young. I needed the money. It has some code smell, but I dont' have
time to improve it.

import pymel.core as pmdef tfmAtCentroid(vertSel=None, tfmSel=None,
locator=True, name=None):
    """ select verts and joints. snaps a joint to the centroid
position of selected verts.     """
    # SELECTED VERTS AND JOINTS

    verts = vertSel or []
    tfms = tfmSel or []
    sel = pm.selected()

    returnList=[]

    # NOTHING PASSED IN OR SELECTED
    if not vertSel and not tfmSel and not sel:
        return

    # IF NO ARGS PASSED IN GET SELECTED
    if sel:
        for item in sel:
           # SORT THE SELECTION
           if item.__class__.__name__ == "MeshVertex":
               verts.append(item)

           else:
               tfms.append(item)

    # JUST SELECTED WHOLE PIECE(s) OF GEOM
    if tfms != [] and verts == []:

        for tfm in tfms:
            try:
                pm.select("%s.vtx[:]"%tfm,r=True)
                newTfm = tfmAtCentroid(locator=locator,name=name)[0]
                returnList.append(newTfm)
            except:
                # NOT A MESH
                if locator:
                    name = name or "%sNUL"%tfm
                    loc = pm.spaceLocator(n=name)
                    pm.delete(pm.pointConstraint(tfm,loc,mo=False))
                    returnList.append(loc)
                else:
                    name = name or "%sJNT"%tfm
                    pm.select(d=True)
                    j = pm.joint(n=name)
                    pm.select(d=True)
                    pm.delete(pm.pointConstraint(tfm,j,mo=False))
                    returnList.append(j)

        # HAVE TO RETURN HERE OR IT WILL CONTINUE ON AND MOVE YOUR TFM
TO THE ORIGIN
        return returnList

    # SELECTED SOME VERTS AND THATS IT
    if tfms == [] and verts != []:
        if locator:
            name = name or "%sNUL"% verts[0].node()
            loc = pm.spaceLocator(n=name)
            tfms.append(loc)
            returnList.append(loc)
        else:
            name = name or "%sJNT"% verts[0].node()
            j = pm.joint(n=name)
            pm.select(d=True)
            tfms.append(j)
            returnList.append(j)

        pm.select(verts,r=True)
        # CREATE A CLUSTER TEMPORARILY
        clsNode, clsHandle = pm.cluster()
        for tfm in tfms:
            # SNAP JOINTS TO THE CLUSTER HANDLE
            pm.select(d=True)
            pm.delete(pm.pointConstraint(clsHandle,tfm,mo=False))

    #DELETE THE CLUSTER HANDLE
    pm.select(d=True)
    try:
        pm.delete(clsNode,clsHandle)
    except: pass

    return returnList



On Thu, Sep 18, 2014 at 4:52 PM, <kevcorte...@gmail.com> wrote:

> Hi, Thanks for replying.
>
> by "component islands", I mean to say - 'Groups' of connected components
> (edges, faces, verts) in the current selection or passed in component id's.
>
> I'd love some help with that. I will just be creating locators at the
> average tfm of those component 'Groups' for now.
>
> I've figured out my previous posts dilemma, by just instancing a
> pm.MeshVertex() with the string(s) that the conversion cmd was giving me.
> that's probably not that best way though i figure.
>
> even so, now I have access to their positions and normals, just need to do
> some err, math.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Python Programming for Autodesk Maya" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to python_inside_maya+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/python_inside_maya/9c954523-f47d-4f5d-b67e-50b8bd6a13fe%40googlegroups.com
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to python_inside_maya+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/python_inside_maya/CABPXW4g0KD%2Bw61MzjDZTZaiy1LhR%3Ddq4gn%2Bj1RYHL3w2%3DTjgrA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to