Attributi oggetto in Grasshopper

  • Ti sei mai sentito frustrati dall’impossibilità di creare geometrie con attributi personalizzati?
  • E i materiali da esposizione? Hai mai desiderato di poter utilizzare i materiali nativi di Rhino nella pipeline di visualizzazione di Grasshopper?
  • Cosa ne dici di importare i file in Grasshopper? Ti sei mai scoraggiato tentando di importare un file CAD e hai mai perso tutti i metadati di base inclusi nella geometria?

L’ultimo Rhino 8 presenta ora nuovi tipi di dati e componenti che ampliano il modo di lavorare.

Grasshopper 1 ha sempre avuto tipi di dati comuni, alcuni dei quali sono usati di frequente (punti, curve, breps, booleani, numeri, testo ecc.) mentre altri sono usati più sporadicamente (data/ora, matrici, specificatori culturali, ecc.).

Tuttavia, in Rhino sono disponibili molti tipi di dati che in precedenza non erano accessibili in Grasshopper. Livelli di Rhino, tipi di linee, tratteggi, materiali, caratteri e stili di annotazione, ecc. sono ora inclusi in Grasshopper 1 per Rhino 8 come tipi di dati nativi. E presto ne arriveranno altri!

GH1 Object Attributes Toolbar

Che cos’è un attributo?

Tutti questi nuovi componenti consentono di ottenere e/o impostare gli attributi di un determinato tipo di dati. Che cos’è esattamente un “attributo”? Un attributo è semplicemente una proprietà o un elemento che contribuisce a costituire quel tipo o quell’oggetto.

Consideriamo ad esempio i livelli di Rhino. Un livello può essere definito dalle seguenti proprietà:

  • Nome.
  • È attivo (corrente).
  • Visibile/nascosto.
  • Bloccato/Sbloccato.
  • Colore di visualizzazione.
  • Materiale.
  • Tipo di linea.
  • Colore di stampa.
  • Larghezza di stampa.
  • Piani di ritaglio.
  • Stile di sezione.

È possibile vedere e/o modificare ciascuno di questi attributi nella finestra di dialogo dei livelli di Rhino. Ora è possibile fare lo stesso in Grasshopper 1!

Layer Attributes

Per iniziare

Grasshopper 1 in Rhino 8 dispone di una nuova barra degli strumenti denominata Rhino, suddivisa in diverse sottocategorie (Livelli, Tipi di linea, Materiali, ecc.). Ogni sottocategoria ha in genere due diversi tipi di componenti.

  • Query Component Query components - Consentono di interrogare il documento Rhino attivo per vari tipi di dati. Questo componente in particolare consente di portare tutti i layer di Rhino nel documento di Grasshopper, ma è anche possibile interrogare un documento per ottenere tipi di linee, tratteggi, stili di annotazione, ecc. I componenti query sono solitamente indicati con una lente di ingrandimento.

  • Datatype Component Datatype components - Questi componenti consentono di costruire e/o decostruire un tipo di dati con i suoi vari valori di attributo. Questo particolare componente consente di specificare gli attributi di un nuovo livello di Rhino (nome del livello, colore di visualizzazione, impostazioni di visibilità e così via) o di visualizzare i valori di questi attributi su un livello già definito nel modello di Rhino.

Costruttore/Decostruttore vs. componenti Pass-through

Grasshopper 1 ha molti tipi di dati (punti, vettori, piani, ecc.) che utilizzano uno schema costruttore/decostruttore. In altre parole, ogni tipo di dati ha due componenti diversi: uno che si occupa di creare il tipo di dati (il costruttore), come ad esempio un punto che contiene tre parametri numerici in ingresso, e un altro che restituisce i valori che si combinano per comporre quel tipo di dati (il decostruttore).

Abbiamo pensato di utilizzare questo modello per i nuovi tipi di dati presenti nella barra degli strumenti di Rhino, ma abbiamo optato per un modello che chiamiamo “componenti passanti. I componenti passanti, invece, combinano entrambe le funzioni di costruzione e decostruzione degli attributi in un unico componente “pass-through”.

Point Passthrough

