Objektattribute in Grasshopper

  • Waren Sie schon einmal enttäuscht, weil Sie keine Geometrie mit benutzerdefinierten Attributen “backen” konnten?
  • Wie steht es um Anzeigematerialien? Wollten Sie je in der Lage sein, native Rhino-Materialien in der Grasshopper-Anzeigepipeline zu verwenden?
  • Wie sieht es mit dem Importieren von Dateien in Grasshopper aus? Fanden Sie es je entmutigend wenn Ihnen beim Versuch, eine CAD-Datei zu importieren, alle in der Geometrie mit eingeschlossenen grundlegenden Metadaten verlorengehen?

Die neueste Rhino 8 verfügt jetzt über neue Datentypen und Komponenten, die Ihnen ganz neue Vorgehensweisen eröffnen.

Grasshopper 1 verfügt seit jeher über allgemeine Datentypen - einige werden häufig verwendet (Punkte, Kurven, Breps, Boolesche Operationen, Zahlen und Text usw.) und andere eher sporadisch (Datum/Zeit, Matrizen, kulturelle Spezifikationssymbole usw.).

Allerdings sind in Rhino viele verschiedene Datentypen verfügbar, die zuvor nicht in Grasshopper zugänglich waren. Rhino-Ebenen, Linientypen, Schraffierungen, Materialien, Schriftarten und Beschriftungsstile usw. sind jetzt als native Datentypen in Grasshopper 1 für Rhino 8 enthalten. Und bald gibt es noch mehr!

GH1 Object Attributes Toolbar

Was ist ein Attribut?

Alle diese neuen Komponenten ermöglichen es Ihnen, einen bestimmten Datentyp zu erhalten bzw. zu definieren. Was genau ist also ein “Attribut”? Ein Attribut ist schlicht eine Eigenschaft oder ein Element, mit dessen Hilfe dieser Typ oder dieses Objekt gebildet wird.

Sehen wir uns beispielsweise die Ebenen in Rhino an. Eine Ebene kann durch die folgenden Eigenschaften definiert werden:

  • Name
  • Ist aktiv (aktuell)
  • Sichtbar / Ausgeblendet
  • Gesperrt / Entsperrt
  • Anzeigefarbe
  • Material
  • Linientyp
  • Druckfarbe
  • Druckbreite
  • Zuschneideebene
  • Schnittstil

Wir können jedes dieser Attribute im Rhino-Ebenendialog sehen und/oder bearbeiten. Das gleiche können Sie nun auch in Grasshopper 1 tun!

Layer Attributes

Erste Schritte

Grasshopper 1 in Rhino 8 hat eine neue, mit Rhino betitelte Werkzeugleiste, die in mehrere Unterkategorien (Ebenen, Linientypen, Materialien usw.) unterteilt ist. Jede Unterkategorie hat typischerweise zwei verschiedene Komponententypen.

  • Query Component Query components - Ermöglicht Ihnen das Durchsuchen des aktiven Rhino-Dokuments nach mehreren Datentypen. Mit dieser spezifischen Komponente können Sie alle Rhino-Ebenen in das Grasshopper-Dokument bringen, Sie können aber auch ein Dokument nach Linientypen, Schraffierungen, Beschriftungsstilen usw. durchsuchen. Query-Dokumente sind gewöhnlich durch ein Vergrößerungsglas gekennzeichnet.

  • Datatype Component Datatype components - Mit dieser Komponente können Sie einen Datentyp mit seinen verschiedenen Attributwerten konstruieren und/oder dekonstruieren. Mit dieser spezifischen Komponente können Sie die Attribute einer neuen Rhino-Ebene (Ebenenname, Anzeigefarbe, Sichtbarkeitseinstellungen usw.) festlegen, oder diese Attributwerte auf einer bereits definierten Ebene im Rhino-Modell sehen.

Constructor/Deconstructor versus Pass-Through-Komponenten

Grasshopper 1 verfügt über viele Datentypen (Punkte, Vektoren, Ebenen etc.) die ein Constructor/Deconstructor-Muster verwenden. Dies bedeutet, jeder Datentyp hat zwei verschiedene Komponenten - eine zum Erstellen des Datentyps (den Constructor), etwa einen Punkt der drei numerische Input-Parameter enthält, und eine weitere zur Ausgabe der Werte welche zum Bilden des Datentyps kombiniert werden (den Deconstructor).

Wir zogen in Betracht, dieses Muster für die neuen in der Rhino-Werkzeugleiste zu findenden Datentypen zu verwenden, entschieden uns stattdessen jedoch für ein Muster, das wir “Pass-Through”-Komponenten nennen. Pass-Through-Komponenten kombinieren beide Funktionen sowohl der Konstruktions wie auch Dekonstruktions-Attribute zu einer einzigen Komponente.

Point Passthrough

Werfen wir einen Blick darauf, wie das funktionieren würde. Beachten Sie den Umstand, dass jetzt vier Inputs und Outputs vorhanden sind (statt drei im Construct/Deconstruct-Muster). Der Hauptdatentyp (Point3d) ist der allererste Parameter sowohl an der Input als auch an der Output-Seite.

