mercoledì, aprile 30, 2014

Fire Rating Tags Along Walls Annotative Spacing / Instance parameter





In questa versione del codice dimostro come ottenere un comportamento "annotativo" nel posizionamento delle etichette, ossia al variare della scala della vista non cambia la distanza stampata tra le etichette.
Tenete a mente quindi che il valore di spaziatura deve essere adeguato al comportamento che volete adottare.

Qui trovate il codice, ho aggiunto anche la possibilità di cercare un parametro di istanza dei muri come mi è stato chiesto da un lettore, sarà sufficiente seguire le indicazioni nelle righe di commento del codice e modificarlo secondo le vostre esigenze. In questo caso dovrete anche personalizzare i valori del nome etichetta e del nome del tipo (sempre individuabili grazie ai commenti).

If you're happy with my code, please Pay What You Want via PayPal to:

puntorevit@gmail.com


martedì, aprile 29, 2014

Fire rating stripes + tags along walls - Macro





Ho aggiunto qualche riga di codice per poter ottenere quanto mi è stato suggerito da un lettore nei commenti al post precedente.
Utilizzando questa particolare etichetta che si chiama "WA-FireRating" contenente a sua volta il tipo "WA-FireRating" è possibile ottenere con lo stesso procedimento utilizzato per le linee di dettaglio anche delle etichette lungo lo sviluppo dei muri che variano in funzione della scala di rappresentazione.
La spaziatura è regolabile all'interno della macro, adesso ha un valore del tutto arbitrario pari a 4ft, volendo lo si può impostare in modo "annotativo".

Qui il codice e qui la famiglia di etichetta.

If you're happy with my code, please Pay What You Want via PayPal to:

puntorevit@gmail.com

lunedì, aprile 28, 2014

Fire Rating Stripes - Macro






Per redigere le piante della sicurezza antincendio ci si può avvalere di viste dedicate e dei filtri grafici che sostituiscono il motivo di sezione dei muri concordemente alle loro proprietà. i filtri di sostituzione grafica sono un o strumento potentissimo ma non sempre offrono la flessibilità che occorre nella pratica di tutti i giorni. Questa tecnica infatti non risulta efficace in corrispondenza delle porte e introduce una complicazione notevole nella gestione dei pattern corrispondenti per simulare una linea tratteggiata anziché un retino per tutto lo spessore del muro.
Dato che non è ancora possibile avere una rappresentazione unifilare per i muri in Revit, ho scritto questa macro per la versione 2014 che tiene conto del parametro dei tipi di muro Fire Rating.
Per ogni vista si devono tracciare una selezionare a finestra sui muri interessati, in base al parametro di Fire Rating vengono create le categorie di linee corrispondenti e vengono tracciate delle linee di dettaglio in corrispondenza della linea di mezzeria del muro (se il parametro non è compilato non succede niente).
Successivamente si possono andare a modificare gli stili grafici delle categorie delle linee di Fire Rating per adeguarli a quelli usati in studio.
Quando si devono aggiornare le viste di pianta, le linee di dettaglio vengono eliminate, ripetendo la selezione a finestra le linee vengono ricreate per evitare refusi ed errori di aggiornamento.
Questo processo si può anche adattare per qualsiasi altro parametro presente nei muri (trasmittanza, abbattimento acustico ecc...), se poi si esegue  il comando una prima volta su una vista che contiene tutti i tipi di muro è possibile sviluppare e mantenere lo standard di rappresentazione in maniera molto meno onerosa ed efficace rispetto al metodo con i filtri.

Ecco il codice della macro per Revit 2014. Se la cosa interessa posso sviluppare l'external command per Fire Rating e le proprietà acustiche. Si accettano suggerimenti e critiche al flusso di lavoro che ho ipotizzato.

If you're happy with my code, please Pay What You Want via PayPal to:

puntorevit@gmail.com

martedì, aprile 15, 2014

Dynamo Google hangout