Vediamo come funzionerebbe. Notate che ora ci sono quattro ingressi e uscite (invece dei tre dello schema construct/deconstruct). Il tipo di dati principale (Point3d) è il primo parametro sia in ingresso che in uscita.

Point Passthrough

Se si desidera creare (costruire) un nuovo punto utilizzando un componente passante, è sufficiente passare dei valori numerici nei tre ingressi delle coordinate e un nuovo punto verrà creato e restituito dall’uscita Point. Allo stesso modo, se si vuole scomporre un punto esistente nei suoi valori componenti (le sue coordinate), è sufficiente passare un punto nel primo parametro di input e i valori saranno restituiti nell’output corrispondente.

Questa è la configurazione di base del funzionamento di un componente pass-through. Vediamo ora un esempio più concreto. Supponiamo di voler creare un nuovo livello di Rhino e di assegnargli alcuni attributi. Basta passare alcuni valori nei parametri di input e l’output Layer (il tipo di dato primario è sempre il primo parametro di input/output) restituisce il layer di Rhino con tutte le sue impostazioni.

Notate che sto usando il componente Query Linetypes per ottenere un riferimento a uno dei tipi di linea esistenti nel mio modello di Rhino. Se avessi lasciato il filtro vuoto (o avessi usato un carattere jolly “*”) avrebbe restituito tutti i tipi di linea disponibili. Tuttavia, poiché sto usando il filtro “Dashed”, restituisce solo il tipo di linea che corrisponde a questo nome.

Constructor

Allo stesso modo, se volessimo portare un livello di Rhino esistente e ispezionarne gli attributi, potremmo usare lo stesso componente pass-through. Questa volta, però, vogliamo passare un livello di Rhino esistente nell’input Layer. Ricordare che il tipo di dato principale è sempre il primo parametro su entrambi i lati del componente.

Qui si usa il componente Query Layers per ottenere il livello esistente (ce n’è solo uno chiamato “Default”) che può essere passato nell’input Layer. Gli attributi del livello vengono quindi trasmessi attraverso il parametro di uscita corrispondente.

Deconstruct

Supponiamo ora di voler usare un Layer esistente come modello, ma di farne una copia e di modificarne alcuni attributi. È qui che una componente pass-through diventa molto utile. Se avessimo usato lo schema costruttore/decostruttore, avremmo dovuto collegare manualmente ogni uscita del componente costruttore al corrispondente parametro di ingresso del componente decostruttore.

Copy / Modify

Come si può immaginare, questa operazione diventerebbe piuttosto macchinosa per i tipi di dati con un numero elevato di attributi. Per questa operazione si può invece utilizzare un componente pass-through.

Come in precedenza, possiamo passare un livello di Rhino esistente nell’input Layer e tutti i suoi attributi verranno passati all’output corrispondente. Tuttavia, se un altro valore è collegato a uno degli altri ingressi, questo valore sostituirà l’attributo proveniente dal livello Rhino esistente.

Qui possiamo passare il testo “MyLayer” nell’input Full Path e questo sovrascriverà il nome del layer proveniente dal layer esistente di Rhino. Tuttavia, tutti gli altri valori rimarranno invariati.

Utilizzando un solo componente pass-through, si risparmia spazio sullo schermo nella definizione e si evita di collegare tutti i parametri di uscita ai rispettivi ingressi.

Copy / Modify

Costruzione degli attributi

Nell’esempio precedente, abbiamo mostrato come costruire un layer di Rhino usando il componente pass-throughModel Layer. Tuttavia, il livello creato non fa tecnicamente parte del documento di Rhino fino a quando non lo si crea. Stiamo ancora lavorando a un componente di cottura personalizzato, ma per ora è possibile fare clic con il pulsante destro del mouse sul componente Model Layer e selezionare Bake. Cliccando su Ok nella finestra di dialogo a comparsa, il livello verrà aggiunto al documento di Rhino.

Construct Layer Panel

Ora, supponiamo di voler aggiungere una geometria al documento di Rhino, ma assicuriamoci che sia assegnata al livello appena creato. Possiamo semplicemente usare un componente Model Object per assegnare vari attributi agli oggetti geometrici.

Construct Layer Panel 2

Construct Layer Panel 3