Point Passthrough

Wenn wir einen neuen Punkt unter Verwendung einer Pass-Through-Komponente erzeugen (konstruieren) wollen, leiten wir schlicht numerische Werte in die drei Koordinaten-Inputs und ein neuer Punkt wird erzeugt und vom Punkt-Output zurückgegeben. Ebenso leiten wir, wenn wir einen vorhandenen Punkt in seine Komponenten-Werte (seine Koordinaten) zerlegen wollen, einfach einen Punkt in den ersten Input-Parameter, und die Werte werden im entsprechenden Output zurückgegeben.

So sieht in ihren Grundzügen die Funktion einer Pass-Through-Komponente aus. Wenden wir uns nun einem kokreteren Beispiel zu. Sagen wir, wir möchten eine neue Rhino-Ebene erstellen und ihre einige Attribute zuweisen. Wir leiten einfach einige Werte in die Input-Parameter, und der Ebenen-Output (der primäre Datentyp ist immer der erste Input-/Output- Parameter) gibt die Rhino-Ebene samt ihrer Einstellungen zurück.

Beachten Sie, dass ich die Komponente Query Linetypes verwende, um eine Referenz zu einer der Linientypen zu erhalten, die in meinem Rhino-Modell vorhanden ist. Hätte ich den Filter leer gelassen (oder ein Ersatzzeichen “*” verwendet) hätte er alle erhältlichen Linientypen zurückgegeben. Da ich jedoch den Filter “Gestrichelt” verwende, gibt er nur den Linientyp zurück, der mit diesem Namen übereinstimmt.

Constructor

Falls wir eine vorhandene Rhino-Ebene bringen und ihre Attribute inspizieren möchten, könnten wir ebenso die gleiche Pass-Through-Komponente verwenden. Stattdessen wollen wir aber eine vorhandene Rhino-Ebene in den Ebenen-Input leiten. Vergessen Sie nicht, dass der Haupt-Datentyp immer der erste Parameter zu beiden Seiten der Komponente ist.

Hier verwenden wir die Komponente Query Layers zum Erhalt der vorhandenen Ebene (es gibt nur eine, mit der Bezeichnung “Standard”), die wir dann in den Ebenen-Input leiten können. Die Attribute der Ebene werden dann durch den entsprechenden Output-Parameter hinaus geleitet.

Deconstruct

Sagen wir jetzt, wir möchten eine vorhandene Ebene als Vorlage verwenden, erstellen aber eine Kopie und ändern einige ihrer Attribute. Hierfür erweist sich eine Pass-Through-Komponente durchaus als nützlich. Hätten wir das Constructor-/Deconstructor-Muster verwendet, hätten wir sämtliche Outputs aus der Constructor-Komponente manuell mit dem jeweiligen Input-Parameter der Deconstructor-Komponente verbinden müssen.

Copy / Modify

Wie Sie sich bestimmt vorstellen können, würde dies bei Datentypen mit einer größeren Anzahl von Attributen ziemlich mühsam werden. Stattdessen können wir für diese Operation eine Pass-Through-Komponente verwenden.

Wie schon zuvor können wir eine vorhandene Rhino-Ebene in den Ebenen-Input leiten, und alle seine Attribute werden zum entsprechenden Output durchgeleitet. Wenn jedoch ein anderer Wert mit einem der anderen Inputs verbunden ist, dann wird dieser Wert das von der vorhandenen Rhino-Ebene her kommende Attribut verdrängen.

Hier können wir den Text “MyLayer” in den Full-Path-Input leiten, womit er den von der vorhandenen Rhino-Ebene her kommenden Ebenennamen überschreiben wird. Alle sonstigen Werte werden jedoch unverändert bleiben.

Indem wir nur eine Pass-Through-Komponente verwenden, sparen wir Bildschirmraum in unserer Definition und vermeiden es, sämtliche Output-Parameter mit ihrem jeweiligen Input zu verbinden.

Copy / Modify

Attribute konstruieren

Im obigen Beispiel haben wir gezeigt, wie eine Rhino-Ebene unter Verwendung der Pass-Through-Komponente Model Layer konstruiert wird. Eigentlich ist die so erzeugte Ebene jedoch nicht Teil des Rhino-Dokuments, ehe Sie sie “backen”. Wir arbeiten noch immer an einer benutzerdefinierten Bake-Komponente, derzeit können Sie aber mit der rechten Maustaste auf die Modellebene-Komponente klicken und Bake wählen. Klicken Sie auf den Popup-Dialog, damit Ihre Ebene dem Rhino-Dokument hinzugefügt wird.

Construct Layer Panel

Sagen wir, wir wollen dem Rhino-Dokument jetzt einige Geometrie hinzufügen, dabei aber garantieren, dass sie der gerade erzeugten Ebene hinzugefügt wird. Wir können einfach eine Komponente Model Object verwenden, um geometrischen Objekten verschiedene Attribute zuzuweisen.

Construct Layer Panel 2

Construct Layer Panel 3

Hier haben wir eine Kugel erzeugt und ihr den Namen “MySphere” gegeben. Auch haben wir die gerade erzeugte Ebene den Objektattributen hinzugefügt. Wenn wir nun mit der rechten Maustaste auf die Modellobjekt-Komponente klicken und Bake wählen, wird die Kugel dem Rhino-Dokument mit diesen Attributen hinzugefügt.

Wählen Sie die Kugel aus, die in diese Szene “gebacken” wurde, und gehen Sie zum Objekteigenschaften-Inspektor. Überprüfen Sie, ob der Kugel der richtige Name und die richtige Ebene zugewiesen wurden.

Sie können einem geometrischen Objekt so viele Attribute zuweisen wie sie wollen. Dies ist lediglich ein sehr einfaches Beispiel, wir ermutigen Sie jedoch, die sonstigen Komponenten nach verfügbaren Einstellungen zu durchsuchen.

Attribute dekonstruieren

Wie Sie vielleicht schon erwarten, können wir Datentypen ebenso in ihre einzelnen Attribute zerlegen. Query-Komponenten bieten eine gute Startmöglichkeit, da diese Komponenten mehrere Rhino-Datentypen (Geometrie, Ebenen, Linientypen usw.) in Ihre Grasshopper-Definition einbringen. Sie sind jedoch alle ziemlich unkompliziert.

Stattdessen möchte ich lieber einen Blick auf die neue Komponente Import Model werfen, die unter dem Reiter Params, Unterkategorie Input zu finden ist. Mit dieser neuen Komponente können wir jegliches 3D-Modell (und nicht nur strikt die Rhino-Modelle) importieren und die Inhalte in seine unterschiedlichen Attribute zerlegen.

Eine nützliche Eigenschaft dieser neuen Komponente ist, dass sie auch die Möglichkeit bietet, das importierte Modell einheitlich in die aktiven Dokumenteinheiten zu transformieren Lassen Sie uns anhand eines Beispiels verdeutlichen, wie dies vor sich geht.

Sagen wir, Sie haben einige 3D-CAD-Modelle von Halterungen heruntergeladen, die Sie in Ihrem Projekt verwenden möchten. Eine der Dateien, die geflanschte Sechskantschraube, wird mit auf Zoll eingestellten Einheiten gespeichert. In der anderen Datei, die eine Flügelmutter und eine Unterlagscheibe enthält, sind die Einheiten auf Millimeter eingestellt. Und um es noch mehr zu komplizieren, ist das aktive Dokument, an dem Sie arbeiten, auf Zentimeter eingestellt.

Bolts & Nuts

Hätten wir dieses Modell auf traditionellere Weise importiert, hätten wir zur richtigen Ausrichtung der Modelle zuerst unsere eigenen Umwandlungsfaktoren herausfinden müssen. Unter Verwendung eines der Attribute des importierten Modells, nämlich Transform, können wir die importierte Geometrie leicht an die Skala des aktiven Dokuments anpassen.

Scaled Model

Transform Geometry

Zuzüglich können wir noch weitere Attribute aus dem importierten Modell untersuchen. In diesem Fall gab es einige Materialien, die in der Datei gespeichert wurden. Wir können jetzt sämtliche Rhino-Materialien in Grasshoppers benutzerdefinierter Vorschau verwenden!

Dieser Satz verdient es, fett gedruckt zu erscheinen, weil es sich um etwas wirklich außergewöhnliches handelt. Sie sind also nicht mehr auf die vereinfachten Anzeigegrafiken angewiesen, die in Grasshopper seit jeher Verwendung finden. Sie können jetzt importieren (oder die Komponente Query Materials verwenden) um native Rhino-Materialien einzubringen und sie mittels der Standard-Komponente Custom Preview auf Grasshopper-Geometrie anzuwenden.

Bei den untenstehenden Beispielen handelt es sich um einfache Screenshots verschiedener Anzeigemodi unter Verwendung importierter Rhino-Materialien.

Bolt-Nut Render

Material Display

Weitere Informationen werden nach und nach hinzugefügt!

Beachten Sie bitte, dass es sich hier lediglich um die erste Veröffentlichung dieser neuen Werkzeuge handelt. Das Toolset ist noch keineswegs vollständig, und hier und da können Sie durchaus auf Fehler stoßen. Falls Sie eine Fehlfunktion entdecken oder Fragen haben, kommen Sie bitte jederzeit auf uns zu. Wir sind hier, um Ihnen weiterzuhelfen.

Wir warten auch auf Ihr Feedback darüber, welche Datentypen wir als nächstes mit einschließen sollten. Welche Arten wären für Ihren Arbeitsablauf am nützlichsten? Brauchen Sie Blöcke, Lichter, Bemaßungen, Zuschneideebenen, benannte Planansichten? Wir verfügen über einen langen Aktionsplan hinsichtlich der Komponenten, an denen wir in den kommenden Monaten arbeiten werden, sind aber auf das Feedback der Anwender angewiesen, um bei den Funktionen Prioritäten zu setzen.

Probieren Sie es aus!

Laden Sie die ConstructObjectAttributes.gh-Definition herunter und öffnen Sie sie.