Saturday, February 25, 2017

Free Macro for Adding Revisions to a Sheet Index

From Troy Gates' Revit Coaster blog:

Recently, I had someone make a request for adding an X to a column in a sheet index schedule for all the revisions that sheet had. Currently, they have to do it by hand and it is tedious.

To get this to work, I added a parameter for each revision called "Seq #" (with # being the revision sequence number). I looped through each revision on each sheet and looked up it's sequence number, then add an X to the parameter matching it.

Here is a video showing how it fills in the sheet index schedule:

And the code...

public void SheetRevisions()
 Document doc = this.ActiveUIDocument.Document;
 using (Transaction t = new Transaction(doc, "Revisions on Sheet"))
  // loop through all the sheets in the model
  foreach (ViewSheet vs in new FilteredElementCollector(doc).OfClass(typeof(ViewSheet)))
   // get a list of all the Revision Ids for this sheet
   IList<ElementId> revIds = vs.GetAllRevisionIds();
   // if at least 1 Revision, continue
   if (revIds.Count > 0)
    // loop through each of the Revision Ids
    foreach (ElementId eid in revIds)
     // get the actual Revision element
     Element elem = doc.GetElement(eid);
     Revision rev = elem as Revision;
     // add an X to the parameter named "Seq #"
     vs.LookupParameter("Seq " + rev.SequenceNumber.ToString()).Set("X");

There's more information available on the Revit Coaster blog.

No comments: