The Autodesk Subscription Advantage Packs have been released, including ones for Autodesk Revit Architecture, MEP and Structure 2010. English versions are now available for download on Subscription Center.
ADN members also have access to the subscription center by going to the ADN home page and selecting Autodesk Subscription Center. The subscription pack is also available directly from the ADN Revit download page. Look there for the Autodesk Revit 2010 September/October update.
The Revit 2010 subscription packs provide the same minor fixes and enhancements and the web update 2 plus significant additional new features.
The subscription pack also includes some API enhancements and is therefore accompanied by an updated SDK as well, which we explore below. First let's look at the updated product and documentation:
Since there are three different flavours of the subscription pack for Architecture, MEP and Structure, and each of these has its own 'what's new' documentation and is available both for 32 and 64 bit operating systems, the whole release adds up to this list of nine files:
All changes in the web update are also provided in the subscription release, so it is a true superset of the former.
Analogously to the web update, the three separate what's new documents list the enhancements provided both by the subscription pack products and the updated API.
One of the user interface enhancements which is new in the subscription release pack is the keyboard shortcut feature, which might prove extremely useful to application developers:
The subscription release of Revit provides an easy-to-use interface for managing keyboard shortcuts for Revit tools. With this interface, you can
Keyboard Shortcuts
I received feedback from a developer who was driving a Revit 2009 add-in and its external commands using Windows messages. When the Revit 2010 user interface moved to the ribbon paradigm, this approach no longer worked and he was unable to support the new version. The new keyboard shortcuts effectively resolve this problem and external commands can now be launched programmatically. This leads us back to the API enhancements:
The subscription pack includes enhancements to the Revit API and an updated SDK. There are now separate versions of the SDK for the web update and the subscription releases, which are both available from the public Revit developer site and also from the members-only ADN pages:
The new API functionality is described in the file 'Revit Platform API Changes and Additions.doc'. The help file RevitAPI.chm file also reflects these changes. The subscription release has the same changes as the web update, plus additional APIs.
I analysed the differences between the initial release of the Revit SDK and the two new updated versions provided with the web update 2 and the subscription pack:
The two SDKs are identical, except for three files:
The changes and additions document calls out the improvements made.
We already discussed the web update 2 API enhancements, e.g.
The subscription pack release includes these as well as the following:
The sample applications provided in the updates are virtually identical to the ones in the original release of the SDK.
Regarding the SDK backward compatibility, the same applies as for the web update 2:
Both the web update 2 release and the subscription pack provide a few new API calls. The API is compatible between all versions as long as the new calls are not accessed. You need ensure that the user has installed and is using the subscription release before using any of the new calls.
In the subscription pack release of the Revit SDK, the SuspendUpdating class has a new constructor which will cause Parameter.Set not to update the entire building model every time a single parameter on an individual element is modified. This affects all instance parameters defined in families, when the parameter value is modified on the inserted family instances. We have seen speed improvements where a processing time of 5 minutes is reduced to 15 seconds to change 100 parameters on one single element, and the effect is probably similar when changing a single parameter on 100 different elements.
An application taking advantage of the new functionality will be incompatible with the initial release of Revit 2010 and will only compile with the newer API. An application created for the initial release of Revit 2010 will obviously still run, but will not be able to take advantage of this enhancement. You might be able to build an application which will both run on the initial version and also take advantage of the new functionality by using reflection to check at runtime whether the new API call is available at all. You could also query the build number to decide whether to use reflection to try to find the new method.