Visualizzazione post con etichetta tag. Mostra tutti i post
Visualizzazione post con etichetta tag. Mostra tutti i post

mercoledì, settembre 17, 2014

Super Tag - Dynamic Model Update




I've been wrapping my head around dynamic model update in order to push my code further to be more "Revit-ish", so it updates instantly and has no longer a "fire and forget" sort of behaviour.
I've implemented an IUpdater interface that loops through the family instances, reads their parameters in a certain order and then pushes them into the comments of the room.
It's not perfectly Revit since it's not bi-directional at the moment, anyway it gets the job done nicely.

Technically the oddest part in developing this idea was to realize that an IUpdater doesn't need a transaction to work.

Applications are endless, this one I called "Super Tag", it would give the ability to the users to push calculated values into tags (finally!), embedding a piece of code in the template file assuring that everyone on the team has the same tools available.

There are considerations to make on performances, but it sure is a great thing we have to suit our design.

giovedì, maggio 01, 2014

Fire Rating Stripes+Tags macro 2014 - Update



Grazie al feedback di un lettore ho potuto sistemare un  paio di inconsistenze nel codice sin qui sviluppato:
Quando sono presenti sia linee di dettaglio sia linee di modello la macro dava un messaggio di errore, è bastato aggiungere un filtro per gli elementi curva specificando che il tipo di oggetto che interessa per far funzionare la macro sono solo le linee di dettaglio:

CurveElementFilter detline =new CurveElementFilter(CurveElementType.DetailCurve,false);

Successivamente quando si va a comporre la lista delle linee di dettaglio da eliminare si deve aggiungere questa condizione di filtro, pertanto il blocco relativo diventa:

IList OldLines = new FilteredElementCollector(doc).
OfCategory(BuiltInCategory.OST_Lines).
WherePasses(detline).
Cast().
Where(x=> x.LineStyle.Name.StartsWith("Fire Rating - ")
                                                         && 
                                                         x.OwnerViewId.IntegerValue==doc.ActiveView.Id.IntegerValue)
.ToList();

La seconda revisione invece riguarda i muri creati da superficie (come le masse), perché non hanno la proprietà di LocationCurve che serve per creare la linea di dettaglio e ricavare poi il posizionamento delle etichette.
Per il momento questo tipo di muri vengono esclusi dalla macro, ho quindi inserito un blocco try/catch che verifica appunto se il muro è da tracciamento oppure no:

foreach (Reference r in Walls)
{
Wall e = doc.GetElement(r) as Wall;
try {
lc = e.Location as LocationCurve;
} catch (Exception) {

continue;
}
......

Qui il codice aggiornato.

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

puntorevit@gmail.com

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

sabato, novembre 16, 2013

3D View Tag



In questo post dal blog di Steve Stafford Revit OpEd si ricorda che non si dispone ancora di annotazioni in grado di segnalare la posizione delle viste 3D.
Ho preso spunto da qui per poter creare una macro che inserisse una famiglia di modello generico per ciascuna vista di prospettiva, orientandola correttamente e riportando il nome della vista.
Ovviamente è solo l'effetto finale quello che avevo in mente, non è per niente simile alle annotazioni di Revit che si aggiornano automaticamente con le proprietà delle viste collegate, però funziona per quello che abbiamo a disposizione ora.

Ecco il codice sorgente e la famiglia utilizzata (c'è da inserire un parametro condiviso ma credo siate in grado di ricavarlo da soli):

Codice sorgente 2014

Famiglia GM-3DView.rfa