Extending Revit with “Apps”
As hard as software vendors try, they will never be able to add every feature you could possibly want. That is why they focus on proving tools like APIs and SDKs to allow users and third-party developers to build on top of and extend the manufacturers’ platforms. We’re going to take some time to talk about custom programming, some of the tools we have been releasing, and some great places to find more third-party applications.
Revit APIs and SDKs
Figure 1: Starting a project in Microsoft Visual Studio. For more on building add-ins check out http://revitnet.blogspot.com/2012/04/revit-api-training-10101.html
If you want to use software, you use the buttons and graphic commands it provides. If you want to extend software, you need to look at the API and SDK. For a little background for the non-coders out there, an API is an Application
Programming Interface, basically a way to work with an application via programs (code). What you mainly work in is the GUI or graphic user interface. The SDK is the Software Development Kit—the instructions and documentation for how to develop on top of a platform (i.e., use the API).
Now that we have those definitions down, how does this relate to you, and more importantly, the tools you use? We’re going to talk mainly about Autodesk® Revit®. For those of you who don't know, Revit was not originally created with an API.
This made it tough, initially, to extend Revit as a platform, but since Autodesk acquired Revit they have created an API and made it better with every release. All new features added to Revit are accessible via the API. When scheduling permits the Revit team also goes back and adds old features previously not accessible. The Revit API is so complex that it has its own product manager and team. Revit 2013 has seen a ton of new improvements and is really starting to open up the possibilities for what can be done on top of Revit.
Figure 2: apps.case-inc.com is where we are hosting free Revit Applications that are released monthly.
As a direct result of the Revit API becoming more and more open, one of the fastest growing parts of our business at CASE is software development. As a way to play with features in the Revit API we are releasing a new "App" every month at http://apps.case-inc.com. We have also recently started a Revit API 101 series for anyone that wants to try and learn to code their own add-ins (http://revitnet.blogspot.com/search/label/Revit%20API%20101).
Besides exploring new features in the Revit API, we want to promote what can be built on top of Revit and reinforce the idea that you are not limited to features that come out of the box. We also want to push ourselves to make minimal yet useful applications so we imposed some time limits on how much time we spend in originating the apps. The basic rule is that the first version of the app has to be launchable with a day or less of work. That helps us keep the tools very focused and solve a very specific need (i.e., “Change and Replace Line Styles”). Apparently, people are using them; we’re averaging about 300 uses per day across all the applications. Here are some of the ones that people seem to be using quite a bit
Figure 3: Extrude Rooms to 3D Mass – This tool will extrude the boundaries for each room in your model to a 3D mass as a separate conceptual mass family and load it into your model placed exactly where the room is.
Figure 4: Revision Cloud Data Export to Text File – As you are all surely aware, Revit does not offer a means to schedule individual revision cloud elements. This tool will export all instances of Revision Clouds along with the revision name, date, and description that they belong to. The view and/or sheet that the cloud element is on is also exported along with the comment data entered directly onto the element. This tool rocks for blasting a quick revision report for your revision related needs.
Figure 5: Door Mark Updater – This little guy uses the room number of the room adjacent to the door to number each door mark parameter. Where multiple doors are along a common room number, the remaining doors are numbered alphabetically suffix of the room number (1001A, 1001B, etc.). You will have the option to update doors by selection, common level, or the entire model all in a single click.
Figure 6: Change and Replace Line Styles – Have you ever imported a DWG file into your model and got a bunch of unwanted line styles? Have you ever wanted to quickly change those line styles to your standard styles already loaded into your model? This tool does just that.
Like we have seen with many of the other App platforms (iOS and Android), it soon becomes difficult to manage and find the best or most relevant apps. Enter the “App Stores” and communities. Here are a few places you can look to manage and sort through the ever growing list of apps that can extend your BIM workflows.
Figure 7: Autodesk Exchange Apps site
With the release of the Revit 2013 platform, Autodesk also opened up the Autodesk Exchange Apps site (http://apps.exchange.autodesk.com/RVT/2013/en/Home/Index). It was already open for AutoCAD, but now has a bunch of great Revit Apps. One of the great things about this is the distribution for App developers. The link to the site is embedded right within Revit. There are still some logistics to figure out as far as the enterprise distribution and support of Apps goes, but this looks like a really promising direction.
Figure 8: Revit Application Store
The folks over at Astacus Labs AB have put together a great site with a slew of Revit Apps as well as some great ways to manage them and quickly install them. Head over to http://www.revitapplicationstore.com/ and check them out.
Figure 9: Revit Add-ons blog
Tim Grimm was a little frustrated with tracking down all the great apps that people are releasing so he did the community a favor by creating http://revitaddons.blogspot.com/. Tim does a great job of posting links to all the Apps he finds and gives full attribution to the authors. One of the toughest challenges being presented by the endless distribution possibilities of digital media is findability, and one of the things people can do to provide great value is to take the time to curate and point people in the right direction. Tim is doing just that.
Figure 10: AEC apps
Last year we were working on a project with SOM (http://som.com/) and needed to build a list of all the third-party apps out there for the AEC industry. We began by asking around the office and that worked for a bit, but we quickly lost track and it became very difficult to manage. At that point we proposed to SOM that we crowd source the list and do in such as a way that it operated more like a community/wiki. Enter aec-apps.com. The intention is not to create an “App Store,” rather an organic database of all the applications relevant to the AEC community. We’re hoping it goes way beyond just Revit Apps and people start to post other scripts and link to software that enhance BIM workflows. Look for a complete site overhaul in the next few months.
The AEC industry is seeing an explosion of technological innovation and it is only going to grow. We are going to keep seeing new platforms and those platforms are going to allow for the expanded workflows and techniques. As problems arise and as the APIs continue to evolve, we will see great applications that can solve these issues. That being said, it is also becoming easier and easier to learn to code. We hope that the main take-away is that any application that has a robust enough API can be extended beyond what comes out of the box and they should be seen as an opportunity and not a challenge.
David Fano (@davidfano) is a founding partner of CASE, a virtual design and construction (VDC) and integrated-practice consultancy based in New York City. At CASE, David is primarily responsible for leading technology implementation, knowledge capture and sharing, social media initiatives, and business development. He has provided firm-wide BIM support, training, and guides to clients such as Woods Bagot, Pelli Clarke Pelli Architects, and Skidmore Owings & Merrill. David has also contributed to the design industry with the development of DesignByMany.com, a challenge-based virtual design community, and DesignReform.net, a digital design publication and free tutorial resource for design professionals.
Don Rudder (@aybabtm) is the CTO and Director of Software Development at CASE and focuses on the creation and management of specialized software and add-ins for various applications developed for client support. With over 16 years of experience in the AEC industry, Don has held positions as CAD manager for Harris Consulting Engineers in Las Vegas and BIM Manager at HOK in San Francisco, supporting the architectural and MEP groups. He subsequently became the Revit Applications Developer firm-wide. Self-taught in 14 programming languages and versed in .NET, web-based AEC tools, and pretty much any kind of automation, Don has presented at Autodesk University and the Revit Technology Conference. He has also written the last three API chapters for the Autodesk Official Training Guide Series, Mastering Autodesk Revit Architecture.