- Ti è mai capitato di non riuscire a eseguire il comando Bake sulla geometria con attributi personalizzati?
- E per quanto riguarda i materiali di visualizzazione? Hai mai voluto usare i materiali nativi di Rhino nella pipeline di visualizzazione di Grasshopper?
- E per l’importazione dei file in Grasshopper? Ti sei mai scoraggiato quando hai provato a importare un file CAD e hai perso tutti i metadati di base inclusi nella geometria?
L’ultima versione di Rhino 8 include nuovi tipi di dati e componenti che ampliano il tuo modo di lavorare.
Grasshopper 1 ha sempre avuto tipi di dati comuni: alcuni sono usati frequentemente (points, curves, breps, booleans, numbers e text, ecc.), mentre altri sono usati più sporadicamente (date/time, matrices, cultural specifiers, ecc.).
Tuttavia, in Rhino sono disponibili molti tipi di dati che in precedenza non erano accessibili in Grasshopper. Livelli di Rhino, tipi di linea, riempimenti, materiali, font e stili di annotazione, ecc. sono ora inclusi in Grasshopper 1 per Rhino 8 come tipi di dati nativi. E presto ne arriveranno altri!
Che cos’è un attributo?
Tutti questi nuovi componenti ti consentono di ottenere e/o impostare gli attributi di un determinato tipo di dati. Quindi, che cos’è esattamente un “attributo”? Un attributo è semplicemente una proprietà o un elemento che contribuisce a definire quel tipo o oggetto.
Vediamo ad esempio i livelli di Rhino. Un livello può essere definito dalle proprietà seguenti:
- Nome
- Attivo (Corrente)
- Visibile/Nascosto
- Bloccato/Sbloccato
- Colore di visualizzazione
- Materiale
- Tipo di linea
- Colore di stampa
- Larghezza di stampa
- Piano di ritaglio
- Stile di sezione
Possiamo visualizzare e/o modificare ciascuno di questi attributi nella finestra di dialogo Livelli di Rhino. Ora puoi fare lo stesso in Grasshopper 1!
Per iniziare
Grasshopper 1 in Rhino 8 ha una nuova barra degli strumenti denominata Rhino, suddivisa in diverse sottocategorie (Layers, Linetypes, Materials, ecc.). Ogni sottocategoria contiene generalmente due diversi tipi di componenti.
-
Query components - Consentono di interrogare il documento Rhino attivo per ottenere diversi tipi di dati. Questo componente specifico consente di importare tutti i livelli di Rhino nel documento Grasshopper, ma puoi anche interrogare un documento per ottenere tipi di linea, riempimenti, stili di annotazione, ecc. I Query components sono generalmente contrassegnati da una lente d’ingrandimento. -
Datatype components - Questi componenti consentono di costruire e/o scomporre un tipo di dati con i suoi diversi valori di attributo. Questo componente specifico consente di specificare gli attributi di un nuovo livello di Rhino (nome del livello, colore di visualizzazione, impostazioni di visibilità, ecc.) oppure di visualizzare questi valori di attributo su un livello già definito nel modello Rhino.
Componenti Constructor/Deconstructor e Pass-through
Grasshopper 1 dispone di molti tipi di dati (points, vectors, planes, ecc.) che usano un modello constructor/deconstructor. In altre parole, ogni tipo di dati ha due componenti diversi: uno che gestisce la creazione del tipo di dati (il constructor), ad esempio un punto che contiene tre parametri di input numerici, e un altro che restituisce i valori che compongono quel tipo di dati (il deconstructor).
Avevamo considerato l’uso di questo modello per i nuovi tipi di dati presenti nella barra degli strumenti Rhino, ma abbiamo optato invece per un modello che chiamiamo componenti “pass-through”. I componenti pass-through combinano entrambe le funzioni di costruzione e scomposizione degli attributi in un unico componente.
Vediamo come funziona. Nota che ora ci sono quattro input e output (invece di tre nel modello construct/deconstruct). Il tipo di dati principale (Point3d) è il primo parametro sia sul lato di input sia su quello di output.
Se vogliamo creare (construct) un nuovo punto usando un componente pass-through, passiamo semplicemente valori numerici nei tre input delle coordinate e verrà creato un nuovo Point, restituito dall’output Point. Analogamente, se vogliamo scomporre un Point esistente nei suoi valori costitutivi (le coordinate), passiamo semplicemente un Point nel primo parametro di input e i valori verranno restituiti nell’output corrispondente.
Questa è quindi 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 assegnargli alcuni attributi. Passiamo semplicemente alcuni valori nei parametri di input e l’output Layer (il datatype principale è sempre il primo parametro di input/output) restituisce il livello di Rhino con tutte le sue impostazioni.
Nota che sto usando il componente Query Linetypes per ottenere un riferimento a uno dei tipi di linea presenti nel modello Rhino. Se avessi lasciato vuoto il filtro (o usato il 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.
Analogamente, se volessimo importare un livello di Rhino esistente e controllarne gli attributi, potremmo usare lo stesso componente pass-through. Questa volta, tuttavia, vogliamo passare un livello di Rhino esistente nell’input Layer. Ricorda che il datatype principale è sempre il primo parametro su entrambi i lati del componente.
Qui usiamo il componente Query Layers per ottenere il livello esistente (ce n’è solo uno chiamato “Default”), che possiamo poi passare nell’input Layer. Gli attributi del livello vengono quindi trasferiti attraverso il parametro di output corrispondente.
Supponiamo ora di voler usare un livello esistente come modello, ma di volerne creare una copia e modificarne alcuni attributi. È qui che un componente pass-through diventa molto utile. Se avessimo usato il modello constructor/deconstructor, avremmo dovuto collegare manualmente ciascun output del componente constructor al parametro di input corrispondente del componente deconstructor.
Come puoi immaginare, questa procedura diventerebbe piuttosto laboriosa con datatype che hanno un numero maggiore di attributi. Per questa operazione possiamo invece usare un componente pass-through.
Come prima, possiamo passare un livello di Rhino esistente nell’input Layer e tutti i suoi attributi verranno trasferiti all’output corrispondente. Tuttavia, se un altro valore è collegato a uno degli altri input, questo valore sostituirà l’attributo proveniente dal livello di Rhino esistente.
Qui possiamo passare il testo “MyLayer” nell’input Full Path e questo sovrascriverà il nome del livello proveniente dal livello di Rhino esistente. Tutti gli altri valori rimarranno invariati.
Usando un solo componente pass-through, risparmiamo spazio sullo schermo nella definizione ed evitiamo di dover collegare tutti i parametri di output ai rispettivi input.
Costruzione degli attributi
Nell’esempio precedente abbiamo mostrato come costruire un livello di Rhino usando il componente pass-through Model Layer. Tuttavia, il livello creato non fa tecnicamente parte del documento Rhino finché non viene eseguito il comando Bake. Stiamo ancora lavorando a un componente Bake personalizzato, ma per ora puoi fare clic con il pulsante destro sul componente Model Layer e selezionare Bake. Fai clic su OK nella finestra popup e il livello verrà aggiunto al documento Rhino.
Supponiamo ora di voler aggiungere della geometria al documento Rhino, assicurandoci che venga assegnata al livello appena creato. Possiamo semplicemente usare un componente Model Object per assegnare diversi attributi agli oggetti geometrici.
Qui abbiamo creato una sfera e le abbiamo assegnato il nome “MySphere”. Abbiamo inoltre assegnato il livello appena creato agli attributi dell’oggetto. Ora, se facciamo clic con il pulsante destro sul componente Model Object e selezioniamo Bake, la sfera verrà aggiunta al documento Rhino con questi attributi.
Seleziona la sfera sottoposta a Bake nella scena e vai all’inspector Proprietà oggetto. Verifica che alla sfera siano assegnati il nome e il livello corretti.
Puoi assegnare a un oggetto geometrico tutti gli attributi che desideri. Questo è solo un esempio molto semplice, ma ti invitiamo a esaminare gli altri componenti per vedere quali impostazioni sono disponibili.
Scomposizione degli attributi
Come prevedibile, possiamo anche scomporre i tipi di dati nei loro attributi costitutivi. I Query components sono un buon punto di partenza, perché questi componenti importano nella definizione Grasshopper diversi tipi di dati Rhino (geometria, livelli, tipi di linea, ecc.). Tuttavia, ciascuno di questi è relativamente semplice.
Vorrei invece esaminare il nuovo componente Import Model, disponibile nel pannello Params e nella sottocategoria Input. Con questo nuovo componente possiamo importare qualsiasi modello 3D (non deve necessariamente essere un modello Rhino) e scomporne il contenuto nei vari attributi.
Una funzione utile di questo nuovo componente è che consente anche di trasformare in modo coerente il modello importato nelle unità del documento attivo. Vediamo un esempio per capire meglio come funziona.
Supponiamo di aver scaricato alcuni modelli CAD 3D di elementi di fissaggio da usare nel progetto. Uno dei file, il bullone esagonale flangiato, è salvato con le unità impostate su Inches. L’altro file, che include un dado ad alette e una rondella, ha le unità impostate su millimeters. A complicare ulteriormente la situazione, il documento attivo su cui stai lavorando è impostato su centimeters.
Se avessimo importato questo modello nel modo tradizionale, avremmo dovuto calcolare i nostri fattori di conversione per allineare correttamente i modelli. Tuttavia, usando uno degli attributi del modello importato, Transform, possiamo facilmente adattare la geometria importata alla scala del documento attivo.
Inoltre, possiamo esaminare altri attributi del modello importato. In questo caso, nel file erano salvati diversi materiali. Ora possiamo usare qualsiasi materiale Rhino nella visualizzazione Custom Preview di Grasshopper!
Ho messo questa frase in grassetto perché si tratta di un cambiamento importante. Non sei più vincolato alla grafica di visualizzazione semplificata su cui Grasshopper si è tradizionalmente basato. Ora puoi importare materiali nativi di Rhino (oppure usare il componente Query Materials) e applicarli alla geometria Grasshopper usando il componente standard Custom Preview.
Gli esempi seguenti sono semplicemente schermate di varie modalità di visualizzazione che usano materiali Rhino importati.
Altro in arrivo!
È importante notare che questa è solo la prima versione di questi nuovi strumenti. Il set di strumenti non è completo (neanche lontanamente) ed è possibile che tu trovi alcuni bug. Facci sapere se qualcosa non funziona correttamente o se hai domande. Siamo sempre qui per aiutarti.
Ci interessa anche il tuo feedback sui tipi di dati che dovremmo includere in futuro. Quali tipi sarebbero più utili per il tuo flusso di lavoro? Ti servono blocchi, luci, quote, piani di ritaglio o viste di tavole con nome? Abbiamo una lunga roadmap di componenti su cui lavoreremo nei prossimi mesi, ma ci affidiamo al feedback degli utenti per stabilire quali funzionalità debbano avere la priorità.
Prova!
Scarica e apri la definizione ConstructObjectAttributes.gh.
Ulteriori informazioni
Guarda il video Scopri i tipi di dati di Grasshopper oppure visita la pagina Novità di Rhino 8 per una panoramica di queste funzionalità.
Scopri come usare altri componenti Data Type nelle guide seguenti:
Raggruppamento e filtraggio dei dati
Scopri come usare questi componenti per raggruppare, selezionare e filtrare la geometria in base a dati specifici in modo più dettagliato.
Utilizzo di Script Component
Scopri come usare Script Component in Grasshopper. È progettato per funzionare con tutti i linguaggi supportati e riunisce il comportamento dei precedenti componenti GHPython e C#.


