Tuesday, June 7, 2016

Harvey's Spool O' Matic 9000 - The Instruction Manual

Harvey's Spool O' Matic 9000
The Creation Process:

Throughout the past year and a half at Harvey's Plumbing and Heating. My colleague Tyler Graff, and I, have been developing a set of tools to increase productivity and efficiency at our company through developing a fabrication process utilizing a Revit Toolbar generated from macros. This tool-set primarily benefits our workflow and allows us to create assembly spool sheets in a fraction of the time it would take with conventional Revit tools. It also has created a standard for our companies spool drawings to maintain consistency in the field so that each spool sheet is as similar as possible as the one before that, and in turn increasing the legibility of the drawings for the foreman using them.

Our first goal when creating this process, and tool-set, was to evaluate our process. The process in which we went from point A - Z. This allowed for us to simplify, iterate and redesign the process to increase not only the process, but the effectiveness of the overall process. After coming up with a plan and iterating the plan over and over again we were able to refine the process into a series of steps, in this case, Revit buttons, that would allow for expedient spools without having to purchase a tool-set that didn't align to our standards.

After creating a series of assemblies of plumbing components, utilizing Building Data Content, we were able to compile accurate assemblies of what are built out in the field. These assemblies are consistently updated on a by job basis. This allows for the assemblies to evolve, and for missing assemblies to be added to the library for a "draw once and save for future use" approach.

Image of Harvey's Plumbing Assembly Library in Unifi
After having a solid library of components saved to our cloud database utilizing Unifi we began compiling a list, in order of importance, of which buttons we wanted created. These buttons were mapped out and thought out individually to allow for flexibility in the overall process.

The next process in creating these tools was to map out some of the tools with DynamoBIM and to receive some help from the community to get some of these tools created. This was accomplished through utilizing the DynamoBIM forum and asking valid questions and having experts in the community either generate code for us for Dynamo, or just explaining the process to get what what functionality we were looking for accomplished. This process alone took a few months of collaboration with experts and learning how to automate Revit through visual programming.

Some great resources that helped us along the DynamoBIM journey.


The forum proved to be the most important resource along the way because the community actually cared for the success of it's users.

After learning the fundamentals of dynamo, and how dynamo can potentially work for you. You can migrate into learning a more specific language. Since DynamoBIM is strictly a visual programmer it could be more beneficial to write some raw code. This raw code could be a gambit of different coding languages; however, Revit narrows it down to four:

C# (Pronounced C Sharp)

The majority of the examples online are either in C# or VB.NET. The other two are less easy to find examples for, so to start I chose C#. Some resources I highly recommend, that helped me get started were:

https://mva.microsoft.com/en-US/training-courses/c-fundamentals-for-absolute-beginners-16169?l=p90QdGQIC_7106218949 - Bob Tabor's Microsoft Virtual Academy Videos

https://www.lynda.com/C-tutorials/Up-Running-C/164452-2.html - Gerry O' Brien

https://msdn.microsoft.com/en-us/library/67ef8sbd.aspx - MSDN Resource

http://stackoverflow.com/ - Great resource for help and questions

http://www.dotnetperls.com/ - Another great reference

https://boostyourbim.wordpress.com/ - Boost Your BIM Macros and Help (There is a fee for his lectures through Udemy)

After running through some basic training videos you can start writing your own macros using the Sharp Develop I.D.E. Sharp Develop is a great place from within Revit to try your macros, and to get started experimenting with your code. This environment allows you to troubleshoot and code from within Revit, and then once your macro is working you can convert your new macro to a button through an application on Microsoft Visual Studio.

https://www.visualstudio.com/en-us/visual-studio-homepage-vs.aspx - Download Visual Studio Community 2015 (Free)

