Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import c4d
- from c4d import gui
- """
- Author: Owen Lim
- Date Modified: 190314
- Date Created: 270813
- Version 1.10
- """
- def pressRecycle():
- # get selected
- selectedObjects = doc.GetActiveObjects(c4d.GETACTIVEOBJECTFLAGS_0)
- if len(selectedObjects) == 0:
- # run clear bin proccess
- clearBin()
- else:
- # call select all children command
- c4d.CallCommand(16388)
- # renew selected objects with their children
- selectedObjects = doc.GetActiveObjects(c4d.GETACTIVEOBJECTFLAGS_CHILDREN)
- # get list of layers
- layerList = doc.GetLayerObjectRoot().GetChildren()
- # rBin status
- rBin = False
- for layer in layerList:
- # searches for binLayer
- if layer.GetName() == "recycleBin":
- # set rBin to True
- rBin = True
- # adds objects to layer
- for obj in selectedObjects:
- obj.SetLayerObject(layer)
- c4d.EventAdd()
- return True
- if rBin == False:
- # create new layer
- c4d.CallCommand(100004738)
- # get last layer
- newLayerList = doc.GetLayerObjectRoot().GetChildren()
- binLayer = newLayerList[-1]
- binLayer.SetName("recycleBin")
- # sets layer options
- layerData = binLayer.GetLayerData(doc)
- layerData["render"] = False
- layerData["view"] = False
- layerData["expressions"] = False
- layerData["generators"] = False
- layerData["deformers"] = False
- layerData["manager"] = False
- layerData["locked"] = False
- layerData["animation"] = False
- binLayer.SetLayerData(doc,layerData)
- # adds objects to layer
- for obj in selectedObjects:
- obj.SetLayerObject(binLayer)
- print "run complete"
- c4d.EventAdd()
- def clearBin():
- print "Run clear bin proccess"
- # ask for confirmation
- confirmResult = gui.QuestionDialog(("Are you sure you want to clear the recycle bin?\n\n"
- " THIS CANNOT BE UNDONE!!"))
- if confirmResult == True:
- # delete objects
- # get list of layers
- layerList = doc.GetLayerObjectRoot().GetChildren()
- for layer in layerList:
- # searches for binLayer
- if layer.GetName() == "recycleBin":
- # Unlocks layer
- layerData = layer.GetLayerData(doc)
- layerData["locked"] = False
- layer.SetLayerData(doc,layerData)
- # selects layer
- layer.SetBit(c4d.BIT_ACTIVE)
- else:
- layer.DelBit(c4d.BIT_ACTIVE)
- # call select from layer
- c4d.CallCommand(100004737)
- # get newly selected objects
- objectsToDelete = doc.GetActiveObjects(c4d.GETACTIVEOBJECTFLAGS_CHILDREN)
- for eachObj in objectsToDelete:
- eachObj.Remove()
- else:
- # do nothing
- print "User Defined Cancel"
- return False
- pressRecycle()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement