[ create a new paste ] login | about

Link: http://codepad.org/miEhYxcf    [ raw code | fork ]

C, pasted on Apr 5:
import c4d

def main():
    objlist  = doc.GetActiveObjects(c4d.GETACTIVEOBJECTFLAGS_CHILDREN)
    baseview = doc.GetActiveBaseDraw()
    
    doc.StartUndo()
    for obj in objlist:
        check(obj, baseview)
    doc.EndUndo()
    c4d.EventAdd()

def check(obj, bv):
    result = bv.TestClipping3D(c4d.Vector(), obj.GetRad(), obj.GetMg())
    lchild = []
    
    for child in obj.GetChildren():
        cld = check(child, bv)
        if cld:
            lchild.append(cld)
    
    if not result["visible"] and not lchild:
        doc.AddUndo(c4d.UNDOTYPE_DELETE, obj)
        obj.Remove()
        return None
    
    elif not result["visible"] and lchild:
        parent = obj.GetUp()
        if not parent:
            parent = c4d.BaseObject(c4d.Onull)
        host   = c4d.BaseObject(c4d.Onull)
        host.SetName(obj.GetName())
        host.SetMl(obj.GetMl())
        host.InsertAfter(obj)
        
        for child in lchild:
            child.InsertUnderLast(host)
            
        doc.AddUndo(c4d.UNDOTYPE_DELETE, obj)
        obj.Remove()
        return host
    
    else:
        return obj

if __name__=='__main__':
    main()


Create a new paste based on this one


Comments: