June 28, 2018

Here comes another solution for efficiently compiling add-ins for multiple Revit version targets from one single code base, a note on resources for CAD term databases for consistent terminology translation, and a discussion on accessing custom texture maps in Forge and Revit
– Multi-targeting Revit versions using TargetFrameworks
– Further enhancement using the CSPROJImport tag
– CAD terminology resources for consistent translation
– Showing a custom Revit texture map in the Forge Viewer...
Read more →

August 17, 2017

A biggish post rather late in the week... still answering too many cases
– Forge for AEC demos and sample code
– Determining the starting view
– Detecting installed Revit version
– Detecting installed C3D version
– Moving items inside a detail group
– Filtering for family instances and types by family name...
Read more →

April 27, 2017

I updated the Visual Studio Revit C# and VB add-in templates for Revit 2018.
They enable you to create a new C# or VB Revit add-in in Visual Studio with one single click on File > New > Project... > Visual Basic/Visual C# > Revit 2018 Addin and define a complete skeleton Revit add-in, ready to immediately compile and run, including an add-in manifest file, external application and external command.
Just hit F5 to start debugging; the add-in manifest is installed, Revit launched and the command is immediately available...
Read more →

April 22, 2017

Revit 2018 has been released.
The Revit 2018 SDK is available from
the Revit Developer Centre.
I migrated RevitLookup and The Building Coder samples.
Finally, the call for proposals has opened for the Forge DevCon at Autodesk University in Las Vegas
– Revit 2018 Software Developers Kit
– RevitLookup 2018
– The Building Coder samples 2018
– Forge DevCon call for proposals...
Read more →

February 20, 2017

Last week, I presented Andrey Bushman's new Visual Studio templates for Revit add-ins.
Furthermore, we discussed many aspects of edit and continue in the past, including the solution to use the Add-in Manager.
These two topics have now met and united, because Andrey added support for that and a bunch of other new functionality in his commit...
Read more →

December 20, 2016

Most of the work of the year has been done, and it is time to settle down and clear out for the new.
Tomorrow is the winter solstice, followed by Christmas and Yuletide, ending with the Twelfth Night.
For me, this is a time of retreat, calm, reflection, and renewal of energy.
Today brings a nice gift from Andrey Bushman
– NuGet Revit API package
– RevitLookup using the NuGet Revit API package
– Creating a NuGet package from assembly DLLs
– More NuGet packages...
Read more →

September 01, 2016

Topics for today
– How does code signing of Revit add-ins increase security?
– What happened to LoadCaseArray?
– How and where to search for help on a Revit API question?
– Dynamo 1.1 Update...
Read more →

May 13, 2016

I updated the Visual Studio Revit C# and VB add-in wizards for Revit 2017. They enable you to create a new C# or VB Revit add-in in Visual Studio with one single click on File > New > Project... > Installed > Templates > Visual Basic/Visual C# > Revit 2017 Addin. The wizard creates a complete Revit add-in skeleton, ready to immediately compile and run. Just hit F5 to start debugging; the add-in manifest is automatically created, copied to the proper location, Revit launched in the debugger, and your shiny new add-in is available in the external tools menu...
Read more →

April 19, 2016

Revit 2017 was released yesterday.
Here is the official Autodesk statement stating that Revit 2017 advances BIM for the future of designing buildings.
I downloaded and installed my version from the Autodesk Revit family free trial web site.
Let's look at what I did to install and first add-in compilation experiences
– Uninstalling prior versions and cleaning the registry
– Dummy API assembly folder for compiling samples
– Resolving hiccups compiling Revit 2017 SDK samples
– RevitLookup for Revit 2017...
Read more →

April 05, 2016

Here is a Revit API add-in installation issue that came up in various forms in the past and now again in the context of Windows 10 configuration: I have a plugin that has been working fine for all pre-Windows 10 platforms. Under Win10, the DLL loads into Revit.exe correctly. The add-in manifest contents are displayed correctly in the Revit UI. When I issue the command, however, nothing happens...
Read more →

February 05, 2016

I am going to the University of Bern this afternoon to listen to Richard Stallman speak For A Free Digital Society.
Here are some other recent and not-so-recent topics
– BIM 360 Docs
– Richard Stallman in Switzerland
– Is the abc conjecture proven?
– Add-In Folders
– BIM 360 Docs is the new Autodesk platform for construction document management.
It provides web services to ensure that the entire project team is always building from the correct version of documents, plans, and models...
Read more →

December 10, 2015

It's been a while since I talked about REX. Some old dedicated posts include
– The REX SDK
– Extensions for Revit 2012
– REX Content Generator.
More recent mentions occur in my discussion of a framing cross section analyser with and without REX and its migration to Revit 2015. Now the time has come for another look...
Read more →

August 21, 2015

I recently mentioned the unrestricted VendorId in Revit 2016, and pointed out that I would like to update the Visual Studio Revit add-in wizards accordingly. I now went ahead and did so, adding a couple of other enhancements as well along the way – oh, and I did some work on putting my personal calendar online, as well: Sharing a calendar via GCal, Google API, and GitHub Pages. Visual Studio Revit add-in wizards on GitHub. Updated VendorId tag value. Wizard...
Read more →

May 15, 2015

Here are a bunch of infos on and updates for Revit 2016, as well as some important hints on the use of the ElementTransformUtils.CopyElements method: CopyElements view argument is for 2D only Revit 2016 scalability enhancements Revit 2016 Python shell Revit 2016 Ruby shell RevitLookup for Revit 2016 CopyElements View Argument is for 2D only You should only use the ElementTransformUtils.CopyElements views argument when working with view dependent elements, i.e., 2D elements. This was pointed out by Arnošt Löbel in...
Read more →

July 14, 2014

I was away for a few days last week in the beautiful Italian speaking southern part of Switzerland. Back again, as usual, I am confronted with a host of Revit API issues. The most important event last week for me by far, though, was the release of the Autodesk View and Data API. Some of my Autodesk University related tasks and upcoming meetup events are also related to that: Autodesk View and Data API View and Data API presentations Autodesk...
Read more →

May 29, 2014

As you certainly know by now, the Autodesk Exchange Stores provide an efficient means to showcase and distribute your applications addressing a large world-wide audience. Furthermore, it is very easy. As krispy just said in this Revit API forum thread on creating an installer for a Revit application, "You can just zip up the files they require (dll, addin, etc.) and upload that... the exchange app team will create the installer for you. They are pretty good with telling you...
Read more →

November 22, 2013

The officially supported development platforms for Revit add-ins are Microsoft Visual Studio 2010 and Microsoft Visual Studio 2010 Express Edition. The important factor is really only the .NET environment, Microsoft .NET Framework 4.0. Of course, you can also use the built-in SharpDevelop development macro environment. This information comes directly from the horse's mouth, i.e. the Revit 2014 API Developers Guide – happily, back online again – section on requirements. The Revit Python Shell and Revit Ruby Shell, based on IronPython...
Read more →

May 14, 2013

I have been asked a couple of times how you can integrate multiple Revit add-ins from different sources together into a single ribbon panel. This topic has also been discussed on the web, e.g. towards the end of whether to install to the add-ins tab or make new ribbon tab, and at Autodesk University, where Jose Guia presented CP3766 – Tying All of Your Revit Add-ins into a Pretty Little Ribbon. Unfortunately, none of these offer any very useful solution,...
Read more →

April 26, 2013

Here are some notes on the small issues I encountered compiling the Revit 2014 SDK: Compile and install RevitLookup Set up the Revit API assembly paths First compilation run causes expected errors Set up the RevitAddInUtility assembly path PointCurveCreation Office reference CancelSave RevitAddInUtility Reference Set up the RvtSamples application Fix errors in RvtSamples.txt Download RvtSamples and RevitLookup I already described this same process during the Revit 2013 timeframe. Let's see if anything changed, or, better still, improved. Compile and Install...
Read more →

April 17, 2013

Every year anew, people ask for the Revit product GUIDs used to identify the Revit installation and stored in the Windows registry under HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall I already answered several queries from developers lately wishing to update their installers for the new version. I discussed this topic on a yearly basis in the past for Revit 2010 and previous versions, Revit 2011, Revit 2012, when the 'perpetual GUID algorithm' was introduced, and Revit 2013. The install path is less of an issue...
Read more →

April 05, 2013

I am regularly forced to return to this topic, to provide a useful starting point for beginners. The amount of available material is getting huge, and some help is required deciding where to start exploring the Revit API. The most important thing to be aware of is the Revit Developer Center. Start there by looking at the three DevTV video introductions and then work through the My First Revit Plug-in tutorial. In these tutorials, you are shown how to locate,...
Read more →

January 16, 2013

Last week's updated Revit demo mode determination prompted a lively discussion between two strong Revit API experts and blog contributors, Victor Chekalin and Rudolf Honke the Revitalizer, partly on how to further improve the demo mode detection, and mainly on the value and risks of using unsupported features in your products. The thread is well worth a read, and I like Victor's final suggestion of reading the Revit serial number instead of using the language dependent title bar caption enough...
Read more →

January 11, 2013

Almost a year back, we talked about how to determine whether the current running Revit application is a demo version or not. The initial suggestion was to test this by trying to execute real functionality modifying the model and then save it. That obviously incurs significant overhead and may cause other problems as well. Rudolf Honke suggested simply reading and evaluating the Revit main window title text instead. Now Madmed created and posted an implementation of Rudolf's idea. I took...
Read more →

June 29, 2012

I finally completed my disk clean-up and managed to install the Autodesk Building Design Suite Ultimate 2013. Phew. Update API Assembly References That requires me to update the Revit API references in the projects I am working on accordingly. In order to easily compile all the SDK samples, I always create copies of the Revit API assemblies in the default installation locations for Revit Architecture, MEP and Structure. Here is the batch file cprvtapi.bat that I used to achieve this...
Read more →

April 13, 2012

Every year anew, people ask for the Revit product GUIDs used to identify the Revit installation and stored in the Windows registry under HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall There are different keys for each of the three Revit flavours, plus the Revit 2013 one-box solution, and for 32 and 64 bit operating systems. We discussed this topic in the past for Revit 2010 and previous versions, Revit 2011 and Revit 2012, when the 'perpetual GUID algorithm' was introduced. The install path is much less...
Read more →

March 19, 2012

Here is yet another interesting example of an apparent gap in the Revit API that can be easily filled using a little workaround. We have seen numerous examples of performing a certain operation within a temporary transaction that is then rolled back to cancel it, such as to determine gross material quantities for an element with openings, a host reference and, more generally, all object relationships. Here is an example of using a related but different approach: the trick consists...
Read more →

March 12, 2012

Here is a short note to start the week, on an issue that arose a couple of times using mixed mode C++ development in Revit 2012. This information was originally published on the members-only ADN web site as a technical solution on the development environment for mixed mode C++ for Revit 2012: Question: I have a mixed mode C++ application. When I run it on a machine where no version of Visual Studio was ever installed, I see the following...
Read more →

January 12, 2012

Question: I have registered for a hands-on Revit API Training, but I have little experience in programming, and almost none in .NET or C#. How can I prepare for it to make best use of this opportunity? Answer: This is actually all described in the discussion on getting started with the Revit 2012 API. Still, let's highlight some of the points and put them in proper order for you. The first of the following items is of interest for anyone...
Read more →

October 31, 2011

Back from my vacation in Andalusia, and now moving full speed ahead towards Autodesk University, my lecture and hands-on lab on the Revit extensible storage API and all the other exciting goodies there. Meanwhile, here is one little issue that immediately arose with the Revit String Search utility published last week: Probably the most common problem that people keep running into with add-ins on Windows Vista, both in Revit and other environments, is the need to unblock the zip file....
Read more →

October 07, 2011

