Revit Schedules & populating them from a predefined list

When I was using Revit to to data capture for existing buildings the team used RTV Reporter Pro that took the room data and shared parameters in Revit for a specific model and then put the data in a MS Express SQL database. It then had an interface add-in in Revit that allowed you to populate the Revit Shared parameters and this data could then be exported to the database and be mapped to an AMIS (Asset Management Information System).

I wondered about doing this without the database but just using import/export of schedules from Revit to Excel and back again.

The reason being trying to populate Revit Schedules is frustrating, you can only do it one cell at a time, so it can be very tedious if you have 1/ A lot of columns of data to fill in & 2/ A lot of rows of data, eg 20 rooms in the model (or 200 etc). So is there an easier way.

My initial thought was to export from Revit Schedule to an Excel Sheet and then try and hook up that worksheet to a lookup table, like Vlookup in Excel to be able to populate the information such as Floor Substrate (Timber T & G, conc etc), Floor Finish (carpet/Vinyl etc) with the same level of detail for walls and ceiling.

Rushforth Tools & BimOne Excel Import/Export Add-ins

I tried both of these tools using a Door Schedule. In the Rushforth Tools export to Excel it exported all the Door parameters, but the room parameters did not come across (as they related to the Room Category), so although I got some of the data across I didn’t feel it was enough.

The BimOne Import/Export to Excel also had a few bugs in what it actually exported, in that it locked some parameters that were empty, so I couldn’t use the Excel Sheet to populate those columns unless I unlocked those cells.

One thought I had for the Rushforth tool was to make Shared Parameters mapped to all the categories so that I could map the From Room & To Room parameters from the Room Category across to other categories, then the Rushforth Excel Export would work for Doors, and for other categories as well.

So that meant creating a lot more parameters, and these would be intermediate ones used only for reference.

At this point I put that process on hold and haven’t, to date, explored using VLookup to have a library of lists for individual parameters.

The library lookup is for validation, as you are controlling the text going into the schedule it minimises mis-spelling or using the wrong term (in one AMIS, ceiling substrate was defined as “gibraltar board” whilst the wall substrate was defined as “gib-brd”, so if you switched them the data would be in error in the AMIS. So the library lookup is important to help validation.

AutoHotKeys (AHK) Scripts and Text Expanders

The next thing I looked at was AHK scripts or a text expander that you could map a list of information to a fast key and it will script the longer string of information in a cell , eg type c1 (Spacebar) and it autoExpands to “Carpet Cavalier ltd 100%Wool, pattern ABC, colour Blue“.

I’ve just done a productivity video on using some AHK’s that I use all the time and also remapping keys (one I saw mapped the tilda key to Enter, so my laptop now has an Enter Key on the left of the keyboard too.

When I looked into this, after setting up a Room Schedule, I realised there was a lot of data that needed to be filled in, so putting data in one cell was not going to be effective, you’d need to have a string of data like “Gib lining” TAB “Paint Fin” TAB “White”. So one key would autoExpand and fill out Column Ceiling Substrate , then Ceiling finish, then Ceiling Colour. But I havent found a tool to do that yet.

The reason for TextExpanders is that they run in any application, so you can use them in revit but program them outside of Revit. So you don’t need a special Add-in to Revit to do this.

Revit Schedules and Key Schedules.

One method of populating a number of columns in a row is by using a Key Style Schedule where you have several types with lots of items, such as a room schedule with Wall Substrate, Wall finish, Wall colour, and you have one key value in the room schedule and a specific variation will populate all the parameters if you select the appropriate key item.

This can be a bit complex if you use too many values, but it is a method that could be quite effective.

The issue with Key Style Schedules is they only work with project parameters, so you need to create the project parameters in your Key Style Schedule and use them in your Category Schedule. So Shared Parameters don’t work.

This is fine in a single project, but you then have to map across multiple projects, so you have to copy or make those Project Parameters in a new model file. Or possibly use a Template file where they are already setup.

I have a link to a process where you can export a Schedule to a new file from a YouTube Video I saw. So if you import from that schedule (only category schedule NOT Key Style Schedules (cannot be exported as a separate project), so you can import the Project parameters (and headers for the Schedule into the new project, also the View Template can come across too. So you can bring part of the setup across from one project to another, then you just need to build your Key Style Schedule and populate it.

Next steps being explored

There are a couple of ideas I’m perusing now,

  1. See if Rushforth can Export/Import Key Style Schedules, This may be an effective way of populating the Key Style Schedules with data that can then populate the main category schedule.
  2. textExpander may be effective with short keys for say Rm1, Rm2, for Wet room type and Dry room type, or more complex Room, Door, Window types etc.
  3. Find a Script that will do “Text” TAB “Text” TAB to populate a row of data in Revit and then look at a way to automate the script using Google Sheets or Excel with Split/Concatenate and build a script based on all the elements that you want for specific categories.

Rushforth can Export/Import Key Style Schedules

Yes, this works, as the Key Style Schedules have parameters that are in the appropriate category they can be exported/imported. So you can build the Key Style Schedule in Excel and re-import it.

You still have to get the Key Field mapped to the regular category schedule to bring in the data for that row.

So this is a successful method of populating parameters inside Revit so that you can then export them to 3DPDF or a 2D schedule setup.

AHK scripts for populating multiple fields and autoExpander keys

This was also successful. There are 2 methods you can use to push data in:

  1. With Hotkeys such as Ctrl +1 to have a specific row configuration
  2. With autoExpander for a key such as c2 followed by spacebar.

This also works in Excel/Google Sheets as well as Revit schedules,

so you can test in Excel/GS and then just use the mapped keys directly in Revit. This is useful if there is a lot of repetition of the same rows of data in the Key Style Schedules across multiple models.

Also if there are variations, domestic stand alone and apartment structures that each have different standards, you can have different AHK files to run when you need them.

Also , with AHK scripts you could end up with a Excel/GS setup to compile the different variations and build a script from a spreadsheet. That would allow you to build different Key Style Schedules on the fly or easily edit existing ones. That may be a fun tool to develop.

Video on processes above

Afterthoughts on Dynamo & AHK

After using the AHK method for filling out rows of data, I reflected on the 2008 video where truevis888 used AHK to read from a .csv file and then populated the Revit schedule from 1 hot key (see vid below).

This method could b e done in Dynamo too, being able to select a CSV file and using it to populate the fields. Its just not my preferred tool. So no rocket science here, just a preference on method. The AHK will work in other programmes, dynamo only in Revit.

Watching his video again, I picked up he’s doing a mouse click a number of times, he has a pop-up box to allow for selecting the number of times required, for clicking new room, so creating NEW UNPLACED ROOMS with all the data , that he can the auto populate with data from CSV file. So you have to setup schedule columns in correct manner first.

I was thinking of placing rooms in models first, then Exporting via Rushforth or BimOne Import/Export Excell,( also another free add-in from DiRoot SheetLinks that I’ve yet to try) populating in Excel & then, if data setup with correct order for say room numbers (both in Schedule and Excel) then use AHK to populate with script:

^+2:: ; ctrl+Alt+2 to
FileSelectFile, OutputVar ; File Selected goes to “OutputVar” variable, when using put between % % then AHK knows its a variable
; Text for popup box instructions
tx =
Put in integer for
number of columns
(1500ms delay)

; Input box for user input number of clicks
inputbox, b1, Box #1,%tx%,,50,250
; pause to allow time to move curser over button
sleep 1500

Loop, Read, %OutputVar%
Loop, parse, A_LoopReadLine, CSV
Send %A_LoopField%{TAB}

Send `r
Send +{TAB %b2%}


End comment

I’ll now need to do another script to auto-click mouse a selected number of times and add it to that script.

An interesting journey through the process. I may do another quick video on how to upload CSV data to Revit Schedule and issues.

I’m very happy about the validation of data process in GS or Excel with pull-down lists to select from, I need to do a test run to see if I can do that for lots of items.

Maybe a follow up with Putting into a Shared Parameter Room Schedule, then you can use filters to select multiple instances and then populate once, eg Floor Substrate ” timber” could be selected for all, so collapse/filter to one cell and select appropriate look-up field.

Actually, with filter you can show the rows you want, but you cannot collapse them into 1 cell, so you have to pull down list, select, then copy/paste to the other cells. That works.