A questo link potete assistere al primo incontro periodico che porta al grande pubblico le novità che riguardano il mondo di Dynamo, in particolare i fondatori Ian e Zach che spiegano le origini di questo add-in per Revit e la direzione che sta prendendo questo progetto ormai destinato ad essere una piattaforma autonoma che si potrà interfacciare con un numero crescente di software (versione 0.7.0).
Fanno ben sperare alcune delle caratterstiche che si possono vedere quali la "Zero Touch Import" che permette di avere disponibili come nodi di Dynamo le funzioni pubbliche dentro delle librerie (.dll) sviluppate da altri, senza nessuna fatica, ed ancora la possibilità di estendere le potenzialità di Dynamo con l'integrazione di DesignScript, un progetto parallelo per lo sviluppo di un linguaggio di programmazione orientato alla creazione di forme geometriche complesse, che consentirà di avere racchiuso in un solo blocco di codice interi script o strutture di nodi che nelle versioni precedenti di Dyanmo avrebbero richesto molto più tempo.
Da ultimo ma non per importanza, l'intera libreria delle geometrie e delle operazioni possibili sulle superifici di Dynamo è stata ampliata andando ad attingere direttamente dal core di Inventor.

Questo amplia una volta di più le possibilità di modellazione di Revit col quale Dynamo si interfaccia da sempre, proprio come spiega Ian e dimostra Zach in un esempio. Anche il flusso di lavoro dalla concezione della forma alla modellazione e quindi ingegnerizzazione della stessa, stanno per subire un profondo cambiamento, in velocità e controllo, Dynamo è l'anello mancante che permetterà il passaggio dall'analisi concettuale alla fattibilità dell'idea in un modo che non era stato possibile solo fino a poco tempo fa.

domenica, aprile 06, 2014

Dynamo - Transform on Curve

E' appena stata distribuita la nuova release stabile di Dynamo (0.6.3) che porta molte novità e amplia le possibilità offerte agli utenti finali. Tra queste mi ha particolarmente colpito l'integrazione con DesignScript nella versione beta 0.7 (da qui si può scaricare il manuale), un progetto parallelo che conoscevo già ma che integrato con Dynamo lo rende davvero interessante anche per gli utenti Revit.
Si tratta di un nuovo linguaggio di programmazione (un misto di C# e Python per quanto riguarda la sintassi) che permette di scrivere due tipologie di codici: uno Imperativo, di tipo tradizionale, e uno Associativo.
Per capire di cosa si tratta basti pensare che con un codice di tipo associativo ora si ha a che fare con qualcosa di "vivo" che mantiene valide le relazioni tra le variabili e non c'è bisogno di ridefinirle per aggiornare i risultati: in pratica la bidirezionalità a cui siamo abituati in Revit la troviamo ora anche fra le righe di codice!

In questi giorni stavo giocando con un particolare tipo di nodo, il Transform on Curve, cioè un nodo in grado di restituire un oggetto Transform per un determinato parametro normalizzato su una curva.
Un oggetto Transform si compone di un'origine e di una terna di vettori che descrivono lo spazio in coordinate locali.
Un transform può essere qualcosa di molto particolare come uno spostamento, una rotazione, un ingrandimento ad esempio....

Per realizzare questo esempio ho tracciato con una linea di modello un arco di circonferenza centrato sull'origine all'interno di una famiglia di massa.
In particolare il nodo Transform on Curve non funziona per curve di modello ma per le curve geometriche associate (è un problema noto agli sviluppatori), in ogni caso è aggirabile ricavando la curva geometrica associata alla curva di modello con l'apposito nodo.

Per questo esempio ho considerato un range di parametri normalizzati in 10 step ottenuto con una sintassi propria del nodo number e un nodo formula per normalizzarlo:



Sullo sfondo di Dynamo già da questo punto è possibile individuare cosa siano i Transform lungo la curva: una terna di vettori locali (x=rosso, y=verde, z=blu, regola della mano destra) con origine lungo la curva.




Con il nodo Reference point by Length, utilizzando stavolta la curva di modello si possono creare dei punti di riferimento associati alla curva per meglio visualizzare la suddivisione.


Successivamente ho creato dei punti con il nodo Reference point by normal che consente di creare dei punti di riferimento partendo da dei punti di riferimento esistenti ad una distanza da questi secondo un determinato vettore. I punti sono quelli lungo la curva e la normale è definita per ciascun punto come la componente Y del transform corrispondente.



Da qui poi ho creato una serie di punti di riferimento che avessero un incremento in Z semplicemente utilizzando un transform con un range di vettori in base Z.


Per concludere ho realizzato dei raggi e una linea di riferimento per poter generare una superficie.
Si potrebbe complicare l'esempio introducendo delle funzioni per quanto riguarda la distanza nel nodo Reference Point By Normal e il range di vettori Z per il transform XYZ.