Qui abbiamo creato una sfera e le abbiamo dato il nome “MySphere”. Abbiamo anche assegnato il livello appena creato agli attributi dell’oggetto. Ora, se facciamo clic con il pulsante destro del mouse sul componente Oggetto modello e selezioniamoBake, la sfera verrà aggiunta al documento Rhino con quegli attributi.

Selezionare la sfera che è stata inserita nella scena e accedere all’ispettore Proprietà oggetto. Verificare che alla sfera siano assegnati il nome e il layer corretti.

È possibile assegnare tutti gli attributi desiderati a un oggetto geometrico. Questo è solo un esempio molto semplice, ma Ti invitiamo a dare un’occhiata agli altri componenti per vedere quali impostazioni sono disponibili.

Decostruzione degli attributi

Come ci si potrebbe aspettare, possiamo decostruire i tipi di dati nei loro attributi costitutivi. I componenti query sono un buon punto di partenza, in quanto questi componenti portano vari tipi di dati di Rhino (geometria, layer, tipi di linee, ecc.) nella definizione di Grasshopper. Ma ognuna di queste è relativamente semplice.

Vorrei invece dare un’occhiata al nuovo componente Import Model che si trova nella scheda Params e nella sottocategoria Input. Con questo nuovo componente, possiamo importare qualsiasi modello 3D (non devono essere solo modelli Rhino) e suddividere il contenuto nei suoi vari attributi.

Una caratteristica utile di questo nuovo componente è che fornisce anche un modo per trasformare il modello importato nelle unità documentali attive in modo coerente. Vediamo un esempio per spiegare come funziona.

Supponiamo che abbiate scaricato alcuni modelli CAD 3D di alcuni elementi di fissaggio che volete utilizzare nel vostro progetto. Uno dei file, il bullone esagonale flangiato, viene salvato con le unità di misura impostate su pollici. L’altro file, che comprende un dado ad alette e una rondella, ha le unità di misura impostate su millimetri. E per aggravare la situazione, il documento attivo su cui si sta lavorando è impostato su centimetri.

Bolts & Nuts

Se avessimo importato questo modello in modo tradizionale, avremmo dovuto trovare i nostri fattori di conversione per allineare correttamente i modelli. Tuttavia, utilizzando uno degli attributi del modello importato, la trasformazione, possiamo facilmente adattare la geometria importata alla scala del documento attivo.

Scaled Model

Transform Geometry

Inoltre, possiamo ispezionare altri attributi del modello importato. In questo caso, nel file sono stati salvati diversi materiali. Ora possiamo usare qualsiasi materiale di Rhino nella visualizzazione dell’anteprima personalizzata di Grasshopper!

Ho messo questa frase in grassetto perché si tratta di una questione piuttosto importante. Non si è più vincolati alla grafica di visualizzazione semplificata su cui Grasshopper si è tradizionalmente basato. È ora possibile importare (o usare il componente Query Materials) per portare materiali nativi di Rhino e usarli sulla geometria di Grasshopper usando il componente standard Custom Preview.

Gli esempi che seguono sono semplici schermate di varie modalità di visualizzazione con materiali importati da Rhino.

Bolt-Nut Render

Material Display

Ulteriori informazioni prossimamente!

È importante notare che questa è solo la prima versione di questi nuovi strumenti. Il set di strumenti non è completo (neanche lontanamente) ed è possibile che si trovino bug qua e là. Fateci sapere se trovate qualcosa che non funziona bene o se avete domande. Siamo sempre qui per aiutarvi.

Stiamo anche cercando il vostro feedback su quali tipi di dati dovremmo includere successivamente. Quali sono i tipi più utili per il vostro flusso di lavoro? Sono necessari blocchi, luci, quote, piani di ritaglio, viste con nome del foglio? Abbiamo una lunga roadmap di componenti su cui lavoreremo nei prossimi mesi, ma ci basiamo sul feedback degli utenti per stabilire quali funzioni debbano avere la priorità.

Provalo!

Scarica e apri la definizione ConstructObjectAttributes.gh.

Ulteriori informazioni

Guarda il nostro video Discover Grasshopper Data Types o visita la pagina Novità New in Rhino 8 per una panoramica di queste funzioni.

Per sapere come utilizzare gli altri componenti dei tipi di dati, consulta le guide seguenti: