The Revit API has been split into two DLLs. The new DLLs are:

  • RevitAPI.dll – which now contains only methods used to access Revit’s application, documents, elements, and parameters at the database level.
  • RevitAPIUI.dll – which contains all API interfaces related to manipulation and customization of the Revit user interface, including:
  • IExternalCommand and External Command related interfaces
  • IExternalApplication and related interfaces
  • Selection
  • RibbonPanel, RibbonItem and subclasses
  • TaskDialogs

In order to facilitate access to application and document level interfaces from both DLLs, the Application and Document classes have also split into two:

  • Autodesk.Revit.UI.UIApplication – provides access to UI-level interfaces for the application, including the ability to add RibbonPanels to the user interface, and the ability to obtain the active document in the user interface.
  • Autodesk.Revit.ApplicationServices.Application – provides access to all other application level properties.
  • Autodesk.Revit.UI.UIDocument – provides access to UI-level interfaces for the document, such as the contents of the selection and the ability to prompt the user to make selections and pick points
  • Autodesk.Revit.DB.Document – provides access to all other document level properties

The ExternalCommandData interface now provides access to the UIApplication object as well as the active view. From the active UIApplication object you can obtain the active UI document. You can also construct the UIApplication from the Application object, and the UIDocument from the DB level document at any time.

[One Point]

You can know better how Autodesk split Revit API DLL by a few simple codings. Practice it, and you can know it better:-)