Another great reference, thanks to Konrad Sobon with arch laboratory (http://archi-lab.net/) he's gone over the initial process of how to create an appropriate button with resources for a Revit application.
You can follow his tutorials in the following order for best results, and be sure to thank him for his hard work he's put into sharing the right way of making a Revit toolbar.

This compilation of resources is probably one of the best set of resources for compilation of a Revit Application from External Commands to an Application toolbar.


After all of this time learning and researching the syntax of c#, to the proper execution of macros through sharp develop, and understanding our workflow we were able to start compiling some of the code into buttons that helped form the final toolbar. Below is a list of each button, the code associated with the button, and a process behind it. We're not expert code writers quite yet, but with time and persistence we will get there!

The Buttons behind the Spool O' Matic 9000:

The following is a description of each button and what they do. The procedure of when to use each button is something that will be covered through employee training.

1. Ungroup Assemble
The ungroup assemble tool is utilized to ungroup and assemble any group placed from Unifi. All groups that exist in Unifi are initially placed and then ungrouped and then assembled with this button. The button will sequentially number each ungrouped and then assembled group until finished.

2. Renumber MEP Tool
The renumber mep tool will allow the user to select a series of items, and then click finish, to begin renumbering all the items in a container from the selection. This allows for consistency in what you've chosen to renumber, and will not execute until all items initially selected have been clicked on in the sequence wanted.
3. Renumber Tag Left
The renumber tag left will repeat the renumbering mep tool process; however, it will place a tag after each selection to the left of the items being renumbered.

4. Renumber Tag Right
The renumber tag left will repeat the renumbering mep tool process; however, it will place a tag after each selection to the right of the items being renumbered.

5. Create Initial Assemblies
This tool will create the appropriate views, sheets, and schedules based on each assembly, in the order selected, that you select. This tool will also renumber the ungroup assembled assemblies in sequential order. It is important to use this tool in order from beginning to end to ensure accuracy and consistency in your spool drawings.

6. Create Post Assemblies
This tool will create assemblies after you have completed the assembly process. If something has been forgotten or changed this tool will find the numbering problem and make the appropriate changes necessary and sequentially number appropriately.

7. Renumber Assemblies
This tool will renumber all the assemblies in a project appropriately from "AS1" on. This tool allows for the numbers to be modified or changed should project changes occur.

8. QR Code Generator
This tool will generate a QR Code Associated to the assembly name. This allows for field technicians to scan the item in the field and send an order in to the shop for the corresponding assembly. This allows for assembly management and coordination with the shop and foreman.

9. Harvey's View Templates
This is an efficient tool to apply specific view templates to new views created in the document. The names of common view templates are in a drop down format that will allow for the users to modify and make changes to the views as necessary.

10. Remove View Template
This button removes the view template from any associated view you are in.

11. Harvey's Section Box Tools
These tools add and remove a section box from the 3D view you are in. This eliminates the need to consistently scroll through your properties browser to make changes to the document and expedites the users productivity.

12. Pipe Order Form
The pipe order form button exports the pipe schedule from Revit to Excel.

13. Pipe Fitting Order Form
The pipe fitting order form button exports the pipe fitting schedule from Revit to Excel.

14. Manual Pipe Calculator
This button allows the user to select a series of pipe and adds the value to a task dialog window that shows the user a total length of pipe calculation in the drawing.

15. Email Order Forms
This button opens up an email form to send to the shop manager.

16. Email with Attachments
After generating the Pipe Order and Pipe Fitting Order Forms. The user can click this button to email instantly to the shop manager. This ensures consistency and quality control of all documentation sent to the warehouse manager.

17. Calculator
This opens the windows calculator from within Revit.

18. Harvey's Resources
The Harvey's Resources tool contains a series of webpage links that are associated to everyday working tasks at Harvey's Plumbing and Heating. This expedites the need to find a particular web browser and page and allows the user to select a list of favorites.

How to effectively utilize Harvey's Spool O' Matic 9000 at Harvey's Plumbing and Heating:

1.) Always initialize a project from the HPH Template 2016. This ensures the tool will work appropriately. The tool-set is aligned to the template file, so that should something change in the template it will be mandatory to evaluate and re-release those changes in the toolbar. This ensures accuracy and quality in our toolbar.

2.) Read the descriptions of the buttons above, and ensure you have a full understanding of the process for each button. These buttons will ensure consistency and success in Harvey's Plumbing and Heating's spool drawing success.

3.) Be trained by Brian or Tyler in the efficiency of the toolbar, and understand when the tool bar is necessary in the spool drawing creation process.

Creating the installer:

The installer is compiled utilizing inno setup. Inno Setup makes the releases of the source code and overall application much easier for deployment on all systems. There are some great instructions on how to effectively use this application for compilation on their website.


Anytime the code has been modified and updated/released in the 2015 Visual Studio folder. You will want to run the inno setup file. The inno setup file once pointed to the compiled .bin and .addin files for the Revit application will remain; therefore anytime the files are updated for a mass release you can click build in Visual Studio, and then Build in inno setup. This will compile the installer quickly. The harveysph.exe file is pointed to be saved in the same project folder as the Visual Studio project to ensure a quick 1... 2... 3... export and upload to slack for releases. This ensures that if a quick modification to the code needs to be made that it can be built released and installed quickly.

It's important to note that all people reinstalling the application should uninstall and then reinstall the new version. I have experimented with just installing over the old, but it's good practice to just uninstall, and then reinstall. Maintains consistency and reduces potential errors.

Initializing the installer across multiple computers in a firm setting:

Simply release the executable file to the #harveys_design channel for all employees to install at the beginning of their shifts.

Inno Setup Launcher Interface. (Run the wizard for an easy step by step process)
Slack Communication Tool:


Here's where to download Slack. I mean, if NASA uses it, why shouldn't you be able to, right?

Thanks Fausto Mendez for being an amazing mentor and friend, and thank you to everyone else mentioned in this post who have contributed their time and knowledge to help people find answers to their questions!


  1. This comment has been removed by a blog administrator.

  2. Thanks for your time on putting these all together.Your blog has a lot of valuable information . Really helpful blog..I just wanted to share information about
    power bi training