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

3 commenti:

  1. Hello, I am trying to use your code on a file and I get the following error:

    "Unable to cast object of type 'Autodesk.Revit.DB.FamilyInstance' to type 'Autodesk.Revit.DB.IndependentTag'.

    I did test and I was able to get the code to work on a blank autodesk template file. The file I was working in has been upgraded a few releases. Could that be the problem? Is there a fix for the codes?

    RispondiElimina
  2. Based on my last message, when I try just the line code I also get an error for casting ModelLine to DetailCurve

    RispondiElimina
  3. Hi, with the new release of the code in this post you'll be able to distinguish between model and detail line, also be sure you've loaded the tag family provided with the previous post.
    Let me know if it works.

    Cheers,

    -Paolo

    RispondiElimina