Revit: Catalogo Visivo Materiali

Pubblico questo workflow su richiesta dei ragazzi del Masterkeen 7, cui appartiene la prima parte dello script. 1. Premessa Siamo in un ambito di applicazione abbastanza tradizionale di Dynamo, ovvero il suo utilizzo per la creazione di un file catalogo come quelli in figura.   La richiesta è sorta, nello specifico, da parte del team […]

Pubblico questo workflow su richiesta dei ragazzi del Masterkeen 7, cui appartiene la prima parte dello script.

1. Premessa

Siamo in un ambito di applicazione abbastanza tradizionale di Dynamo, ovvero il suo utilizzo per la creazione di un file catalogo come quelli in figura.

Task1_Creazione del contenitore_RVT
Catalogo vegetazione, per la gioia del paesaggista.
1.2
Catalogo pilastri, per la gioia dello strutturista.

 

Schermata 2019-06-12 alle 17.25.16
Catalogo materiali, per la gioia di tutti.

La richiesta è sorta, nello specifico, da parte del team che si occupava di creare un catalogo materiali e che, come in figura, ha pensato di farlo creando una sequenza di famiglie schematiche cui associa i materiali presenti nel progetto.

04_Dynamo_script
Questo lo script del gruppo: se vorranno condividervi il file originale lo faranno loro.

Il gruppo poi bloccava una vista tridimensionale e associava dei tag al parametro condiviso del materiale.

Ma posso associare un Model Text?

Sì e no. Esiste un nodo che crea un Model Text, ovvero quello in figura, ma funziona solo nell’ambiente delle famiglie. Come mi comporto, quindi? Una cosa per volta.

ModelText
Ecco il nodo, ma non funziona in ambiente di progetto il maledetto).

2. Gestione materiali

Per far funzionare il nodo è quindi necessario passare tutti i materiali nell’ambiente di una famiglia e la cosa è fattibile in due modi:

Copyright(c) 2015, Konrad K Sobon @arch_laboratory, http://archi-lab.net
Copyright(c) 2015, Konrad K Sobon
@arch_laboratory, http://archi-lab.net

3. Creazione elementi e associazione Model Text

Il resto è semplice. Potete utilizzare nella famiglia lo stesso script che posizionava i cubi e associava i materiali all’interno del progetto: il funzionamento sarà identico. Nota: i nodi Material.All e Material.Class nello script dei Masterkeener usano il package Clockwork. La cosa si può anche risolvere senza, pescando i materiali come categoria e semplicemente usando “All elements of Category”, dato che i materiali vengono letti da Dynamo a livello delle istanze (qui la mia variante dello script).

Una volta posizionati i cubi nella famiglia, potreste riscontrare due necessità:

  • posizionare dei Model Text sulla superficie dei cubi, compilandoli con un valore corrispondente al nome del materiale associato al cubo stesso;
  • posizionare dei Model Text in testa alle file, compilandole con un valore corrispondente alla classe (dato che è il criterio secondo il quale sono stati compilati i materiali).

Le due necessità si assolvono in modo analogo: è solo questione di pescare il parametro giusto e posizionare il testo nel punto desiderato.

  1. Selezionare per categoria gli elementi “host” cui sono applicati i materiali per visualizzazione: nel mio caso, gli elementi sono dei Casework e ne ho bisogno sia dal punto di vista delle istanze (All Elements of Category) che dal punto di vista dei tipi (Element.ElementType);
  2. Estrarre il materiale associato ai cubi e, in particolare, il parametro “Name”: è quello con cui dovremo compilare il Model Text che si posizionerà sulla faccia dei cubi stessi;
  3. Dato che voglio posizionare il Model Text sulla superficie superiore del cubo, un modo di farlo è estrarne il parametro altezza e utilizzarlo per traslare a quell’altezza il piano orizzontale su cui voglio posizionare i testi;
  4. Il nodo ModelText.ByTextSketchPlaneAndPosition ha bisogno di sapere:
    – text: il contenuto del testo (e lo compiliamo estraendo il parametro “Name” dal materiale associato);
    – sketchPlane: il piano di lavoro su cui volete adagiare il vostro testo (attenzione: se avete un normale piano di lavoro avete un Plane e dovete trasformarlo in uno sketchPlane con il nodo SketchPlane.ByPlane);
    xCoordinateInPlaneyCoordinateInPlane è la posizione dell’origine del testo (spigolo in basso a sinistra, salvo alfabeti buffi);
    textDepth è lo spessore del testo (che in Revit è parametro di istanza);
    – modelTextType è il tipo di Model Text (che io ho associato con un semplice ModelTextType.ByName e una string, ma si può fare in modo più raffinato).

