Guy Robinson said it in May 2009: Revit 2011 - the most significant release EVER. He was referring to something completely different and might have meant it more as a joke at the time, but from an API point of view, it is suddenly true today.
The autodesk.com web site alphabetical list of products now points to new releases of all three flavours of Revit:
Leaving the product side of things for others to deal with, let's turn to the API. In this release, the Revit API has undergone both major renovation and major enhancement. The changes will affect every single application, both new and existing, so it will require more porting effort this time around, but very worthwhile and more future proof as a result.
The major renovations include:
- Changes to the Revit API namespaces: the namespaces have been refactored for much greater clarity.
- Split of Revit API DLL into two assemblies, for database access and the user interface portion.
- New classes for XYZ, UV, and ElementId: these ubiquitous objects have been promoted to classes now, some of their methods renamed, and generic .NET collections replace many of the custom Revit collection classes.
- Replacement for Symbol and properties that access types: the Symbol class has been renamed to ElementType.
- New transaction interfaces.
- New ExternalCommand and ExternalApplication registration mechanism: bye-bye, Revit.ini! With vastly enhanced control over command loading, availability in different contexts, ribbon resources and localisation.
- Localisation support
- External Command Accessibility.
- External Command and External Application registration utility vastly simplifying the implementation of an add-in installer.
- Attributes for configuring ExternalCommand and ExternalApplication behaviour: Transaction mode and Regeneration option.
- New element iteration interfaces: completely revamped element iteration and filtering access.
- Revit exceptions.
- Replacement for AnalyticalModel.
- Replacement for gbXMLParamElem: new EnergyDataSettings class.
Some of the major enhancements are:
- Dynamic Model Update: finally, a possibility to react to changes, including modifications of single elements, and dynamically update the model. Whopee!
- Elements changed event: another possibility to react to changes after every transaction gets committed, undone, or redone.
- Failure API: ability for an add-in to define and post failures and react to them.
- Select elements, points on elements, faces and edges: a host of powerful new element and sub-element picking features!
- Pick point on the view active work plane: we finally have the long-awaited pick point functionality!
- Additional options for ribbon customization.
- Create and display Revit-style task dialogues.
- Idling event: an event is raised when it is safe for an add-in to access the active document between user interactions, and allows changes to a document if a new transaction is opened.
- Sun and shadows settings element.
- Revamped MEP demand factor and load classifications.
- Panel schedules: a new comprehensive API to support access to panel schedules and their contents.
- Cable tray and conduit: new classes and elements introduced.
- Analysis Visualization Framework: a mechanism for an analysis application to easily display computation results as transient 3D data in the Revit model.
A host of other new features are coming as well, but these are more than enough to get anyone familiar with the API very excited indeed.
I will be covering these enhancements as fast as I can, of course. Everything is documented in the beta version of the Revit SDK, so you don't have to wait for me!
ADN members have access to the beta version on the ADN web site. Non ADN members will have to wait until the final release is available, I'm afraid.
There is a huge amount of material to cover, and I am really looking forward to diving into all this now.
As mentioned above, some of these changes affect every single existing application, so migration will be an issue for people who have already developed something.
Since some of the changes are so ubiquitous that every single application is affected, one of the things I am thinking of posting is a quick overview of 'My First Revit 2011 Add-In', which will touch on most of the new features that you immediately encounter when working with the new API.
So stay tuned, and let's celebrate!