collection d'extraits de python avec cinema4d

C'est juste un mémo, mais c'est une collection d'extraits de code lors de l'écriture de python avec c4d.

Obtenez l'objet lui-même avec la balise python

python


op.GetObject()
#op indique la balise elle-même

Obtenir l'image actuelle

python


frame=doc.GetTime().GetFrame(doc.GetFps())

Obtenez un objet avec n'importe quel nom

python


#Correspondance parfaite
obj = doc.SearchObject("OBJNAME")
#Match partiel
obj = doc.SearchObjectInc("OBJNAME")

Obtenez des coordonnées globales

python


obj = doc.SearchObject("OBJNAME")
#coordonnées globales=Produit de globalMatrix et coordonnées locales
pos = obj.GetMg() * c4d.Vector(0,0,0)

http://www.c4dcafe.com/ipb/forums/topic/78408-get-points-global-position/

Obtenir le sommet

python


import c4d
obj = op.GetObject()
v = obj.GetPoint(0)#Obtenez le 0e sommet

#Ami
#obj.GetAllPoints()
#obj.SetAllPoints()

Obtenir le chemin du répertoire de travail

projDir


import c4d
import os
projDir = os.path.normpath(doc.GetDocumentPath())

Mettre à jour le système d'invite

Il se peut que quelque chose ne soit pas mis à jour dans cinema4d, alors prenez des mesures contre cela. Je ne suis pas sûr. Il semble y avoir d'autres façons de le faire

python


obj = op.GetObject()
obj.Message(c4d.MSG_UPDATE)
c4d.EventAdd()

Ajout / suppression dynamique d'objets

Utilisez doc.InsertObject. Le cube est ajouté à des positions aléatoires à chaque image. Un exemple pour supprimer un cube avec 0 frame.

python



import c4d
import random

def main():
    obj = op.GetObject()
    cube = c4d.BaseObject(c4d.Ocube)
    
    #set random position
    cube[c4d.ID_BASEOBJECT_REL_POSITION,c4d.VECTOR_X] = 1000 * (random.random()-0.5)
    cube[c4d.ID_BASEOBJECT_REL_POSITION,c4d.VECTOR_Y] = 1000 * (random.random()-0.5)
    cube[c4d.ID_BASEOBJECT_REL_POSITION,c4d.VECTOR_Z] = 1000 * (random.random()-0.5)
    
    doc.InsertObject(cube,op.GetObject(),None,True)
    
    frame = doc.GetTime().GetFrame(doc.GetFps())

    # if time is 0, delete all chiled objcts
    if frame==0:    
        while not obj.GetDown() is None:            
            tgt = obj.GetDown() # get obj's child
            print tgt 
            tgt.Remove()

json charger et enregistrer

python


	import json
	
	#Charge
    with open("hoge.json', 'r') as f:
        dic = json.load(f)

	#Aller au dic
 
 	#enregistrer
    with open("hoge.json', 'w') as f:
        json.dump(dic, f, sort_keys=True, indent=4)

Obtenez des enfants

python


children = op.GetObject().GetChildren();
print len(children);
print children;
    

Obtenez des enfants d'objets actifs

Essayez de sortir le nom

python


#Vous pouvez tout obtenir en procédant comme suit avec tous les enfants sélectionnés
objs = doc.GetActiveObjects(c4d.GETACTIVEOBJECTFLAGS_CHILDREN)
    
for obj in objs:
	print obj.GetName()

GetActiveObjects https://developers.maxon.net/docs/Cinema4DPythonSDK/html/modules/c4d.documents/BaseDocument/index.html?highlight=getactiveobject#BaseDocument.GetActiveObjects

Afficher l'index du polygone sélectionné

python


import c4d

def PrintPolygon(obj):
    if not isinstance(obj, c4d.PolygonObject):
        return
    ply = obj.GetAllPolygons()
    hoge = obj.GetPolygonS();
    
    for c in xrange(obj.GetPolygonCount()):
        if hoge.IsSelected(c):
            print ply[c].c,",",ply[c].b,",",ply[c].a,","

def main():
    PrintPolygon(op.GetObject())

Apportez les sommets sélectionnés à la console

python


import c4d

def SelectPoints(obj):
    if not isinstance(obj, c4d.PointObject):
        return None
    sel_pts = obj.GetPointS()
    res_pts = []
    for c1 in xrange(obj.GetPointCount()):
        if sel_pts.IsSelected(c1):
            res_pts.append([c1, obj.GetPoint(c1)])
    return res_pts

def main():
    objs = op.GetObject()
    res = SelectPoints(objs)
    if not res:
        return

    print objs.GetName()

    for c in xrange(len(res)):
        print res[c][0], res[c][1]

http://villager-and-c4d.cocolog-nifty.com/blog/2011/02/c4d-python-3ec7.html

Utiliser des variables globales

python


import c4d

hoge=0

def main():
    global hoge
    hoge = hoge + 1
    print hoge

Comment écrire python avec c4d

http://qiita.com/_nabe/items/9c1ff9ad47be7476571f

Recommended Posts

collection d'extraits de python avec cinema4d
Écrivons python avec cinema4d.
extrait de code python
Charger fbx depuis python avec cinema4d
FizzBuzz en Python3
Grattage avec Python
Extrait de code pour une recherche de bits complète avec python
Statistiques avec python
Grattage avec Python
Twilio avec Python
Intégrer avec Python
Jouez avec 2016-Python
AES256 avec python
python commence par ()
avec syntaxe (Python)
Bingo avec python
Zundokokiyoshi avec python
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
Communication série avec Python
Django 1.11 a démarré avec Python3.6
Jugement des nombres premiers avec Python
Python avec eclipse + PyDev.
Communication de socket avec Python
Analyse de données avec python 2
Grattage en Python (préparation)
python (3) Collection Dominer ORM
Essayez de gratter avec Python.
Apprendre Python avec ChemTHEATER 03
"Orienté objet" appris avec python
Exécutez Python avec VBA
Manipuler yaml avec python
Résolvez AtCoder 167 avec python
Communication série avec python
[Python] Utiliser JSON avec Python
Apprendre Python avec ChemTHEATER 05-1
Apprenez Python avec ChemTHEATER
Exécutez prepDE.py avec python3
1.1 Premiers pas avec Python
Collecter des tweets avec Python
Binarisation avec OpenCV / Python
3. 3. Programmation IA avec Python
Méthode Kernel avec Python
Non bloquant avec Python + uWSGI
Grattage avec Python + PhantomJS
Publier des tweets avec python
Conduisez WebDriver avec python
Utiliser mecab avec Python 3
[Python] Redirection avec CGIHTTPServer
Analyse vocale par python
Pensez à yaml avec python
Premiers pas avec Python
Utiliser DynamoDB avec Python
Getter Zundko avec python
Gérez Excel avec python
Loi d'Ohm avec Python
Jugement des nombres premiers avec python
Résoudre des maths avec Python
Python à partir de Windows 7
Carte thermique par Python + matplotlib