
Grazie alla segnalazione di Lisa Bonaguidi, prendiamo l'occasione di un errore emerso nella Lezione 9 per introdurre come ricercarlo con procedura "passo-passo", simulando, in Revit, la procedura di Debugging che usano i programmatori per trovare il punto dove il programma si interrompe o ha una "falla". In ossequio alla frase di James Joyce che citiamo spesso, "errors are portals of discovery"! Benvenuti quindi. Provo a usare quanto successo per lavorare quindi sul file della lezione 9, la terza della serie "nested components".
Iniziamo dunque il Debugging:
Ho analizzato il file della lezione 9 ricercando la ragione del non recepimento dei parametri da parte delle famiglie "Telaio Base" caricate nel file di assemblaggio, problema segnalato non da tutti. Nel caso del file che ho usato per la lezione, ho riscontrato l'errore ed eseguito i seguenti passi, ognuno conseguente a un tentativo di isolamento del problema. In altri termini è una procedura di "troubleshooting". In questo caso si isolano le singole parti per testarne il funzionamento.
1 - Ho costruito un nuovo file di assemblaggio e provato se caricando la stessa famiglia telaio base, da sola, il problema tornasse. Si ripresentava.
Quindi il problema era nella famiglia di origine non in quella di destinazione;
1a - Cosa singolare, variando i parametri nella famiglia di origine la variazione avviene, caricando il file in quella di assemblaggio e indicando di sostituire i valori dei parametri... si osservava la variazione, che invece dal pannello properties non sembrava aver effetto;
2 - Ho controllato quindi la famiglia di origine, Telaio Base, e testato se fossero i parametri ad avere un problema. Per farlo ho aggiunto un cilindro legando la sua altezza di estrusione a uno dei due parametri in questione, ad esempio, b sezioni;
3 - A questo punto ho caricato di nuovo la famiglia nel precedente file, e testato la variazione dei parametri: solo quello del clilindro sembrava aver effetto.
Dunque ciò che era "vecchio" non andava, ciò che era "nuovo" invece sì.
Proviamo a testare questa ipotesi. Resettiamo i "tempi".
4 - A questo punto quindi ho effettuato un ciclo di salvataggio e ricarica da zero delle famiglie in questione, e inoltre testato la variazioene dei parametri angolari, e sucessivamente di quelli del tipo : a questo punto ho osservato una variazione anche variando i valori dal pannello properties;
Dunque il problema sembra essere nella ciclicità e sequenza di caricamenti e aggiornamenti. Un tema di "refresh". Possibile?
ora funziona, ma si potrebbe indagare nel dettaglio esattamente il problema. Il problema del "refresh" può essere collegato a una lezione in cui ho piu volte dovuto fare "back and forth". Ho trovato, ad esempio, la famiglia telaio base caricata non salvata. I due file non erano allineati.
Lisa, prova a indagare questo tema e facci sapere. Ti allego le famiglie da me "lavorate" di assemblaggio e telaio base.
Se trovate errori, ricordate: provate un comportamento semplice e da lì ripartite, aggiungendo complessità.
Anche nelle esercitazioni future!
Buon "debugging" dunque!
Buona sperimentazione a tutti, siete un gruppo fantastico, non demordete!
Vi leggiamo. Ricordatevi che stiamo facendo cose difficilissime ma le state affrontando bene, le dovete solo "digerire", e non sono, ripeto non sono temi da aver neccessariamente risolto per l'esame, anzi. Nella discussione si parla di problemi, non di soluzionI!
Link ai file del "debugging": https://drive.google.com/drive/folders/1R9wqsw0NW41psMlg5iNhHo9DrERD87Ql
Un bravo quindi a tutti già ora-.
Provate, sbagliate e fate cose semplici!
a prestissimo!
S.C. e il team TPP
S:C.
Mar, 26/05/2020 - 16:22
Eccoci alla lezione "Digital Tectonics"!
QUI il link per seguirla in diretta, seguirà video.
Link al drive dove abbiamo caricato i template di famiglia finora utilizzate https://drive.google.com/drive/folders/17Q6exa1f2O2EWg2uy1XhPFubui-bTh6m
Video? Eccolo!
Mar, 26/05/2020 - 09:36

A seguito delle ultime lezioni ho voluto creare un telaio di cui si potesse cambiare alcuni parametri e creare così una pensilina.
Per farlo ho dovuto creare più famiglie nidificate per avere il telaio finale da caricare in un progetto e creare così la composizione.
Le famiglie che ho creato e come sono state nidificate sono riassunte nel seguente schema
Ho iniziato quindi con la famiglia del telaio partendo da un file d "Modello Generico Metrico" .
Mi sono messo sul prospetto frontale ed ho creato due piani di riferimento ai lati del piano di riferimento principale ed ho assegnato un parametro alla quota che li distanzia dall'asse centrale in modo che la struttura si allarghi verso l'esterno e non solo verso un lato.
Partendo dall'angolo in basso a sinistra ho creato una linea di riferimento ed ho impostato il piano di lavoro su questa linea
Avendo impostato il piano di lavoro su questa linea ne ho creata un'altra che va verso l'interno ed ho creato un piano di riferimento orizzontale che passa per la fine della prima linea.
Ho quindi assegnato le quote agli elementi e creato i parametri :
- "Angolo Mediano" che è tra le due linee di riferimento,
- "Larghezza Telaio" che va dall'asse centrale del telaio alla fine della prima linea di riferimento
- "Altezza Telaio" che va dalla quota 0 al piano di riferimento creato prima
Ho inoltre assegnato una quota alla linea di riferimento che rappresenta la falda della coperturaDato che voglio che la trave superiore si adatti quando cambio il parametro lato interno e l'angolo mediano devo far in modo che la lunghezza della trave cambi in base a questi due parametri e che finisca sempre sull'asse centrale del telaio.
Quindi prendo in considerazione il triangolo rosso della prossima immagine e considereo che la lunghezza della trave è l'ipotenusa del triangolo mentre il parametro "Larghezza Telaio" è un cateto ed infine l'angolo tra questi due è dato da Angolo mediano - 80°.
Nella casella "FORMULA" del parametro "Lunghezza Trave Alta" scrivo quindi " Larghezza Telaio / cos ( Angolo Mediano - 80°)
In questo modo cambiando il parametro di Angolo Mediano la struttura si adatta e la trave va a finire sull'asse centrale del telaio
Ora però voglio che la struttura si adatti anche se cambio il valore del parametro "Lato Interno" cioò se voglio far allargare o restringere il telaio senza far cambiare l'angolo di inclinazione della falda.
Prendo quindi in considerazione il triangolo rosso della prossima immagine e devo fare in modo che il parametro "Larghezza Telaio" segua l'andamento del "Lato Interno" e l'inclinazione della prima linea di riferimento. Infatti la Larghezza del Telaio è data da Lato Interno + il cateto del triangolo rosso che è dato da "Altezza Telaio * tan( Angolo Laterale).
Quindi nella casella formula del parametro "Larghezza Telaio" scrivo " Lato Interno + Altezza Telaio * tan( Angolo Laterale)".
Ora variando sia il parametro "Angolo Mediano" e "Lato Interno" la struttura si adatta.
Ora apro un nuovo file famiglia del tipo "Modello Generico Metrico Basato Su Linea" per creare le travi del telaio.
Gli assegno i parametri :
- Base Sezione (TIPO)
- Altezza Sezione (TIPO)
- Lunghezza Trave (ISTANZA)
- Materiale (Abete)
e mi creo due tipi : uno per la trave alta ed uno per la trave laterale
Torno nella famiglia del telaio e mi assicuro di avere impostato il piano di lavoro sulla seconda linea di riferimento.
Carico la famigli della trave, seleziono il tipo "Trave Alta" e la inserisco nell'area di lavoro.
La allineo alla linea di riferimento e la blocco ad essa.
Infine collego il parametro "Lunghezza Trave" della famiglia trave a quello di "Lunghezza Trave Alta" della famiglia telaio
Ora la mia trave si adatta se cambio i parametri "Angolo Mediano" e "Lato Interno"
Ripeto gli stessi passaggi per la trave laterale.
Dunque carico il tipo "trave Laterale" , lo allineo alla linea di riferimento e collego il parametro "Lunghezza Trave" a quello di "Lunghezza Trave Lato"
Ottengo così metà del mio telaio.
Ripeto tutto il procedimento fatto finora sull'altro lato della struttura e assegnando gli stessi parametri adi vari elementi ottenendo così il telaio completo.
Cambiando i soliti parametri controllo che la struttura si adatti.
Ora devo iniziare a fare la copertura.
Per farla creo una nuova famiglia di tipoo "modello generico metrico" e creo un listello con i parametri:
- Spessore (TIPO)
- Lunghezza (TIPO)
- Larghezza (TIPO)
- Materiale (Abete)
e questo sarà il mio listello base con cui poi creerò la superficie di copertura.
Per fare la superficie di copertura creo una nuova famiglia di tipo "Modello generico metrico basato su linea"
Carico la famiglia del listello, la allineo ai piani di riferimento e creo i parametri "Lunghezza Listello" e "Lunghezza Superficie".
Successivamente uso il comando serie per creare appunto una serie di listelli ed allineo e blocco l'ultimo listello al piano di riferimento a destra.
Ora voglio che la superficie di copertura sia composta da listelli distanziati tra loro per una lunghezza pari alla loro larghezza.
Quindi mi creo il parametro "Larghezza Listello" all'interno della famiglia della superficie e lo collego a quello della famiglia Listello.
Successivamente seleziono la serie, clicco sulla quota che indica il numero di elementi e creo un nuovo parametro chiamato "Numero di Listelli" a cui assegno la formula "Lunghezza Superficie / 2 * Larghezza Listello" . In questo modo se cambio la lunghezza della superficie il numero di listelli si adatterà mantenendo la stessa distanza tra loro e posso anche cambiare la larghezza dei listelli mantenendo la distanza tra loro costante.
All'interno della Famiglia telaio creo i parametri Altezza Trave e Base Trave e li associo ai parametri della trave in modo da controllare tutto nella stessa famiglia.
Ora carico la famiglia "Superficie Listelli" all'interno della famiglia "Telaio" e la posiziono sopra le travi. Inoltre allineo le due superfici al piano di riferimentro "fronte/retro" in quanto allineandolo alla superficie laterale della trave mi dava errore.
Ora devo fare in modo che la superficie di listelli si adatti al resto della struttura e segua la lunghezza della trave.
Quindi associo il parametro "Lunghezza Superficie" della famiglia "superficie listelli" a quello "Lunghezza Trave Alta" della famiglia "Telaio"
Creo anche altri due parametri all'interno della famiglia "Telaio"
- Interasse telaio che collego al parametro "Lunghezza Listello" della famiglia superficie listelli
- Larghezza Listello che collego a quello della famiglia superficie listelli
Così facendo controllo tutto dai parametri della famiglia TELAIO e tutto si adatta cambiando i due soliti parametri :
- Angolo Mediano
- Lato Interno
Prima di passare alla composizione cambio i parametri "Angolo Mediano" e "Lato Interno" da parametri di TIPO a parametri di ISTANZA in quanto voglio poter cambiare questi valori per ogni singolo telaio che farà parte della composizione.
Creo inoltre due linee di riferimento con il comando "Linea dei simboli" per avere un punto di riferimento del mio telaio prima di caricarlo nel progetto.
Ora apro un nuovo file di tipo progetto
Creo una serie di piani di riferimento orizzontali e con una quota continua gli assegno EQ in modo che si trovino tutti alla stessa distanza tra loro.
Carico la famiglia TELAIO, la copio tante volte quanti sono i piani di riferimento e li allineo a questi ultimi.
Ora creo una quota tra solo due piani di riferimento e creo un parametro all'interno del file di progetto chiamato "Interasse Telaio" e lo collego a quello della famiglia Telaio.
Questa è la situazione iniziale
Dopo aver cambiato i parametri "Angolo Mediano" e "Lato Interno" di ogni singolo telaio in modo da farli aumentare progressivamente e cambiando il valore di interasse telaio ottengo questo
Ma dato che i listelli sono troppo grandi e distanziati seleziono un telaio e cambio il valore "Larghezza Listello" ottenendo una copertura più fitta.
Però per come ho creato il telaio quando lo vado a comporre su un lato ho dei listelli che sporgono ma che non poggiano su un telaio.
Dunque torno alla famiglia Telaio, seleziono la superficie di listelli e creo il parametro visibilità
Ora ricaricando la famiglia nel progetto e selezionando l'ultimo telaio posso spegnere i listelli ed ottenere questo
Questa è la composizione di telai completata.
Volevo poi creare delle tabelle che fossero utili in caso di costruzione di questa struttura e quindi voglio poter estrapolare una tabella che mi dica per ogni telaio qual è la distanza tra i due pilastri laterali, l'angolo mediano, la lunghezza della trave alta e il numero di listelli per telaio.
Per far ciò torno nella famiglia telaio e creo tutti i parametri condivisi necessari
Prima di fare la tabella devo scrivere per ogni telaio nella voce "Contrassegno" il numero di telaio che è in modo da riconoscerli nella tabella.
Ora posso andare a creare una tabella andando su Vista-> Abachi->Abaco/Quantità e scegliendo Modelli Generici nella lista dei possibili abachi.
Scelgo quindi le voci che mi servno
Però con questi parametri non otterrei le informazioni richieste in quanto i parametri "Lato Interno" e "Numero Listelli" si riferiscono solo ad una metà del telaio io invece voglio i valori complessivi quindi creo due nuovi parametri all'interno della tabella che rispondono ai precedenti due parametri
Successivamente ordino la tabella secondo il contrassegno e nascondo le due colonne di parametri che non mi servono cioè "Lato Interno" e "numero listelli" che sono stati sostituiti da "Distanza Pilastri" e "Numero Listelli Telaio" che riportano il valore che serve a me.
In questo modo ho ottenuto una tabella che mi dice per ogni telaio le dimensioni che variano.Ho creato poi un'altra tabella che mi dicesse di quanti listelli ho bisogno in tutto.
Quindi ho selezionato i parametri:
- Numero Listelli
- Larghezza Listelli
- Lunghezza Listelli
- Spessore Listelli
Anche qui ho dovuto creare un nuovo parametro "Numero Listelli Telaio" per considerare i due lati del telaio
Ho poi nascoto il parametro "Numero Listelli" e chiesto a Revit di calcolare i totali della colonna "Numero Listelli Telaio"
ed in questo modo ho ottenuto questa tabella che mi dice di quanti listelli ho bisogno per la costruzione di tutta la composizione. Quindi se aumento o diminuisco la larghezza del listello in automatico saprò di quanti listelli ho bisogno per telaio ed in totale.
Di seguito alcune immagini della composizione finale

