import maya.cmds as cmds
transforms = cmds.ls(type='transform')
deleteList = []
for tran in transforms:
if cmds.nodeType(tran) == 'transform':
children = cmds.listRelatives(tran, c=True)
if children == None:
print '%s, has no childred' %(tran)
deleteList.append(tran)
cmds.delete(deleteList)
THNKR, that rarely works. Not sure what maya considers empty transforms but it's pretty picky, I think even a group within a group doesn't qualify for delete.
THNKR, that rarely works. Not sure what maya considers empty transforms but it's pretty picky, I think even a group within a group doesn't qualify for delete.
Yeah but if your group is in another group and the last group in the hierarchy doesn't have any child, do you want to delete this group or to keep it?
Example :
-group1
--group2
---group3
Do you want to delete group3 or not?
or :
- cube01
--group1
---group2
Do you want to delete group2 or not?
I think Maya will clean one time.... after that "oh damn this grp is empty! ok.. then // I will delete it..."
I usually found Optimise Scene Size works pretty well, provided you've deleted history.
If you don't delete history on all your objects, the transforms which appear "empty" in the outliner may still have connections to valid objects in your scene (eg. after a Combine operation, the previous transforms are now empty but still affect the position of the combined objects).
If you first Delete History on all objects (or Non-Deformer history to be safer), then do Optimise Scene Size, it should always get rid of all empty groups.
import maya.cmds as cmds
transforms = cmds.ls(type='transform')
deleteList = []
for tran in transforms:
if cmds.nodeType(tran) == 'transform':
children = cmds.listRelatives(tran, c=True)
if children == None:
print '%s, has no childred' %(tran)
deleteList.append(tran)
if len(deleteList) > 0:
cmds.delete(deleteList)
Never had any issue with the Optimize Scene Size.
If the empty groups don't disappear, that means they're connected to something and I recommend you to double check if it's something important or not.
Hey! Sorry to revive this age-old thread, but I imported a scene from sketchup and it comes with a ton of groups with one object under them. How could this script be modified to do this too?
Replies
Remove empty: (check) Transforms.
Yeah but if your group is in another group and the last group in the hierarchy doesn't have any child, do you want to delete this group or to keep it?
Example :
-group1
--group2
---group3
Do you want to delete group3 or not?
or :
- cube01
--group1
---group2
Do you want to delete group2 or not?
I think Maya will clean one time.... after that "oh damn this grp is empty! ok.. then // I will delete it..."
So any transform without any other node children ( shape node? etc ) other than transform nodes??
If you don't delete history on all your objects, the transforms which appear "empty" in the outliner may still have connections to valid objects in your scene (eg. after a Combine operation, the previous transforms are now empty but still affect the position of the combined objects).
If you first Delete History on all objects (or Non-Deformer history to be safer), then do Optimise Scene Size, it should always get rid of all empty groups.
Do you have a scene example, or screen of your complete outliner ?
Then you could explain what are the node you would like to delete or not?
I also remember some bugs with the Optimize Scene Size in Maya but before the 2008 version.
What version are you using right now?
If the empty groups don't disappear, that means they're connected to something and I recommend you to double check if it's something important or not.