Attenzione perché per filtrare le classi ho utilizzato il nodo List.UniqueItems, che spero sia chiaro.

ModelText_001
Lo script ultimato: si può ancora ripulire, ma tutto sommato funziona.

Lo script originale è scaricabile qui.

11 Comments

      1. Ciao Fabio, grazie dei commenti.
        So che le API non lo consentono e anch’io non uso mai il Model Text, ma in questo caso siamo nell’ambito della documentazione visiva, quindi ho pensato che potessimo anche concedercelo. Lo script al momento crea un catalogo in ambiente di famiglia, che poi si può posizionare in ambiente di progetto. Dato che tanto sono elementi “finti”, che servono solo per visionare i materiali, penso che ci si possa anche concedere questa licenza poetica.

  1. Buongiorno Chiara,
    penso che in questo caso possa essere anche essere utile il package di ian.keough “Dynamo Text”, funziona in ambiente di progetto e converte una stringa in una serie chiusa di linee che possono essere convertite in linee di modello (e nel qual caso sceglierei come host una delle facce dei cubi) oppure estruse in geometria 3D (anche se poi si dovrebbe utilizzare il nodo di Springs che converte delle geometrie in istanze di famiglia, con tutti i pro e i contro).
    Tu cosa ne pensi?
    Ciao, Paolo :-)

    1. Buongiorno Paolo, come stai?
      Il package di Ian è straordinario (ovviamente) però non mi piace quello che fa nel modello. Mi piace ancora meno dell’idea di fare una FAMIGLIONA (il maiuscolo era d’obbligo) in cui inserire il catalogo materiali con model text. La verità è che non c’è un workflow ottimale ma, se ci pensi, non è ottimale nemmeno il dover fare un file catalogo perché l’esplorazione all’interno del browser di Revit è poco amichevole ai non tecnici. Si fa quel che si può.

      1. Buongiorno a te Chiara,
        a me procede tutto molto bene e spero che anche per te sia così.
        Ti ringrazio per il tuo prezioso feedback, mi trovi d’accordo con te sia sulla straordinarietà del package di Ian che su quanto espresso a seguire.
        Valentina sabato mi ha portato i tuoi saluti, li condivido e contraccambio :-)
        Buon pomeriggio e buon lavoro,
        Paolo.

  2. Salve, io avrei la necessità di creare un catalogo di oggetti con materiali e codici, ho provato a ricostruire la sequenza di nodi, ma non trovo Material All, se foste così gentili da darmi delle idee, ve ne sarei eternamente grato

    1. Buongiorno Armando, forse non ho capito la domanda: nel paragrafo 3 dell’articolo dovrebbero esserci le informazioni che cerca, ovvero:
      “Nota: i nodi Material.All e Material.Class nello script dei Masterkeener usano il package Clockwork. La cosa si può anche risolvere senza, pescando i materiali come categoria e semplicemente usando “All elements of Category”, dato che i materiali vengono letti da Dynamo a livello delle istanze (qui la mia variante dello script).”

      Non so se sia cambiato il package Clockwork, ma “All elements of Category” è nel pacchetto base di nodi.

      1. Salve, grazie per la risposta, volevo chiedere se c’è la possibilità di avere uno script già pronto e scaricabile, tipo quello dei cubi con i codici, ho cercato in rete ma non trovo tutorial adatti.

        1. Come scrivevo nell’articolo, proprio nella didascalia dello screenshot, lo script originale è stato sviluppato da alcuni studenti, non è mio, e per questo non è condiviso. Credo però che dallo screenshot e dalle indicazioni ulteriori non sia difficile ricostruirlo.

Leave a Reply to armando Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.