def convert_to_spheres(): objs = op.GetChildren() for obj in objs: name = obj.GetName() newObj = c4d.BaseObject(c4d.Osphere) newObj.SetName(name) newObj.SetMg(obj.GetMg()) newObj[c4d.PRIM_SPHERE_RAD] = .3 doc.InsertObject(newObj, op)
def add_divider(name, color): #layers ops root = doc.GetLayerObjectRoot() LayersList = root.GetChildren() names = [] layers = [] #start undo action doc.StartUndo() for l in LayersList: n = l.GetName() names.append(n) layers.append((n, l)) if not name in names: layer = c4d.documents.LayerObject() #new Layer layer.SetName(name) layer[c4d.ID_LAYER_COLOR] = color layer_settings = { 'solo': False, 'view': False, 'render': True, 'manager': True, 'locked': False, 'generators': False, 'deformers': False, 'expressions': False, 'animation': False } layer.SetLayerData(doc, layer_settings) layer.InsertUnder(root) else: for n, l in layers: if n == name: layer = l break #divider ops null = c4d.BaseObject(c4d.Onull) null[c4d.ID_BASELIST_NAME] = name_null null[c4d.ID_LAYER_LINK] = layer null[c4d.NULLOBJECT_DISPLAY] = 14 doc.InsertObject(null) doc.AddUndo(c4d.UNDOTYPE_NEW, null) #end undo action doc.EndUndo() #update scene c4d.EventAdd()
def tracerFromSelection(selection): doc = c4d.documents.GetActiveDocument() # Get active Cinema 4D document tracer = c4d.BaseObject(1018655) # Initialize tracer object tracerList = c4d.InExcludeData() # Initialize in-exclude data list for s in selection: # Loop through selection tracerList.InsertObject(s, 1) # Add object to list tracer[c4d. MGTRACEROBJECT_OBJECTLIST] = tracerList # Update tracer object list tracer[c4d.MGTRACEROBJECT_MODE] = 1 # 'Connect All Objects' tracer[c4d.MGTRACEROBJECT_USEPOINTS] = False # Disable 'Trace Vertices' doc.InsertObject(tracer) # Insert tracer object to document doc.AddUndo(c4d.UNDOTYPE_NEW, tracer) # Add undo command for inserting new object
def addDriver(driver_name, driver_type): driver = doc.SearchObject(driver_name) if driver is None: driver = c4d.BaseObject(ARNOLD_DRIVER) driver.SetName(driver_name) driver[c4d.C4DAI_DRIVER_TYPE] = driver_type driver[c4d.C4DAI_DRIVER_MERGE_AOVS] = True doc.InsertObject(driver) # delete the BEauty AOV if not driver_name == "<display driver>" and "Crypto": beauty_aov = driver.GetDown() beauty_aov.Remove() return driver
def main(): doc = c4d.documents.GetActiveDocument() selo = doc.GetActiveObjects(0) if len(selo) > 0: for o in selo: select_points = o.GetPointS() pc = len(o.GetAllPoints()) select_points.DeselectAll() select_points.Select(0) name = o.GetName() nulla = c4d.BaseObject(c4d.Onull) if nulla is None: return nulla[c4d.NULLOBJECT_DISPLAY] = 2 nulla.SetAbsPos(c4d.Vector(o.GetPoint(0)[0],o.GetPoint(0)[1],o.GetPoint(0)[2])) nulla.SetName(name+" A") doc.InsertObject(nulla) aTag = o.MakeTag(1018074) aTag[c4d.HAIR_CONSTRAINTS_TAG_ANCHOR_LINK] = nulla doc.ExecutePasses(None, 0, 1, 1, 0) c4d.CallButton(aTag, c4d.HAIR_CONSTRAINTS_TAG_SET_ANCHOR) c4d.EventAdd() select_points.DeselectAll() select_points.Select(pc-1) nullb = c4d.BaseObject(c4d.Onull) if nullb is None: return nullb[c4d.NULLOBJECT_DISPLAY] = 2 nullb.SetAbsPos(c4d.Vector(o.GetPoint(pc-1)[0],o.GetPoint(pc-1)[1],o.GetPoint(pc-1)[2])) nullb.SetName(name+" B") doc.InsertObject(nullb) bTag = o.MakeTag(1018074) bTag[c4d.HAIR_CONSTRAINTS_TAG_ANCHOR_LINK] = nullb doc.ExecutePasses(None, 0, 1, 1, 0) c4d.CallButton(bTag, c4d.HAIR_CONSTRAINTS_TAG_SET_ANCHOR) c4d.EventAdd() o.InsertTag(c4d.BaseTag(1018068)) c4d.EventAdd()