The REX SDK

Last night I returned to the vegetarian restaurant that I remembered from my last visit to Verona. If used to be called Suca Baruca, or crazy pumpkin. Now it changed its style a bit, and its name, to La Fata Zucchina, ristorante biovegetariano; highly recommended!

I recently mentioned the main new features of the Revit 2012 API and pointed out that many wishes have been resolved and new features such as extensible storage added. Besides the addition of some new features to the existing Revit API as we know and love it, there have also been several completely new APIs and SDKs added, warranting entirely new subdirectories in the main Revit SDK folder:

Revit 2012 SDK contents

The three new subdirectories are:

Emmanuel Weyermann, Software Development Manager and gran capo of REX, has kindly provided the following introduction to the latter, the REX SDK. It was already available in a kind of preview version for Revit 2011 and has now been promoted to official inclusion in the standard Revit SDK. For more details, please see the ample documentation and sample collection in the REX SDK subfolder of the Revit 2012 SDK. This overview is just provided to whet your appetite and make you aware of the new possibilities it offers:

What is the REX SDK?

What is REX?

The primary goal of REX is to help Revit API developers concentrate on essential development aspects when creating various add-ins for Revit, by providing support for typical, commonly used functionality.

The outcome of this approach is:

REX is a technology or framework supporting development of add-ins for Revit and making them consistent and aligned with the way Revit interacts with users.

The primary goals for the REX framework can be defined as follows:

What is the REX SDK?

The REX SDK is a development environment for Rapid Application Development purposes that helps to create, deploy and activate add-ins based on the REX technology.

The core part of the REX SDK is implemented in the form of a Microsoft Visual Studio C# template. Using the template provided, you can quickly build an add-in that has a similar look & feel to Autodesk Revit Extensions.

The REX SDK is composed of:

To whom is it addressed?

The advantages of this technology can be useful to all Revit API developers making add-ins for Revit, but it's most efficient for those whom the following aspects are applicable:

What are the most interesting features for API developers?

What are the benefits for Revit users?

The primary advantages for end-users are:

What is the difference between the Revit and the REX API?

The REX SDK does not provide any additional access to internal Revit functionality. The REX API extends the Revit API functionality with a set of new components.

What products can this technology be applied to?

The REX based approach is applicable for the Revit Architecture, Revit Structure and Revit MEP products.

When are alternative approaches recommended?

The REX SDK provides a set of tools to develop External Commands on top of the Revit API. Some other common structures for Revit API applications are not supported by the REX SDK, including:

In addition, it is not possible to define custom failure definitions from a REX SDK application, as they must be defined in the start-up of an external application. For applications which need to use any of these API features, the REX SDK would not be appropriate.

Another limitation of the REX SDK lies in the supported language: project templates and examples are provided only in C# and are not applicable for development in other .NET compatible languages.

How do I get started?

The following steps will help to create a first REX based add-in for Revit:

It would be great if you find this useful and helpful in raising productivity and enhancing the look and feel of your Revit API applications. Good luck!