This shows you the differences between two versions of the page.
de:rhino:basicmacros [2015/09/14] |
de:rhino:basicmacros [2020/08/14] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Ein Anfänger-Tutorial zur Erzeugung von Makros (Scripting von Rhino-Befehlen) ====== | ||
+ | =====Einführung===== | ||
+ | |||
+ | Die Erstellung von Makros in Rhino ist eine gute Möglichkeit, | ||
+ | |||
+ | Die Verwendung des Begriffs Scripting mag hier eventuell einige Verwirrung stiften. | ||
+ | |||
+ | Dabei handelt es sich jedoch um zwei verschiedene Dinge. Funktionen in Rhinoscript und anderen Programmiersprachen sind weitaus komplexer als Makros und erfordern echte Programmierkenntnisse. | ||
+ | |||
+ | Mit dem Begriff " | ||
+ | |||
+ | |||
+ | =====Verwendete Tools:===== | ||
+ | |||
+ | |||
+ | Die Rhino-Hilfedatei - darin sind alle Rhino-Befehle samt Unterbefehlen aufgeführt, | ||
+ | |||
+ | Der Rhino-**MacroEditor**, | ||
+ | |||
+ | =====Sie haben bereits ein wenig Erfahrung mit Makros ...===== | ||
+ | Als Rhino-Anwender nutzen Sie bereits Makros, selbst wenn Ihnen dies nicht bewusst ist. Viele der Befehle in Rhino sind als Makros verpackt. Wenn Sie eine Schaltfläche der Werkzeugleiste klicken oder einen Befehl aus dem Menü ausführen, handelt es sich oft um ein voreingestelltes Makro. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Dies ist ein Beispiel des einfachsten Typs von Makro, bei dem lediglich eine Reihe Optionen in einen einzigen Befehl gesteckt werden, sodass Sie nicht jeden einzelnen jedes Mal spezifizieren müssen, wenn Sie ihn verwenden. | ||
+ | |||
+ | In gewisser Weise funktionieren diese, als würden Sie die einzelnen Optionen nacheinander anklicken oder in der Eingabeaufforderung eingeben. | ||
+ | |||
+ | Das Scripting mit Optionen eines einzelnen Befehls kann außerdem mit der Eingabe von Daten (z.B. Koordinaten oder andere numerische Daten) kombiniert werden. Es können außerdem mehrere Befehle in einer Reihe zusammengeschrieben werden, wodurch eine automatische Sequenz zur Bearbeitung oder Erstellung von Objekten erzeugt wird. | ||
+ | |||
+ | > **Anmerkung: | ||
+ | |||
+ | ======Erste Schritte====== | ||
+ | |||
+ | Wenn Sie beispielsweise mehrere Würfel mit 10 cm Kantenlänge mit dem Zentrum der Unterseite auf einen gewünschten Punkt platzieren möchten, muss der entsprechende Punkt entweder durch einen Mausklick oder durch Eingabe der Koordinaten bestimmt werden. | ||
+ | |||
+ | Sie könnten dafür den Standardbefehl " | ||
+ | |||
+ | Öffnen Sie den **MakroEditor** und geben Sie ein: | ||
+ | |||
+ | ! _Box _Center | ||
+ | //(dies ist zugleich das der Schaltfläche " | ||
+ | Alle Einträge (Befehle und numerische Eingaben) müssen durch ein einfaches Leerzeichen getrennt sein. | ||
+ | |||
+ | Nun muss der zentrale Punkt bestimmt werden. | ||
+ | |||
+ | ! _Box _Center _Pause | ||
+ | Wenn die Daten eingegeben sind, kann die Größe des Quaders direkt als Befehl eingegeben werden. | ||
+ | |||
+ | ! _Box _Center _Pause r5,5 | ||
+ | (Wozu das " | ||
+ | |||
+ | Nun können wir die Höhe eingeben, die in diesem Fall relativ zum ursprünglichen Startpunkt ist. | ||
+ | |||
+ | ! _Box _Center _Pause r5,5 10 | ||
+ | Da es nun keiner weiteren Eingabe bedarf und keine weiteren Möglichkeiten zur Verfügung stehen, ist das Makro und auch unser Quader fertig. | ||
+ | |||
+ | ! _Box _Center _Pause r5,5 _Enter | ||
+ | Wenn Ihr Makro nun korrekt funktioniert, | ||
+ | |||
+ | ======Ein etwas komplizierteres Beispiel====== | ||
+ | |||
+ | Manche Befehle rufen Dialogfenster mit zahlreichen Optionen auf. Dies würde normalerweise die Ausführung Ihres Makros so lange stoppen, bis Sie eine der gewählten Optionen gewählt haben. | ||
+ | |||
+ | =====Loft zweier offener Kurven===== | ||
+ | Wenn Sie beispielsweise wiederholt zwei //offene// Kurven **loften** möchten, damit diese zusammen eine Oberfläche bilden, müssten Sie mit dem Standardbefehl **Loft** immer wieder durch denselben Dialog gehen. | ||
+ | |||
+ | < | ||
+ | _-Loft | ||
+ | _Pause | ||
+ | _Type=_Normal | ||
+ | _Simplify=_None | ||
+ | _Closed=_No | ||
+ | _Enter | ||
+ | </ | ||
+ | |||
+ | Zuerst wird der Befehl und anschließend die Pause aufgerufen, sodass Sie Ihre Kurven wählen können. Wenn die Pause entfernt wird, funktioniert das Makro nicht, wenn Sie vor dem Aufruf desselben die Kurven nicht ausgewählt haben. | ||
+ | |||
+ | =====Verändern zum Gebrauch mit geschlossenen Kurven===== | ||
+ | Versuchen Sie es jetzt einmal mit zwei geschlossenen Kurven. | ||
+ | |||
+ | Durch Hinzufügen einer Pause an der richtigen Stelle können Sie die Naht durch Benutzereingaben überprüfen und einstellen: | ||
+ | |||
+ | < | ||
+ | _-Loft | ||
+ | _Pause | ||
+ | _Pause | ||
+ | _Type=_Normal | ||
+ | _Simplify=_None | ||
+ | _Closed=_No | ||
+ | _Enter | ||
+ | </ | ||
+ | |||
+ | Wenn Sie statt der Pause " | ||
+ | |||
+ | < | ||
+ | _-Loft | ||
+ | _Pause | ||
+ | _Enter | ||
+ | _Type=_Normal | ||
+ | _Simplify=_None | ||
+ | _Closed=_No | ||
+ | _Enter | ||
+ | </ | ||
+ | |||
+ | Sie können außerdem in den Unteroptionen der Naht eine andere Loft-Nahtoption wählen. | ||
+ | |||
+ | < | ||
+ | _-Loft | ||
+ | _Pause | ||
+ | _Natural | ||
+ | _Enter | ||
+ | _Type=_Normal | ||
+ | _Simplify=_None | ||
+ | _Closed=_No | ||
+ | _Enter | ||
+ | </ | ||
+ | |||
+ | (Die Eingabe von " | ||
+ | |||
+ | //Leider funktioniert dasselbe Makro aufgrund der zusätzlich notwendigen Nahtoption nicht korrekt sowohl für offene als auch geschlossene Kurven. | ||
+ | |||
+ | |||
+ | ======Verwendung von Makros zur schnellen Einstellung Ihrer Interface-Optionen====== | ||
+ | |||
+ | Makros können außerdem dazu verwendet werden, verschiedene GUI- und Dokumenteigenschaften automatisch einzustellen, | ||
+ | |||
+ | < | ||
+ | -_DocumentProperties | ||
+ | _Mesh _Custom | ||
+ | _MaxAngle=0 _AspectRatio=0 | ||
+ | _MinEdgeLength=0 _MaxEdgeLength=0 | ||
+ | _MaxEdgeSrf=0.01 _GridQuads=16 | ||
+ | _Refine=Yes _JaggedSeams=No | ||
+ | _SimplePlanes=No | ||
+ | _Enter | ||
+ | _Enter | ||
+ | </ | ||
+ | |||
+ | Wozu die zwei " | ||
+ | |||
+ | Das Makro bewegt sich in -_DocumentProperties zwei Ebenen nach unten - zuerst auf die Polygonnetzebene und anschließend auf die benutzerdefinierte Unterebene im Polygonnetz. | ||
+ | |||
+ | Um Fadenkreuze mithilfe eines Skripts ein- und auszuschalten, | ||
+ | |||
+ | < | ||
+ | -_Options _Appearance _Visibility | ||
+ | _Crosshairs _Enter _Enter _Enter | ||
+ | </ | ||
+ | |||
+ | Beachten Sie die Referenz zu jeder einzelnen Befehlsoption. | ||
+ | |||
+ | ODER Sie verwenden am Ende ein Ausrufezeichen (" | ||
+ | |||
+ | Das oben beschriebene Skript schaltet das Fadenkreuz einfach ein und aus. Wenn Sie allerdings ein Skript möchten, das es immer einschaltet und ein anderes, das es immer ausschaltet, | ||
+ | |||
+ | Immer eingeschaltet: | ||
+ | |||
+ | < | ||
+ | -_Options _Appearance _Visibility | ||
+ | _Crosshairs=_Show ! | ||
+ | </ | ||
+ | |||
+ | Immer ausgeschaltet: | ||
+ | |||
+ | < | ||
+ | -_Options _Appearance _Visibility | ||
+ | _Crosshairs_=Hide ! | ||
+ | </ | ||
+ | |||
+ | Hier wird das Ausrufezeichen verwendet ... Durch Verwenden des Gleichheitszeichens (" | ||
+ | |||
+ | (Danke, Jeff) | ||
+ | |||
+ | ======Weitere nützliche Tools und Befehle für Makros====== | ||
+ | |||
+ | Es gibt einige geschickte Tricks für komplexere Makros. | ||
+ | |||
+ | < | ||
+ | Select | ||
+ | SelLast | ||
+ | SelPrev | ||
+ | SelNone | ||
+ | SetObjectName | ||
+ | SetGroupName | ||
+ | SelGroup | ||
+ | SelName | ||
+ | Group | ||
+ | Ungroup | ||
+ | </ | ||
+ | |||
+ | Setzung eines einzelnen Objektnamens (dies ist ein Makro für sich!): | ||
+ | |||
+ | < | ||
+ | _Properties _Pause _Object _Name | ||
+ | [hier Name eingeben] _Enter _Enter | ||
+ | </ | ||
+ | |||
+ | Entfernen eines einzelnen Objektnamens (ohne dabei das Objekt zu löschen) | ||
+ | |||
+ | < | ||
+ | _Properties _Pause _Object _Name | ||
+ | [Name] _Enter _Enter | ||
+ | </ | ||
+ | |||
+ | =====Beispiele zur Verwendung der obigen Tools===== | ||
+ | |||
+ | Sehen Sie sich folgendes Makro an: | ||
+ | |||
+ | < | ||
+ | _Select _Pause _Setredrawoff | ||
+ | _BoundingBox _World _Enter | ||
+ | _Selnone _Sellast | ||
+ | _OffsetSrf _Solid _Pause | ||
+ | _Delete _Sellast | ||
+ | _BoundingBox _World _Enter | ||
+ | _Delete _Setredrawon | ||
+ | </ | ||
+ | |||
+ | Es erzeugt ein Begrenzungsrechteck mit einem Versatz rund um das Objekt, wobei der Versatz vom Benutzer einzugeben ist. Versuchen Sie, der logischen Sequenz zu folgen. | ||
+ | |||
+ | **//Als ein letztes Beispiel// | ||
+ | |||
+ | Beachten Sie dabei die Verwendung von benannten Gruppen und verschiedenen Auswahlbefehlen. | ||
+ | |||
+ | < | ||
+ | _Select _Pause _Noecho _Setredrawoff | ||
+ | _Group _Enter _SetGroupName TexTemp | ||
+ | _BoundingBox _CPlane _Enter | ||
+ | _SelNone _SelLast _PlanarSrf | ||
+ | _SelPrev _Delete _SelLast | ||
+ | _AreaCentroid _Delete | ||
+ | _Sellast _SelGroup TexTemp | ||
+ | _Ungroup _Group _Setredrawon | ||
+ | </ |