Il progetto raffigura una serie di moduli di diverso tipo.
Ogni modulo appartiene a una “Famiglia Madre” nidificata al suo interno, dalla quale sono poi stati estratti quattro tipi di modello variando le dimensioni. Ho scelto di mantenere il modello cubico per far risaltare la variazione delle dimensioni.
La Famiglia Madre è stata creata a partire dal Metric Generic Model. Ho tracciato due piani di riferimento ortogonali sulla vista frontale, che una volta parametrizzati avrebbero definito la posizione del modulo.
PARAMETRI CONDIVISI: c_distanza x e c_altezza da terra, definiti entrambi come istanze. Grazie alla condivisione dei parametri potrò utilizzarli una volta importato questo modello all’interno del progetto.
Ho costruito poi una linea di riferimento a partire dall’intersezione degli assi che ho tracciato, e ho parametrizzato la quota angolare tra essa e il piano orizzontale.
PARAMETRO CONDIVISO: c_angolo, definito come istanza.
In questo modo ho creato l’ambiente pronto per ospitare la “Famiglia Figlio”.
Ho voluto creare due Famiglie Figlio, distinte per la disposizione degli elementi: orizzontali o verticali, che una volta importate nella Famiglia Madre formassero il modulo per il progetto.
Le Famiglie Figlio sono state create a partire dal Metric Generic Model Line Based. Questo modello mi ha permesso di poterle importare successivamente impostando come piano di lavoro della Famiglia la linea di riferimento inclinata.
In questo passaggio ho riscontrato però una difficoltà: importando il modello Figlio Line Based nella vista frontale della Madre mi mostrava la vista in pianta. Ho perciò tentato di risolverlo costruendo il modello pensando le viste Ref. Level e Front come fossero invertite.
Ho tracciato i piani di riferimento, e li ho quotati e parametrizzati. Poi ho creato due estrusioni e ho vincolato i lati ai piani.
Per i due elementi orizzontali (Famiglia Figlio H)
PARAMETRI: base, profondità, spessore e distanza, definiti come tipo.
Per i due elementi verticali (Famiglia Figlio V)
PARAMETRI: altezza, profondità, spessore e distanza, definiti come tipo.
Questi parametri diventeranno dei "Parametri Obbedienti” ovvero verranno associati direttamente ai parametri della Madre.
Ora torniamo alla Madre. Ho importato entrambi i file Figlio H e Figlio V all’interno della Famiglia Madre.
Ho impostato il Piano di Lavoro sulla linea di riferimento e, selezionando l’opzione Place on Work Plane, ho posizionato e vincolato i modelli sulla linea di riferimento.
Ho definito dei parametri di tipo per controllare i parametri delle Famiglie Figlio. In questo modo sono riuscita a far combaciare gli spigoli delle due differenti Famiglie.
PARAMETRI: base, altezza, profondità e spessore definiti come tipo.
Con questo modello gestisco la posizione l’inclinazione e le misure del modulo complessivo.
Come ultima fase ho creato un nuovo Progetto di Assemblaggio in cui ho importato la Famiglia Madre.
Sulla vista in Pianta ho tracciato due piani di riferimento: X di progetto e Y di progetto. E li ho allineati all’origine del sistema di riferimento di default (Project Base Point).
Dal Project Browser ho modificato le Type Properties del file importato e ho duplicato il modello per variare le dimensioni. Ho definito quattro tipologie: 20x20x20 40x40x40 60x60x60 100x100x100 (le misure sono espresse in cm). Ho scelto di mantenere il modello cubico per far risaltare la variazione delle dimensioni.
Ho inserito varie volte i diversi moduli posizionandoli sempre nell’origine degli assi di progetto e ho successivamente modificato i parametri tramite l’utilizzo della Schedule, dove ho categorizzato gli elementi per tipo, conteggio e in base ai parametri condivisi della Famiglia Madre: c_distanza x, c_altezza da terra e c_angolo.

Buongiorno a tutti ecco il link alla lezione di oggi:
https://teams.microsoft.com/l/meetup-join/19%3a5ffec7a687f742348ffba5085...
Vi linkiamo anche la cartella drive in uci sono presenti le famiglie Generic Model e Generic Model Line Based
https://drive.google.com/drive/folders/17Q6exa1f2O2EWg2uy1XhPFubui-bTh6m
Stay tuned, TPP's Team
Mar, 19/05/2020 - 10:04