Umgang mit den Modulen/Methoden/Attributen der Py4D->C4D-API

Du merkst sicher,  es ist unabdingbar das Prinzip der „Objektorientierten Programmieren“ zu kennen und sich ausgiebig mit der Py4D-Doku zu beschäftigen um zu verstehen wie/welche Methoden und Attribute über die Überklassen an die Klassen und so an die Objekte übertragen werden.

c4d ist ein Modul welches in Python geladen wird und die Klassen der C4D-API zur Verfügung stellt.

module – c4d, module – c4d.gui, module – c4d. documents, module – c4d.threading, module – c4d.tools, module – c4d.plugins, module – c4d.gv, module – c4d.storage sind Submodule und stellen ebenfalls Klassen der C4D-API zur Verfügung.

Eine häufige Fehlerquelle ist die Groß/Kleinschreibung !

Als Anhaltspunkt gilt folgendes:

Modulnamen sind kleingeschrieben.

Klassen haben fast immer einen großgeschriebenen Anfangsbuchstaben und Methoden werde fast immer kleingeschrieben.  Besteht eine Methode aus mehreren Wörtern werden sie mit einem Unterstrich „_“ verbunden.

Wie schon beschrieben kommen wir an die Klassen über die Module ran.

Steckt eine Klasse in einem Submodul muss dieses mitangegeben werden.

modul.submodul.klasse

Wie in Deiner Python Dokumentation (Buch oder Netz) beschrieben, kann man sich durch from c4d import submodul die ständige Angabe von c4d. vor dem Submodul, deren Methoden, Attributen und Konstanten  sparen.

Das können wir uns ruhig für alle Submodule angewöhnen. Das spart Schreibarbeit.

Kommen wir zu den Klassen, Subklassen, Methoden und Attributen :

Ein Objekt der Klasse BaseObject erstellt man ja über

[py]import c4d
var = c4d.BaseObject(ObjectType)[/py]

In der Py4D-Doku findet man unter BaseObject die Beschreibung.
Nun gibt es aber auch Methoden und Attribute, die man über das Objekt der Klasse BaseObject aufrufen kann, die man nicht direkt in der Beschreibung der Klasse BaseObject findet.

import c4d
var = c4d.Vector(x,

Nehmen wir folgendes Beispiel:

[py]import c4d
op = doc.get_active_object()
if (op) :
op_type = op.get_type()
print op_type
else :
print"No Object Selected"[/py]

Der Code bestimmt den Objekttyp, des aktuell selektierten Objektes im aktuellen Dokument.

„op“ ist ein Objekt der Klasse BaseObjekt.

Schauen wir in die Py4D-Doku unter BaseObject (modul c4d->Klasse Atom->Klasse BaseList2D->Klasse BaseObject) nach der Methode „get_type()“ finden wir nichts.

Fündig werden wir jedoch in der Beschreibung der Klasse Atom (modul c4d->Klasse Atom).

Das liegt daran, daß Methoden und Attribute nach unten weitervererbt werden.
Schau Dir in der Py4D-Doku die Hierarchie dieser Klasse an: Link zur Doku

So beinhaltet ein Objekt der Klasse BaseObject auch die Methoden und Attribute der Klasse Atom und der Klasse BaseList2D.

So zum Beispiel die Methode:“get_next()“ der Klasse BaseList2D

[py]import c4d
op = doc.get_active_object()
if (op and op.get_next()) :
next_op = op.get_next()
doc.set_active_object(next_op)
c4d.event_add()
else :
print"No Object Selected Or Only One Object Exist"[/py]

Wenn man sich mit einer Klasse und seinen Möglichkeiten auseinadersetzt sieht man sich also am besten erst einmal an zu welchen Überklassen diese gehört um so alle Methoden und Attribute zu kennen die in dem Zusammenhang stehen.

<– Zurück zu Teil5 . . . . . . . . . . INDEX . . . . . . . . . . Weiter in Teil7 –>

One Response to “Umgang mit den Modulen/Methoden/Attributen der Py4D->C4D-API

  • import c4d
    #Gebe aktuelle Typnummer aus und schalte auf nächstes Objekt
    # bei 0 Bild beim Vorwärts abspielen

    def main():
    op = doc.GetActiveObject()
    if (op) :
    op_type = op.GetType()
    print op_type
    if op.GetNext() :
    nextop = op.GetNext()
    doc.SetActiveObject(nextop)
    c4d.EventAdd()
    else :
    print „Es gibt kein nächstes Objekt“
    else :
    print „Kein Objekt ausgewählt!“

Schreib einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.