Skip to content

Instantly share code, notes, and snippets.

@Onefabis
Created November 15, 2015 15:52
Show Gist options
  • Save Onefabis/d5a5a3b11b16e8c605e4 to your computer and use it in GitHub Desktop.
Save Onefabis/d5a5a3b11b16e8c605e4 to your computer and use it in GitHub Desktop.
Reverse subdivision
from pymel.all import *
import maya.mel as mel
import maya.OpenMaya as om
'''
def makeUnique( lst ):
result = list()
map( lambda x: not x in result and result.append(x), lst )
return result
print makeUnique( edges )
'''
#Get the selected mesh
slm = ls( sl=1 )[0]
sel = slm.getShape().vtx[0]
asel = ls( polyListComponentConversion( polyListComponentConversion( sel, tf=1 ), tv=1 ), fl=1 )
sel = [ v for v in asel if not v.isConnectedTo( sel ) and v != sel ]
#Convert selection to edges...
es = [ e.indices()[0] for e in ls( polyListComponentConversion( sel[0], fv=1, te=1 ), fl=1 ) ]
edges = []
#Select edge loops and rings...
for e in es:
edges.extend( polySelect( slm, el=e, ns=1 ) )
edges = list( set( edges ) )
es = []
for e in edges:
es.extend( polySelect( slm, er=e, en=2, ns=1 ) )
edges = list( set( es ) )
#sorted( edges, key=int )
elementArray = om.MIntArray ()
msu = om.MScriptUtil()
msu.createIntArrayFromList( edges, elementArray )
sel = om.MSelectionList()
components = om.MObject()
edges = om.MFnSingleIndexedComponent()
components = edges.create( api.MFn.kMeshEdgeComponent )
edges.addElements( elementArray )
def mDagPathFromName( name ):
selList = om.MSelectionList()
selList.add( str( name ) )
mDagPath = om.MDagPath()
selList.getDagPath( 0, mDagPath )
return mDagPath
mdag = mDagPathFromName( slm )
sel.add( mdag, components )
om.MGlobal.setActiveSelectionList( sel, om.MGlobal.kReplaceList )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment