PSD-Tutorials.de
Forum für Design, Fotografie & Bildbearbeitung
Tutkit
Agentur
Hilfe
Kontakt
Start
Forum
Aktuelles
Besonderer Inhalt
Foren durchsuchen
Tutorials
News
Anmelden
Kostenlos registrieren
Aktuelles
Suche
Suche
Nur Titel durchsuchen
Von:
Menü
Anmelden
Kostenlos registrieren
App installieren
Installieren
JavaScript ist deaktiviert. Für eine bessere Darstellung aktiviere bitte JavaScript in deinem Browser, bevor du fortfährst.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen
alternativen Browser
verwenden.
Antworten auf deine Fragen:
Neues Thema erstellen
Start
Forum
3D: Modeling, Texturen, Licht, Animation, Rendern
Cinema 4D
C4D - Animation, MoGraph, PC, Dynamics und Hair
letzter Skriptingversuch (Py4d)
Beitrag
<blockquote data-quote="nux95" data-source="post: 1934177" data-attributes="member: 334830"><p><strong>AW: letzter Skriptingversuch (Py4d)</strong></p><p></p><p>Hallo Kornyclown,</p><p></p><p>Ich habe vor ca. 2 Jahren das Skripten mit COFFEE angefangen und programmiere nun seit ca. 1 1/2 Jahren mit Python und seit geraumer Zeit in Java, C und C++. Mittlerweile gebe ich auch Privatunterricht für Python und die Py4D SDK. Für's Programmieren ist man nicht zu blöd, selbst ich konnte mir vor 3 Jahren nicht vorstellen wie überhaupt Programme geschrieben werden, und mittlerweile habe ich davon einen recht guten Einblick/Durchblick. Wenn du jetzt sagst "Oh nein, 3 Jahre?", dann lass dir sagen, dass ich bereits nach ein paar Monaten meine ersten Plugins in COFFEE erstellt habe (An dieser Stelle Danke an mp5gosu der mit damals geholfen hat mit Dialogen klar zukommen).</p><p></p><p>Als ich anfing mit Python anzufangen, hatte ich auch ersteinmal keinen Plan von der Sprache (wie du ja in dem von dir genannten Thread sehen kannst <img src="/styles/default/xenforo/smilies/tongue.gif" class="smilie" loading="lazy" alt=":P" title="Stick Out Tongue :P" data-shortname=":P" />). Ich kann mich noch genau erinnern wie unverständlich die Py4D SDK für mich war, und dieses ganze doppel-Unterstrich Zeug hat mich ebenfalls vollkommen verwirrt. Auch bei meinem aktuellen Schüler hatte ich einige Zeit aufbringen müssen um es ihm zu erklären.</p><p>Nachdem ich den "Py4D - Anfängerfragen klären" Thread gestartet hatte und dieser zum erliegen gekommen ist, habe ich es auch ganz fix wieder aufgegeben mich mit Python zu beschäftigen. Nachdem mir aber aufgefallen ist, das Python eine stand-alone Programmier-/Skriptsprache ist (wie auch immer man es bezeichnen mag) wurde mein Interesse wieder geweckt. Ich habe ganze Nächte damit verbracht mir Python anzulernen, und dazu kann ich dir nur das <a href="http://docs.python.org/tutorial/index.html" target="_blank">offizielle Python Tutorial</a> empfehlen, dass ich damals bis Chapter 9 durchgearbeitet hatte.</p><p>Ich gebe zu, es ist eine recht dicke Lektüre, doch wenn dir Programmieren Spaß macht, wird es dir nicht langweilig werden weil du mit dem Python Interpreter whärend dem lesen die Beispiele direkt ausprobieren kannst!</p><p></p><p><strong>Back 2 Topic</strong>: Ich werde vorerst auf deine Punkte aus dem ersten Post auffassen und dann den bisherigen Verlauf des Threads kommentieren.</p><p><span style="font-family: 'Courier New'"></span></p><p><span style="font-family: 'Courier New'"><span style="font-size: 15px"><strong>1.</strong></span></span></p><p><span style="font-family: 'Courier New'">__init__</span> ist eine von Python's <em>special methods</em> die beim erstellen eines Objekts aufgerufen wird. Es ist equivalent zum Konstruktor in C++/Java was du ja vielleicht kennst. Eine weitere Spezial-method ist zum Beispiel <span style="font-family: 'Courier New'">__del__</span>, welche aufgerufen wird wenn alle Referenzen zu dem Objekt verloren gegangen sind und es aus dem Speicher gelöscht wird. Weitere Informationen gibt es zum Beispiel <a href="http://docs.python.org/reference/datamodel.html#special-method-names" target="_blank">hier</a>.<span style="font-family: 'Courier New'"></span></p><p><span style="font-family: 'Courier New'"></span></p><p><span style="font-family: 'Courier New'"><span style="font-size: 15px"><strong>2.</strong></span></span></p><p><span style="font-family: 'Courier New'">self </span>ist equivalent zu <span style="font-family: 'Courier New'">this </span>in C++/Java. Es repräsentiert die Instanz einer Klasse innerhalb von Methoden dieser Klasse. Whärend <span style="font-family: 'Courier New'">this </span>in C++ und Java ein fest vorgegebener Name in der Scope der Methode ist, ist die Namensgebung <span style="font-family: 'Courier New'">self </span>in Python nur eine Konvention. Du kannst sie nennen wie du willst, ist aber schlechter Programmierstil. <img src="/styles/default/xenforo/smilies/zwinker.gif" class="smilie" loading="lazy" alt=";)" title="Wink ;)" data-shortname=";)" /></p><p></p><p><span style="font-family: 'Courier New'"><span style="font-size: 15px"><strong>3.</strong></span></span></p><p>Mit <span style="font-family: 'Courier New'">SetPoint </span>liegst du schon garnicht so falsch! Die <span style="font-family: 'Courier New'">c4d.PointObject </span>Klasse implementiert die Methoden <span style="font-family: 'Courier New'">GetPoint</span> und <span style="font-family: 'Courier New'">SetPoint</span>. Die Punkte werden nur als Vektoren dargestellt und haben keine Klasse für sich.</p><p>Ein Beispiel für den Skript Manager (vergiss nicht ein Polygon Objekt zu selektieren)</p><p><span style="font-family: 'Courier New'"></span></p><p><span style="font-family: 'Courier New'">import c4d</span></p><p><span style="font-family: 'Courier New'">point = op.GetPoint(0)</span></p><p><span style="font-family: 'Courier New'">point = point + c4d.Vector(100, 100, -100)</span></p><p><span style="font-family: 'Courier New'">op.SetPoint(0, point)</span></p><p><span style="font-family: 'Courier New'">op.Message(c4d.MSG_UPDATE)</span></p><p><span style="font-family: 'Courier New'">c4d.EventAdd()</span></p><p></p><p>@mp5gosu: Nicht in jeder Programmiersprache bezieht sich self auf die Instanz einer Klasse im jeweiligen Kontext, das ist eher Python spezifisch. <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" class="smilie smilie--sprite smilie--sprite1" alt=":)" title="Smile :)" loading="lazy" data-shortname=":)" /></p><p>// Sehe gerade das hast du ja in deinem zweiten Posting erwähnt. </p><p></p><p> Verstehe nicht ganz was <span style="font-family: 'Courier New'">self </span>mit rekursion zu tun hat. <img src="/styles/default/xenforo/smilies/biggrin.gif" class="smilie" loading="lazy" alt=":D" title="Big Grin :D" data-shortname=":D" /> Aber damit haste recht, das sind fortgeschrittene Programmiertechnicken!</p><p></p><p> So? Nun, ich kenne das Buch nicht, allerdings werden solche Sachen meistens nur erwähnt und sollten vom Lernenden so hingenommen werden, aber zumindest erklärt das <span style="font-family: 'Courier New'">self </span>sich auf die Instanz einer Klasse bezieht wäre schon zu erwarten (natürlich Vorrausgesetzt in dem Buch sind Klassen bereits angesprochen worden).</p><p>Um zu Erklären warum Python den <span style="font-family: 'Courier New'">self </span>parameter bei Methoden einer Klasse (und nicht wie Java und C++ das automatisch verfügbare <span style="font-family: 'Courier New'">this</span> verwendet) erwartet müsste man um einiges tiefer in Python und ihre Semantiken eintauchen, aber das würde hier und wahrscheinlich in deinem Buch ersteinmal zu weit führen. <img src="/styles/default/xenforo/smilies/zwinker.gif" class="smilie" loading="lazy" alt=";)" title="Wink ;)" data-shortname=";)" /></p><p></p><p> Ich verstehe leider nicht ganz was du meinst. Die Position eines Vektors (mathemathisch nicht ganz richtig, aber egal <img src="/styles/default/xenforo/smilies/tongue.gif" class="smilie" loading="lazy" alt=":P" title="Stick Out Tongue :P" data-shortname=":P" />), wird durch den Vektor selbst bestimmt. Ob relative oder absolut hängt immer vom Zusammenhang ab. Wenn du den <span style="font-family: 'Courier New'">y</span>-Wert eines Vektors erhalten willst, dann knöpfst du dir einfach das Attribut mit dem Name <span style="font-family: 'Courier New'">y</span> vor. </p><p></p><p><span style="font-family: 'Courier New'">import c4d</span></p><p><span style="font-family: 'Courier New'">vector = c4d.Vector(100, 50, -40)</span></p><p><span style="font-family: 'Courier New'">print vector.y</span></p><p><span style="font-family: 'Courier New'">vector.y = 999</span></p><p><span style="font-family: 'Courier New'">print vector.y</span></p><p></p><p> Das würde ich nicht sagen. Python ist eine gute Programmiersprache für den Einstieg <strong>und </strong>auch im effektiven Development gefragt. C++ würde da erstmal verwirren. </p><p></p><p> Nein. Die Dokumentation besagt eindeutig dass <span style="font-family: 'Courier New'">~.GetPointS()</span> die selektierten Punkte zurückgibt. Damit ist aber keine Ansammlung von Vektoren gemeint. Der Rückgabewert ist eine <span style="font-family: 'Courier New'">c4d.BaseSelect</span> instanz welche zum Auslesen der selektierten Punkte dient.</p><p></p><p>Btw, hast du dir die Python SDK schon vom plugincafe gedownloadet? Diese Py4D Documentation (von mp5gosu's link) ist veraltet aber leider immernoch auffindbar. Da sollte mal die neue hochgeladen werden! <img src="/styles/default/xenforo/smilies/rolleyes.gif" class="smilie" loading="lazy" alt=":rolleyes:" title="Roll Eyes :rolleyes:" data-shortname=":rolleyes:" /></p><p></p><p>Ich hoffe das hat einige deiner Fragen beantwortet, und hoffentlich auch neue Fragen aufgeworfen (im positiven Sinne, versteht sich)! Viel Spaß noch beim lernen! Bei Fragen die direkt die Py4D SDK etwas angehen kannst du auch das besuchen!</p><p></p><p>Grüße,</p><p>Niklas</p><p></p><p>PS: Rechtschreibfehler lassen Grüßen!</p></blockquote><p></p>
[QUOTE="nux95, post: 1934177, member: 334830"] [b]AW: letzter Skriptingversuch (Py4d)[/b] Hallo Kornyclown, Ich habe vor ca. 2 Jahren das Skripten mit COFFEE angefangen und programmiere nun seit ca. 1 1/2 Jahren mit Python und seit geraumer Zeit in Java, C und C++. Mittlerweile gebe ich auch Privatunterricht für Python und die Py4D SDK. Für's Programmieren ist man nicht zu blöd, selbst ich konnte mir vor 3 Jahren nicht vorstellen wie überhaupt Programme geschrieben werden, und mittlerweile habe ich davon einen recht guten Einblick/Durchblick. Wenn du jetzt sagst "Oh nein, 3 Jahre?", dann lass dir sagen, dass ich bereits nach ein paar Monaten meine ersten Plugins in COFFEE erstellt habe (An dieser Stelle Danke an mp5gosu der mit damals geholfen hat mit Dialogen klar zukommen). Als ich anfing mit Python anzufangen, hatte ich auch ersteinmal keinen Plan von der Sprache (wie du ja in dem von dir genannten Thread sehen kannst :P). Ich kann mich noch genau erinnern wie unverständlich die Py4D SDK für mich war, und dieses ganze doppel-Unterstrich Zeug hat mich ebenfalls vollkommen verwirrt. Auch bei meinem aktuellen Schüler hatte ich einige Zeit aufbringen müssen um es ihm zu erklären. Nachdem ich den "Py4D - Anfängerfragen klären" Thread gestartet hatte und dieser zum erliegen gekommen ist, habe ich es auch ganz fix wieder aufgegeben mich mit Python zu beschäftigen. Nachdem mir aber aufgefallen ist, das Python eine stand-alone Programmier-/Skriptsprache ist (wie auch immer man es bezeichnen mag) wurde mein Interesse wieder geweckt. Ich habe ganze Nächte damit verbracht mir Python anzulernen, und dazu kann ich dir nur das [URL="http://docs.python.org/tutorial/index.html"]offizielle Python Tutorial[/URL] empfehlen, dass ich damals bis Chapter 9 durchgearbeitet hatte. Ich gebe zu, es ist eine recht dicke Lektüre, doch wenn dir Programmieren Spaß macht, wird es dir nicht langweilig werden weil du mit dem Python Interpreter whärend dem lesen die Beispiele direkt ausprobieren kannst! [B]Back 2 Topic[/B]: Ich werde vorerst auf deine Punkte aus dem ersten Post auffassen und dann den bisherigen Verlauf des Threads kommentieren. [FONT=Courier New] [SIZE=4][B]1.[/B][/SIZE] __init__[/FONT] ist eine von Python's [I]special methods[/I] die beim erstellen eines Objekts aufgerufen wird. Es ist equivalent zum Konstruktor in C++/Java was du ja vielleicht kennst. Eine weitere Spezial-method ist zum Beispiel [FONT=Courier New]__del__[/FONT], welche aufgerufen wird wenn alle Referenzen zu dem Objekt verloren gegangen sind und es aus dem Speicher gelöscht wird. Weitere Informationen gibt es zum Beispiel [URL="http://docs.python.org/reference/datamodel.html#special-method-names"]hier[/URL].[FONT=Courier New] [SIZE=4][B]2.[/B][/SIZE] self [/FONT]ist equivalent zu [FONT=Courier New]this [/FONT]in C++/Java. Es repräsentiert die Instanz einer Klasse innerhalb von Methoden dieser Klasse. Whärend [FONT=Courier New]this [/FONT]in C++ und Java ein fest vorgegebener Name in der Scope der Methode ist, ist die Namensgebung [FONT=Courier New]self [/FONT]in Python nur eine Konvention. Du kannst sie nennen wie du willst, ist aber schlechter Programmierstil. ;) [FONT=Courier New][SIZE=4][B]3.[/B][/SIZE][/FONT] Mit [FONT=Courier New]SetPoint [/FONT]liegst du schon garnicht so falsch! Die [FONT=Courier New]c4d.PointObject [/FONT]Klasse implementiert die Methoden [FONT=Courier New]GetPoint[/FONT] und [FONT=Courier New]SetPoint[/FONT]. Die Punkte werden nur als Vektoren dargestellt und haben keine Klasse für sich. Ein Beispiel für den Skript Manager (vergiss nicht ein Polygon Objekt zu selektieren) [FONT=Courier New] import c4d point = op.GetPoint(0) point = point + c4d.Vector(100, 100, -100) op.SetPoint(0, point) op.Message(c4d.MSG_UPDATE) c4d.EventAdd()[/FONT] @mp5gosu: Nicht in jeder Programmiersprache bezieht sich self auf die Instanz einer Klasse im jeweiligen Kontext, das ist eher Python spezifisch. :) // Sehe gerade das hast du ja in deinem zweiten Posting erwähnt. Verstehe nicht ganz was [FONT=Courier New]self [/FONT]mit rekursion zu tun hat. :D Aber damit haste recht, das sind fortgeschrittene Programmiertechnicken! So? Nun, ich kenne das Buch nicht, allerdings werden solche Sachen meistens nur erwähnt und sollten vom Lernenden so hingenommen werden, aber zumindest erklärt das [FONT=Courier New]self [/FONT]sich auf die Instanz einer Klasse bezieht wäre schon zu erwarten (natürlich Vorrausgesetzt in dem Buch sind Klassen bereits angesprochen worden). Um zu Erklären warum Python den [FONT=Courier New]self [/FONT]parameter bei Methoden einer Klasse (und nicht wie Java und C++ das automatisch verfügbare [FONT=Courier New]this[/FONT] verwendet) erwartet müsste man um einiges tiefer in Python und ihre Semantiken eintauchen, aber das würde hier und wahrscheinlich in deinem Buch ersteinmal zu weit führen. ;) Ich verstehe leider nicht ganz was du meinst. Die Position eines Vektors (mathemathisch nicht ganz richtig, aber egal :P), wird durch den Vektor selbst bestimmt. Ob relative oder absolut hängt immer vom Zusammenhang ab. Wenn du den [FONT=Courier New]y[/FONT]-Wert eines Vektors erhalten willst, dann knöpfst du dir einfach das Attribut mit dem Name [FONT=Courier New]y[/FONT] vor. [FONT=Courier New]import c4d vector = c4d.Vector(100, 50, -40) print vector.y[/FONT] [FONT=Courier New]vector.y = 999 print vector.y[/FONT] Das würde ich nicht sagen. Python ist eine gute Programmiersprache für den Einstieg [B]und [/B]auch im effektiven Development gefragt. C++ würde da erstmal verwirren. Nein. Die Dokumentation besagt eindeutig dass [FONT=Courier New]~.GetPointS()[/FONT] die selektierten Punkte zurückgibt. Damit ist aber keine Ansammlung von Vektoren gemeint. Der Rückgabewert ist eine [FONT=Courier New]c4d.BaseSelect[/FONT] instanz welche zum Auslesen der selektierten Punkte dient. Btw, hast du dir die Python SDK schon vom plugincafe gedownloadet? Diese Py4D Documentation (von mp5gosu's link) ist veraltet aber leider immernoch auffindbar. Da sollte mal die neue hochgeladen werden! :rolleyes: Ich hoffe das hat einige deiner Fragen beantwortet, und hoffentlich auch neue Fragen aufgeworfen (im positiven Sinne, versteht sich)! Viel Spaß noch beim lernen! Bei Fragen die direkt die Py4D SDK etwas angehen kannst du auch das besuchen! Grüße, Niklas PS: Rechtschreibfehler lassen Grüßen! [/QUOTE]
Bilder bitte
hier hochladen
und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Zitate einfügen…
Authentifizierung
Wenn ★ = 12, ◇ = 4 und die Hälfte von ★ zu ◇ addiert wird, was ist das Ergebnis?
Antworten
Start
Forum
3D: Modeling, Texturen, Licht, Animation, Rendern
Cinema 4D
C4D - Animation, MoGraph, PC, Dynamics und Hair
letzter Skriptingversuch (Py4d)
Oben