""" https://sartikadelly.github.io/ cubeMerge() - Create a cube - Merge it with current selection - Delete the old cube - Freeze tranform & delete history """ import pymel.core as pm def cubeMerge(): # Get Selected selection = pm.selected() oldName = selection[0].name() # Make Cube & Save Cube Verts position cube = pm.polyCube() selection.append(cube) vertices = [i for i in pm.polyListComponentConversion(cube[0], tv=True)] vertices = pm.filterExpand(vertices[0], sm=31) vertsPos = [pm.PyNode(i).getPosition() for i in vertices] # Combine Object newObj, uniteNode = pm.polyUnite(selection, ch=True, mergeUVSets=True) # Delete Cube Faces vertsToDelete = [] for pos in vertsPos: pm.polySelectConstraint( mode=3, type=1, dist=1, distpoint=pos) vertsToDelete.append(pm.selected()) pm.polySelectConstraint(dist=0) facesToDelete = pm.polyListComponentConversion(vertsToDelete, tf=True) pm.delete(facesToDelete) # Freeze Transformation & Delete history pm.makeIdentity(apply=True, translate=True, rotate=True, scale=True, normal=0) pm.delete(newObj, constructionHistory=True) # Rename Merged object to original name (1st selected object) pm.rename(newObj, oldName) pm.select(newObj)