Importare file *.sat in Revit 2019
Lo so, lo so, state aspettando che io continui la mia serie sulla ISO 19650, ma devo concedermi un post tecnico in assistenza ai ragazzi del Forma Mentis Innovaction Award 2019, che stanno lavorando – tra gli altri – tra Revit 2019 e l’ultima versione di Fusion 360, corredata di modulo sul Generative Design. Fino a quando Autodesk […]
Lo so, lo so, state aspettando che io continui la mia serie sulla ISO 19650, ma devo concedermi un post tecnico in assistenza ai ragazzi del Forma Mentis Innovaction Award 2019, che stanno lavorando – tra gli altri – tra Revit 2019 e l’ultima versione di Fusion 360, corredata di modulo sul Generative Design. Fino a quando Autodesk non renderà realtà i nostro selvaggi sogni di interoperabilità tra i due software, il formato consigliato per l’esportazione da Fusion 360 a Revit è il SAT. Tuttavia a lezione ho fornito un’informazione obsoleta, che grazie alla segnalazione di uno studente ho l’opportunità di correggere.
Quello che viene mostrato in questo video è divenuto leggermente obsoleto: attenzione.
1. Importare un file SAT
Come ho detto a lezione, l’importazione di un file SAT da Revit viene gestita, sia in ambiente di progetto che nelle famiglie, dal pulsante Import / Cad, scegliendo l’estensione giusta dal menu a tendina.


Il file viene importato e, a differenza di Revit 2016 in cui questa operazione doveva essere svolta manualmente, viene già esploso. Rispetto alla versione 2018, sono state migliorate alcune performance per cui, rispetto a quello che ho detto in aula, ora è improbabile che vengano cancellate delle geometrie che Revit considera “singolari”. Questa è la buona notizia.
La cattiva notizia è che la versione 2019 ha disabilitato la possibilità di assegnare un materiale alle cosiddette Direct Shape, quindi le geometrie che nascono dall’importazione di un SAT o, per chi sa di che cosa sto parlando, quelle create con Dynamo tramite il nodo DirectShape.ByGeometry o DirectShape.ByMesh. Mi aspetto che anche alcune geometrie ricavate da importazione di IFC 2×3 abbiano questo problema, ma cerchiamo di risolvere prima i problemi pratici.

Il comportamento è analogo anche in ambiente di progetto e nell’ambiente delle masse.
Se lavorate in Fusion 360, la soluzione è relativamente semplice: impostando i materiali direttamente in Fusion, una volta importato il SAT essi vengono mantenuti.

Se le cose fossero rimaste come un tempo, i materiali sarebbero consultabili da Manage -> Object Styles.
Purtroppo però è qui che salta fuori la magagna: i materiali non ci sono, né sotto la categoria Model né sotto la categoria Import.
Niente in questa manica, niente nell’altra manica
I materiali tuttavia esistono, nel tab Manage -> Materials, per quanto nominati in modo buffo. Cambiando lo shading di uno di loro ho la conferma di star lavorando sullo stesso materiale.

Il comportamento è coerente anche in ambiente di progetto. La soluzione semplice in questo frangente è quindi quella di esportare l’oggetto da Fusion 360 già con i materiali applicati.
2. E se non ho Fusion?
Purtroppo non ho un workflow canonico per risolvere il problema e non ho trovato un plug-in che risolva il problema, per cui che i ragazzi del FMIA2019 si armino di pazienza: dobbiamo addentrarci un istante nel magico mondo del visual scripting di Revit, ovvero Dynamo. Per amore di brevità dovrò dare per scontate un sacco di cose che scontate non sono, ma spero di riuscire a farmi capire ugualmente.
Continuate a leggere a vostro rischio e pericolo.
3. Capiamo cosa sta succedendo
Dynamo si trova nel tab “Manage” di Revit e apre un ambiente di programmazione a nodi che spesso, come in questo caso, consente di aggirare alcuni comportamenti predefiniti del software.

Scegliendo “Nuovo”, avrete un canvas di programmazione su cui posizionare i nodi: ogni nodo è un istruzione che viene effettuata su ciò che entra da sinistra e che restituisce qualcosa a destra. Trovate un mio post introduttivo a Dynamo e qualche nozione di base qui, ma la risorsa di riferimento principale è il Dynamo Primer.
Sullo spazio che avete davanti, i nodi si posizionano cliccando con il tasto destro e cercandone il nome, oppure sfogliando la libreria che avete sulla sinistra.

Per capire cosa sta succedendo, uso un nodo che mi consente di selezionare il SAT importato e due nodi di interrogazione, uno sui parametri e l’altro sulla geometria. Potreste avere diversi scenari:
- Il nodo Element.Geometry è giallo e vi dice che ha trovato branching spline o nurbs autointersecanti;
- Il nodo Elemen.Geometry è giallo e dichiara di essere nullo nonostante l’elemento abbia chiaramente una geometria (il caso in figura);
- Il nodo è del colore corretto (grigio) e dà in output una lista di “Solid”.
In tutti e tre i casi, qualcosa non va. Nei primi due casi è solo più evidente.

Ci accorgiamo che qualcosa non va se proviamo a far importare il SAT non direttamente al pulsante di Revit, ma allo script stesso. Intanto incontro una prima differenza: le diverse geometrie che compongono il solido sono importate autonomamente, di certo in modo meno pulito (una sfera diventa una mesh ad esempio).

Non ho però risolto il problema: selezionando uno qualunque degli elementi nell’ambiente famiglia non ho comunque la possibilità di assegnare il materiale. Non si tratta di una geometria davvero “nativa”: fa finta. A differenza di prima però, dato che lo script ha assegnato “di forza” un materiale (“Default”, nel mio caso), mettendomi in visualizzazione realistica ottengo comunque qualcosa di meglio rispetto a prima. A discapito della geometria. Sconsigliabile.
4. Geometrie importate “alla vecchia maniera”
Per i nostalgici, esiste comunque un modo di importare i SAT senza renderli geometrie native (anche se non riesco a capire come mai dovreste voler fare una cosa del genere).
Alcune linee guida sono tracciate in questo vecchio post del 2016. Per avere qualcosa di meglio bisogna installare un package personalizzato, ovvero ricorrere a dei blocchetti scriptati nella notte da una serie di altri professionisti volenterosi esterni ad Autodesk in giro per il mondo. In particolare ci serve Springs.

Fate attenzione ad avere l’ultima versione di Dynamo, ovvero la 2.0.2. In caso contrario potete scaricarla da qui. Come in più o meno ogni software, la versione si controlla sotto il ? scegliendo “Information on”.
Tutto il circo funziona leggermente meglio utilizzando il nodo Form.ByGeometry (nella famiglia) o il nodo FamilyInstance.ByGeometry (nel progetto). In questo modo ci troviamo con una geometria importata che non viene esplosa e continua a comportarsi come un cad.

Nel momento in cui proviamo ad esploderla però, incorriamo nelle possibili perdite di geometria che erano proprie della versione 2018. Consiglio di procedere per Partial Explode graduali.

Anche non esplodendola, tuttavia, NON abbiamo la possibilità di controllare i materiali negli object styles, come un tempo.