Here are several interesting updates and other little news items that appeared recently. Revit 2012 update release 2 Visual Studio Revit add-in wizard update Removing an Add-In Registered by the Wizard Global Leadership Summit at the One Team Conference Revit 2012 Update Release 2 A few days ago, I was very surprised to hear that some people neglect to update their Revit products when intermediate updates appear. I find that incomprehensible. I updated all three flavours myself yesterday with zero...
Read more →

October 05, 2011

We already published 'Getting Started with the Revit API' guides for Revit 2009 and 2010. Here is a completely revamped and much expanded version for Revit 2012. Actually, before even reading any further on this page, go to the Revit Developer Center and see what material is available there. That is always the most up-to-date place to look. Still, this overview may help your orientation as well: Getting Started with the Revit 2012 API 1. Setting up the Environment The...
Read more →

August 24, 2011

Yesterday Kean mentioned that debugging AutoCAD.NET projects using the Visual C# and VB Express editions is now directly supported by the latest version of the AutoCAD .NET Wizard. That prompted me to have a look and see what the current situation is with Revit add-ins. Obviously, we poor Revit developers do not have such a sophisticated wizard available ... or so I thought! I installed Visual C# Express and started my experiment: I launched the new installation and selected New...
Read more →

July 15, 2011

Here is a simple issue from a discussion with Stephen LeCompte of FKP Architects, Inc. that several other people people also recently ran into: Question: I followed the steps provided in 'DevTV: Introduction to Revit 2011 Programming - Part I' and incorporated them in my Revit Architecture 2012 64-bit version, but there is a problem. When I start up Revit 2012 it displays the following error message saying 'Failed to initialize the add-in "RevitNETAddin3.addin" because the add-in registration is missing...
Read more →

April 15, 2011

Every year anew, people ask for the Revit product GUIDs used to identify the Revit installation and stored in the Windows registry under HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall There are different keys for each of the three Revit flavours, and for both 32 and 64 bit operating systems. The first time around, we discussed the Revit 2010 and previous versions' installation path and product GUIDs, and then updated the list for Revit 2011 last year. As I mentioned last time, the install path is...
Read more →

April 12, 2011

As I mentioned yesterday, this weekend was spent traveling to Verona to give a Revit API training here. Happily, I enjoyed some mountain air the weekend before, on Helgenhorn 2837m, Basodino 3273m and Cima di Lago south of All'Acqua in the Bedretto Valley (more photos by Jogi): Anyway, that was last weekend; back to here and now in Verona, where I was busy yesterday, preparing for the training, starting today. I already updated the DevTV Visual Studio wizards for creating...
Read more →

April 11, 2011

I spent all day yesterday in trains, which was unfortunate, since it was the most beautiful Sunday, and springtime is in full bloom. It also forced upon me some unfortunate comparisons of the Swiss and Italian train systems. Needless to say, I arrived later than expected. Still, I ended up happily back in Verona, Italy, where I started seriously learning Italian two years ago, for a repeat visit to provide a Revit API training class to Steel & Graphics srl....
Read more →

March 10, 2011

Many people have complained about the amount of noise caused by the ribbon in the Visual Studio debug output window. Kean Walmsley just pointed out that you can easily make AutoCAD less noisy when debugging by adding a couple of lines to the acad.exe.config file, which lives in the same folder as the acad.exe you are debugging, such as C:\Program Files\Autodesk\AutoCAD 2011, to ask the WPF binding trace provider to lower the volume. Since Revit uses the same internal ribbon...
Read more →

February 24, 2011

Arnošt Löbel added a comment on the little zero document external application that I presented last week, pointing out that the transaction attribute (e.g. TransactionMode.Manual) is only applicable to external commands, not applications. As he says, it should be treated as an add-in declaration error, but since it is harmless, it is quietly ignored. (It could be treated as an error in the future though.) The question is also how the regeneration attribute is handled. It was originally intended for...
Read more →

February 18, 2011

Several people have asked about how to activate their custom add-in panel items when Revit is in zero document state, i.e. when no document has been opened in the Revit user interface: For an external command, it is no big deal: if you set both its transaction mode and regeneration option to Manual, it will appear in the Revit ribbon panel under Add-Ins > External > External Tools and also be available in zero document state: However, as you can...
Read more →