Graphic Programming – Revit Tags In

In continuation of the progress we’ve made in space planning with Grasshopper, we’ve seen a need for something similar for Revit.  When we first adopted Revit as our production platform we tried to solve this with a simple mass family that had parameters tied to a schedule, but it still required a lot of manual input in order to get the information into Revit.  Part of this data input could be mitigated with with third party plugins, but there was still some functionality that we found lacking.  Regardless of the somewhat clunky workflow, the results could be quite good.

Space Programming

Our next push for programming in Revit consisted of developing a plugin in-house that we could mold to our needs and workflows.  What we’ve ended up with is a plugin that consists of four commands.  Two work together to import and modify mass elements based on an Excel file, while the other two are independent mass related commands.


Whenever you’re bringing data from one platform to another, formatting of that data is always going to be important.  For this tool the most important rule for formatting is that the first six columns are always the same.  There’s an Export function in the command to create an empty file with just the headers to aid in this, though if any thing is off, be it column order, capitalization, or spelling, the command will be unable to process the information.

Revit Program Excel Format

Beyond that, the formatting is fairly flexible.  To create a mass, it just needs a ROOM NAME and ROOM NUMBER.  If any of the other pieces of information are missing it will still generate something.  For DEPARTMENT and ROOM TYPE, the last specified value is remembered, so it doesn’t need to show up in every line.  If QUANTITY is missing, it assumes a single element, and if PROGRAM AREA is missing it sets it to zero and makes the resulting box a 10′ x 10′ cube.  You are also free to add additional information in subsequent columns that can be mapped to other parameters or ignored.

When the command runs, it will layout the resulting families by each DEPARTMENT/ROOM TYPE with a 10′ spacing between each component.

Initial Space Layout

The last two commands will facilitate working with the masses after they’ve been brought in.  The Align Masses command will take a selected set of masses and array them in a line, horizontally or vertically with the ability to sort and control the spacing.

Revit Mass Layout

The Mass to Room command will map the information in the mass family to similar parameters in a room object, and place that room within the boundary of the mass’s footprint.

[download id=”31″]

[download id=”48″]

Updated GH Graphic Programming tool can be found here.


  • Jordan Gomez

    What folder do the downloaded add in files need to be dropped into in order to start using this plug-in?

    • Tim Logan

      The files should be copied to one of two places. To install it for a single profile, copy them to %APPDATA%AutodeskRevitAddins2014. To install it for all profiles, copy them to %PROGRAMDATA%AutodeskRevitAddins2014.

      %APPDATA% and %PROGRAMDATA% are environment variables for Windows that get mapped to a location depending on Windows version and user. Just copy the whole address with the variable into the Windows Explorer address bar, paste it in, and hit Enter to get to the right spot.

  • John P

    I placed the files included in the download (LMN.Revit.ProgramImport.dll and LMN.Revit.ProgramImport.addin) in the appropriate folder and I get the following error.

    “Revit cannot run the external application “LMN Programming Import”. Contact the provider for assistance”

    • Tim Logan

      I’ve just tried downloading and testing it on a couple of computers and it runs without an error. If you click on the Show Details arrow what does the error say? The first thing that comes to mind is System.TypeLoadException, in which case errors have been introduced into the ADDIN file and replacing it from the downloaded one may solve it.

  • John Bund

    Hi Tim,

    I enjoyed your presentation on the tools at the CADD Mngr meeting. I’d like to meet sometime to discuss the programming side of things. I’m just getting into it.

    Thanks again,


  • Will Payne

    I receive the same error noted above. The details say:

    Could not load file or assembly
    ….LMN.Revit.ProgramImport.dll’ or one of its dependencies. Opertation is not supported. (Exception from HRESULT: 0x80131515)

    The Add-Ins do show up in Revit but nothing is functional. Thoughts?

    • Tim Logan

      Perhaps the LMN.Revit.ProgramImport.dll file is blocked. Can you right-click on the file and go to it’s properties? On the General tab at the bottom there may be a button named Unblock. If there is, unblock it and try opening Revit again.

  • Jean-Frederic Monod

    Great plugins ! Very helpful.
    I was wondering if the “Width”, “Height” & “Depth” fields for the blocks could also be added to the Excel file. I typically have that information in the program and it would be good to be able to enter it as well. Maintaining the default “10′ box if null” option of course.

    Thanks for all your hard work.


  • Jean-Frederic Monod

    A quick question regarding the ROOM NUMBER field. Why is it necessary to enter a room number when there is a “QUANTITY” field ? This basically ensures duplication and confusion down the road, doesn’t it ? Or does it generate rooms 101A, 101B, 101C … ?

  • Tim Logan


    You can add the additional parameters after the last default column. Certain parameter mappings are built in and expected based on those initial six columns of information, but you can choose to add more columns to the excel file and map those too. if you look at the video, at about the 2:30 mark the second form pops up and I specify the height again, this is because I had an extra column in the Excel file named Height. It’s currently not smart enough to pick up on redundancy like that, but you can add as many parameters as you want and map them through the form.

    As for the necessity of Room Name and Room Number both, we just thought that would be the minimum data that we would have and helps us identify them. It’s not adding an additional character just yet, but it is something that I’ve been thinking about and I’ll probably evaluate how we handle quantities the next time I revisit the plugin.

  • Tom Perica

    Great plug-in thank you.

    Is there a way for the room name, actual area and target area to show up as text on the mass once they are imported into Revit? I saw on your Vimeo posting that you have done so on Grasshopper. Is it possible in Revit?

    • Tim Logan

      It’s possible, though how is dependent on what you want. If you want text that’s visible in plan I would recommend using a tag that reports those properties or possibly nest a Generic Annotation family into the mass that displays those properties from it.

      If you’re looking for something that shows up in 3D you will probably have a little more trouble with it. 3D views won’t show a nested generic annoation family, but do allow tagging as long as the view is locked. If you want to be able to still work by orbiting in that view then tagging won’t be a possibility. You could create a generic model that’s made up of Model Text and nest that into the mass, but Revit won’t automatically convert number based parameters (lengths, areas, etc.) into text that you can feed into the model text. So you could easily become out of sync with your target and actual areas with what’s really there vs. what’s visible in your model text.

  • daniel nielsen

    Very interesting plugin!
    Unfortunately I can not get it to work.
    When I try to import and create Masses a window pops up saying something about “Unable to start a new Excel Interop session with the selected file. Exception from HRSULT: 0x800401E6 (MK_E_INVALIDEXTENION”
    Is it because I need to have Excel installed and not only Open Office?
    The files is not blocked.


  • Kevin

    Could this tool be used for Urban Planning in a similar way? HOK has used Revit for Urban planning but you have to create quite a bit of content and may schedules to enable it to happen.