Continuing with the tradition of compiling the awesome opensource Revit addin "Revit Lookup", I have taken the Revit 2018 version and compiled it for those that do not know or want to try compiling the source code for themselves.
Download Revit Lookup 2018 here.
I have added a link on the right side of the blog and will keep it updated whenever there is a new build available.
Revit Lookup (https://github.com/jeremytammik/RevitLookup)
Interactive Revit BIM database exploration tool to view and navigate element properties and relationships.
Please refer to The Building Coder for more information.
Friday, April 21, 2017
Thursday, April 13, 2017
Revit 2018 Export Warnings from Model to Excel
Revit 2018 has added a great new addition to the API that allows you to collect all of the Warnings that exist in the model. Previously, you could only export this list by using the builtin "Export" button in the Warnings dialog, that exported to a HTML file.
The new addition is the following:
The following macro will export all the warnings in your model to Excel:
The new addition is the following:
IList<FailureMessage> warnings = doc.GetWarnings();
The following macro will export all the warnings in your model to Excel:
public void ExportWarningsToExcel() { // make sure to add a reference to Excel Object Library // put the following (minus the // into your using statements) // using xls = Microsoft.Office.Interop.Excel; // using System.Reflection; // create a new Excel connection xls.Application xlApp = new xls.Application(); // make sure you have access to Excel if (null == xlApp) { TaskDialog.Show("Error", "Failed to start or access Excel"); return; } // get the current model Document doc = this.ActiveUIDocument.Document; // get a list of all the model's warnings IList<FailureMessage> warnings = doc.GetWarnings(); try { // show the Excel window xlApp.Visible = true; // create a new Workbook in Excel xls.Workbook workbook = xlApp.Workbooks.Add(Missing.Value); // create a new Worksheet in Excel xls.Worksheet worksheet = (xls.Worksheet)workbook.Worksheets.Item[1]; // name the Worksheet with the model name worksheet.Name = doc.Title; // create a header row worksheet.Cells[1,1] = "Warning Description"; worksheet.Cells[1,2] = "Elements"; // count the number of warnings int numWarnings = 0; // start on row 2 for warnings int row = 2; // loop through each warning foreach (FailureMessage fmsg in warnings) { // add the warning desciption to cell in Excel worksheet.Cells[row, 1] = fmsg.GetDescriptionText(); // create a string to hold element info string elements = ""; // loop through the element ids foreach (ElementId eid in fmsg.GetFailingElements()) { // get the element Element e = doc.GetElement(eid); // add the element category elements += e.Category.Name + " : "; // some elements fail when getting their family type, so skip getting type if it fails try { // get the element family type elements += e.LookupParameter("Family").AsValueString() + " : "; } catch { } // add the element name elements += e.Name + " : "; // add the element id elements += "id " + eid.ToString() + System.Environment.NewLine + System.Environment.NewLine; } // add elements to cell in Excel worksheet.Cells[row, 2] = elements; // go to next row to Excel ++row; // increment number of warnings numWarnings++; } // expand columns to fit text xls.Range col1 = worksheet.get_Range("A1", Missing.Value); xls.Range col2 = worksheet.get_Range("B1", Missing.Value); col1.EntireColumn.ColumnWidth = 70; col1.EntireColumn.WrapText = true; col2.EntireColumn.ColumnWidth = 25; // show dialog for results TaskDialog.Show("Success", "Exported " + numWarnings.ToString() + " warnings to Excel!!!"); } catch (Exception ex) { TaskDialog.Show("Error", "Something bad happened!!!" + System.Environment.NewLine + System.Environment.NewLine + ex.Message); } }
Friday, February 24, 2017
Export All Possible Revit Warnings
A few weeks ago, Konrad Sobon, posted a Python script for exporting all the possible Revit warnings to use in a Dynamo script that analyzes and ranks the warnings in the current model. Since I mostly work in C#, I took his Python script and created a C# macro. I've had several requests for it, so here it is...
And the resulting file from Revit 2017 : Warnings.txt
public void ExportWarnings() { try { using (StreamWriter writer = new StreamWriter(@"C:\temp\warnings.txt")) { FailureDefinitionRegistry failures = Autodesk.Revit.ApplicationServices.Application.GetFailureDefinitionRegistry(); IList<FailureDefinitionAccessor> failuresList = failures.ListAllFailureDefinitions(); foreach (FailureDefinitionAccessor failure in failuresList) { if (failure.GetSeverity() == FailureSeverity.Warning) writer.WriteLine(failure.GetDescriptionText()); } writer.Close(); } } catch { } }
And the resulting file from Revit 2017 : Warnings.txt
Wednesday, February 01, 2017
Adding Revisions to a Sheet Index
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:
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...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | public void SheetRevisions() { Document doc = this.ActiveUIDocument.Document; using (Transaction t = new Transaction(doc, "Revisions on Sheet")) { t.Start(); // 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"); } } } t.Commit(); } } |
Monday, May 02, 2016
RevitLookup 2017
I have compiled the latest source code for RevitLookup 2017 from Jeremy Tammik's GitHub (https://github.com/jeremytammik/RevitLookup).
Note: I did not create or edit this Revit Addin. I am only compiling it for those that don't understand or want to compile it for themselves.
Here is the download link: RevitLookup2017.zip
It is also listed on the right-hand column under downloads.
Note: I did not create or edit this Revit Addin. I am only compiling it for those that don't understand or want to compile it for themselves.
Here is the download link: RevitLookup2017.zip
It is also listed on the right-hand column under downloads.
Subscribe to:
Posts (Atom)


