示例#1
0
import c4d
from c4d import gui

if __name__ == "__main__":
    doc = c4d.documents.GetActiveDocument()
    selected = doc.GetActiveObjects(0)
    totalobjects = len(selected)

    if totalobjects > 0:  # we have one or more selected objects in the scene
        basename = gui.RenameDialog("Enter new basename...")

        i = 0
        for ob in selected:
            ob.SetName(basename + str(i))
            i = i + 1
            doc.AddUndo(c4d.UNDOTYPE_CHANGE, i)  #undo
            sweep = c4d.BaseObject(5118)

            doc.AddUndo(c4d.UNDOTYPE_NEW, sweep)  #undo
            doc.InsertObject(sweep)

            parent = i.GetUp()
            if parent != None:
                sweep.InsertUnder(parent)
            i.InsertUnder(sweep)

            square = c4d.BaseObject(5186)
            square[c4d.SPLINEOBJECT_INTERPOLATION] = 1
            square[c4d.SPLINEOBJECT_SUB] = 3
            square[c4d.PRIM_RECTANGLE_WIDTH] = userInput
            square[c4d.PRIM_RECTANGLE_HEIGHT] = userInput
            square.InsertUnder(sweep)

            newTag = c4d.BaseTag(c4d.Tphong)
            sweep.InsertTag(newTag)
            doc.AddUndo(c4d.UNDOTYPE_NEW, newTag)


userInput = gui.RenameDialog('thickness')

if userInput != None:
    userInput = float(userInput)
    sweepSplines()
    c4d.EventAdd()
    doc.EndUndo()  #undo
def main():
    null01name = doc.SearchObject("measure 01 x")
    null02name = doc.SearchObject("measure 02 x")
    
    selection = doc.GetActiveObjects(c4d.GETACTIVEOBJECTFLAGS_0)
    
    
    if null01name == None or null02name == None:
        
        # Create measure NULLs
        null01 = c4d.BaseObject(c4d.Onull)
        null01[c4d.NULLOBJECT_DISPLAY]=13
        null01[c4d.NULLOBJECT_ORIENTATION]=3
        null01[c4d.ID_BASELIST_NAME] = "measure 01 x"
        null01[c4d.ID_BASEOBJECT_USECOLOR]=2
        null01[c4d.ID_BASEOBJECT_COLOR]=c4d.Vector(255,0,0)
        
        null02 = c4d.BaseObject(c4d.Onull)
        null02[c4d.NULLOBJECT_DISPLAY]=13
        null02[c4d.NULLOBJECT_ORIENTATION]=3
        null02[c4d.ID_BASELIST_NAME] = "measure 02 x"
        null02[c4d.ID_BASEOBJECT_USECOLOR]=2
        null02[c4d.ID_BASEOBJECT_COLOR]=c4d.Vector(255,0,0)
        null02[c4d.ID_BASEOBJECT_REL_POSITION,c4d.VECTOR_X]=50
        
        doc.StartUndo()
        
        # Insert NULL objects
        doc.AddUndo(c4d.UNDOTYPE_NEW,null01)
        doc.InsertObject(null01)
        doc.AddUndo(c4d.UNDOTYPE_NEW,null02)
        doc.InsertObject(null02)
        
        doc.EndUndo()
        
        # Unfold Hierarchy
        null02.InsertUnder(null01)
        null01.SetBit(c4d.BIT_ACTIVE)
        c4d.CallCommand(100004802) # Unfold Selected
        
        # Create protection tags
        
        pronull02 = null02.MakeTag(c4d.Tprotection)
        pronull02[c4d.PROTECTION_P_X]=False
        
    else:
        if len(selection) > 1:
            gui.MessageDialog("Select only the image plane.")
    
        elif len(selection) == 1:
            
            if op.GetType() ==  5168:
                
                doc.StartUndo()
                distance = float(null02name[c4d.ID_BASEOBJECT_REL_POSITION,c4d.VECTOR_X])
                distanceinput = float(c4d.gui.InputDialog("Set Distance").replace(',','.'))

                #added by J Garcia
                distance = abs(distance)
                
                factor = distance/distanceinput
                gui.RenameDialog(factor)
                width = op[c4d.PRIM_PLANE_WIDTH]

                height = op[c4d.PRIM_PLANE_HEIGHT]
                newwidth = width/factor
                newheight = height/factor
                
                doc.AddUndo(c4d.UNDOTYPE_CHANGE,op)
                op[c4d.PRIM_PLANE_HEIGHT] = newheight
                op[c4d.PRIM_PLANE_WIDTH] = newwidth
                
                doc.AddUndo(c4d.UNDOTYPE_CHANGE,null01name)
                null01name.SetAbsPos(null01name.GetAbsPos()/factor)
                null01name[c4d.NULLOBJECT_RADIUS] = null01name[c4d.NULLOBJECT_RADIUS]/factor
                
                doc.AddUndo(c4d.UNDOTYPE_CHANGE,null02name)
                null02name[c4d.ID_BASEOBJECT_REL_POSITION,c4d.VECTOR_X] = distance/factor
                null02name[c4d.NULLOBJECT_RADIUS] = null02name[c4d.NULLOBJECT_RADIUS]/factor

                null01[c4d.ID_BASELIST_NAME] = "test"
                
                doc.EndUndo()

                
                
                
            else:
                gui.MessageDialog("Select the image plane.")
        else:
            gui.MessageDialog("Select the image plane.")

    
    c4d.EventAdd()
示例#4
0
                newTag[c4d.COMPOSITINGTAG_ENABLECHN7] = True
                newTag[c4d.COMPOSITINGTAG_IDCHN8] = int(userInputNumbers[8])
                newTag[c4d.COMPOSITINGTAG_ENABLECHN8] = True
                newTag[c4d.COMPOSITINGTAG_IDCHN9] = int(userInputNumbers[9])
                newTag[c4d.COMPOSITINGTAG_ENABLECHN9] = True
                newTag[c4d.COMPOSITINGTAG_IDCHN10] = int(userInputNumbers[10])
                newTag[c4d.COMPOSITINGTAG_ENABLECHN10] = True
                newTag[c4d.COMPOSITINGTAG_IDCHN11] = int(userInputNumbers[11])
                newTag[c4d.COMPOSITINGTAG_ENABLECHN11] = True
            except IndexError:
                pass

#remove double items from list (used to remove the doubles the user might enter)
def removeDoublesFromList(l):
    nl = []
    for i in l:
        if i not in nl:
            nl.append(i)
    return nl

userInput = gui.RenameDialog('type object buffer number')
if userInput != None:
    userInputNumbers = userInput.split(',')
    userInputNumbers = removeDoublesFromList(userInputNumbers)
    objs = doc.GetActiveObjects(1)
    addTag(objs)
    addObjectBuffer(userInputNumbers)

c4d.EventAdd()
doc.EndUndo()