What's New in the Revit 2023 API

The Revit 2023 API contains many exciting enhancements for add-in developers:

Top level table of contents:

Information Sources

The information below is based on the contents of the Revit Platform API Changes and Additions.docx document included with the Revit 2023 SDK, the software developers kit available from the Revit Developer Centre.

It is also provided in the section on What's New in the Revit 2023 API help file RevitAPI.chm included with the SDK:

Revit 2023 API help on What's New

For convenient, easy, and effective web searching, this blog post provides a cleaned-up online HTML version of that information with numbering and table of contents added, as well as the following PDF printout of the original document included in the SDK with table of contents and page numbers added:

The What's New section and the Changes and Additions document provide important information, both for discovering and exploring the newly added API functionality and for later reference.

If you encounter any issues migrating your existing add-ins between different versions, this is one of the first places to look.

For detailed information on all other aspects of the Revit API, please refer to the rest of the API documentation and samples provided in the SDK.

The most important things to install and always keep at hand are:

You will regularly need both for research on how to solve specific Revit API programming tasks.

More in-depth official explanations and background information is provided by the online Revit API Developers Guide included in the Revit 2023 online help.

What's New in Previous Versions

Here are links to previous discussions of What's New in the Revit API:

Detailed Table of Contents

API Changes

1.1. New version of CEFSharp

Revit and Autodesk add-ins use the CEFsharp library internally for several features. Some third-party add-ins do so as well. Occasionally, when different versions of the library are used, it leads to instability issues for Revit. In order to avoid version conflicts, we are clarifying what CEFsharp version is being used, and loading it prior to all add-in initializations.

1.2. Replacement for Structural Analytical Model elements

The elements used for the Structural Analytical Model have been completely replaced and the interactions overhauled in this version of Revit. Because of these changes, many pre-existing API classes and methods have been removed immediately in this release as deprecation was not possible. The classes that are impacted are all in the Autodesk.Revit.DB.Structure namespace.

1.2.1. Analytical Model classes

1.2.2. Analytical Models classes additions

This new API is part of a broader Analytical Driven Modeling initiative for Revit that introduces a new approach to analytical modelling, enhancing its overall structural modelling capabilities. See the RevitAPI.chm for a full listing of new functions.

New classes include:

1.2.3. Analytical Model enums

1.2.4. Element

1.2.5. StructuralSettings

The following properties have been removed:

1.2.6. Line Load, Area Load, Point Load

1.2.7. Load Base

1.2.8. Boundary Conditions

1.3. Geometry API changes

1.3.1. Bounding Box

The class BoundingBoxXYZ:

description was updated to mention that the bounding box might not be empty even if the element's Geometry property returns an empty result, because GetBoundingBox does not take the Geometry property's Options into account.

1.3.2. Geometry Instance

The property Element Symbol of the GeometryInstance was deprecated.

The replacement is GeometryInstance.GetDocument().GetElement(GeometryInstance.GetSymbolGeometryId().SymbolId)

1.4. Custom Export API changes

Deprecated Methods:

GroupNode is the base class for InstanceNode and LinkNode

1.5. Export API changes

The Enum STLExportResolution has been deprecated and replaced:

1.6. Energy Analysis API changes

The property:

is modified to cover all scenarios. Previously, it was only for the spaces created with the mode 'Use Rooms or Spaces', and represented the enclosed area measured by interior bounding surfaces. The additional cases include the spaces created with mode 'Use Building Elements' and 'Use Conceptual Masses and Building Elements', where the area is measured by the center plane of walls and the top plane of roofs and floors.

Conceptual Masses

A number of classes and methods related to using Conceptual Masses in Energy Analysis have been deprecated. These are replaced by classes and methods in detailed energy analysis.

1.7. Reinforcement API changes

1.7.1. Reinforcement Elements

The following methods were deprecated due to the fact that the Reinforcement elements representation as solid in a 3D view will be done automatically on Fine detail level. There are no replacements for these capabilities because the geometry is handled automatically.

1.8. Project Browser API removal

The enum value Autodesk.Revit.DB.BrowserOrganizationType.Families of BrowserOrganizationType will no longer be exposed to the public API, as there was no user-facing way to use the value.

1.9. Obsolete API removal

The following API members and classes which had previously been marked Deprecated have been removed in this release. Consult the API documentation from prior releases for information on the replacements to use:

1.9.1. Classes

1.9.2. Methods

1.9.3. Properties

1.9.4. Enums

API Additions

2.1 Schedule API additions

2.1.1. Schedule heights on sheets

The new class:

returns the heights of schedule title, column header and each body row on sheet view.

The new method:

will return the heights object.

2.1.2. Managing schedule segments

The new methods:

provide the ability to split schedules and manage schedule segments.

The new method:

will return the schedule sheet instances for a schedule segment.

The new methods:

provide the ability to place a schedule segment on sheet and to get and set the schedule segment instance's segment index.

2.1.3. ScheduleDefinition

The new property:

indicates if the schedule is set to filter by sheet.

The new method:

checks whether a schedule can be filtered by sheet.

2.2. Worksharing API additions

2.2.1. Delete Workset API

The new method:

supports deleting of worksets from the model. It takes a DeleteWorksetSettings input with options for what to do with elements contained by that workset.

2.3. Geometry API additions

2.3.1. Bounding Box API

The new property:

checks if the bounding box is Enabled and not empty.

2.3.2. Geometry managed by symbol element

The new class

is used to identify a piece of geometry managed by a symbol element. Can be used to compare if two instances point to the same piece of geometry managed by a symbol element.

The new method:

this will convert the SymbolGeometryId to a string that can be used in comparisons to see if two instances point to the same piece of geometry managed by the same symbol element.

The new property:

The id of the symbol that is containing the geometry that is shared.

2.4. DirectShape API additions

2.4.1. Type assignability

The new property:

provides API-level control for whether a given DirectShapeType will appear in the type selector drop-down in the Revit user interface and whether an existing DirectShape can have its type changed to the given DirectShapeType.

2.5. Import/Export API additions

2.5.1. AXM Import

The new class:

allows user to determine the import options when importing an AXM file.

The new method:

imports an AXM file into the document.

The new method:

checks if the Import FormIt function is available.

2.5.2. OBJ Export

The new method:

supports export of Revit geometry to OBJ format. It uses a new class containing the options available for export:

2.5.3. STL and OBJ Import & Link

The new methods:

provide support for import and linking of files of STL and OBJ formats. These methods use new classes representing the options for each of the new formats.

2.5.4. ShapeImporter API additions

The new enumerations:

allows user to import data from more file types.

2.6. View API additions

2.6.1. Duplicating Sheets

The new enum:

allows you to indicate what information should be copied when duplicating a sheet. Its values are:

The new methods:

allow you to duplicate sheets and identify sheets which can be duplicated.

2.6.2. Transforming from Model Space to View Projection Space

New methods in View and TransformWithBoundary allow you to transform between model space and a view's projection space:

2.6.3. Transforming from View Projection Space to Sheet Space

Two new methods allow you to transform between a view's projection space and sheet space:

2.6.4. View Placement on Sheet

The new enum:

indicates whether the View is placed on a Sheet. Some Views can be placed on one or more Sheets completely or partially. For example, a Schedule divided in segments, and only some of them are placed on Sheets.

The new method

determines if this view placed on a sheet completely or partially.

2.6.5. Swapping viewports on sheets to another view

Viewports placed on sheets can now have the associated view swapped to another view in the model. The property:

is now editable.

The new members:

2.7. Electrical API additions

2.7.1. Load classification API

The new read only property:

indicates if this load classification is to be used for spare.

2.7.2. Panel schedule API

The new method:

allows an application to set the lock state for a circuit slot at specific cell.

2.7.3. Electrical analytical node API

The new class:

represents an electrical analytical node.

The new enum:

The new properties:

The new methods:

2.7.4. Bus data API

The new class:

represents the data and parameters of analytical bus node.

The new properties:

The new method:

2.7.5. Distribution node property data API

The new class:

represents the data and parameters of electrical analytical node.

The new property:

2.7.6. Equipment load data API

The new class:

represents the data and parameters of point load node.

The new properties:

The new enum:

2.7.7. Area based load type API

The new class:

represents an area based load type in Autodesk Revit.

The new properties:

The new method:

2.7.8. Area based load data API

The new class:

represents the electrical area based load data.

The new methods:

The new properties:

2.7.9. Electrical load area data API

The new class

represents the electrical load area data.

The new methods:

2.7.10. Area based load boundary line data API

The new class

wrapper class used to access area based load boundary line related data.

The new properties:

The new methods:

2.7.11. Analytical transfer switch data API

The new class:

represents the data and parameters of electrical analytical transfer switch.

The new properties:

The new method:

2.7.12. Analytical Power Source API

The new class:

represents the data and parameters of an analytical power source node.

It has the following properties:

2.8. Mechanical API additions

The new class:

a base class for specific domain requirements for a zone.

The new method:

creates a new instance of an area based load and adds it to the document.

2.9. ElementId API additions

2.9.1. Converting strings to ElementId

The new methods:

2.10. Element API additions

2.10.1. IsModifiable property

The new property:

identifies whether an element can be modified or not. The state of the property depends on the document state. For example, active edit modes can make IsModifiable false for many elements.

2.10.2. Elements with multiple ExternalResourceReferences

Material assets and Decal images are supported with external resource references now.

The new methods:

allow users to access the ExternalResourceReferences for an element which might contain multiple references for a specific type. This allows working with Material assets and Decal images, for example.

2.10.3. Category

The new property:

the Autodesk.Revit.DB.BuiltInCategory value for the category or Autodesk.Revit.DB.BuiltInCategory.INVALID if the category is not a built-in category.

2.11. Document API additions

2.11.1. Elements changed since a previous version

The new class:

allows users to see which elements have changed since a previous version of the document. Note that the version refers to a DocumentVersion object and not the Revit release which the document was last saved in.

The new method:

gets the current document version.

The new method:

returns a collection of the elements which have changed between the input version and the document's current version.

2.12. Annotation API additions

2.12.1. Tag Leader API

The new enumeration:

allows users to set how leaders should be displayed on a tag. It has the following values:

The new property

identifies if the leader's elbows are merged or not

The new methods

returns whether the leader that points to the specified reference is visible or not.

sets the visibility of the leader that points to the specified reference to be visible or not.

2.13. Energy Analysis API additions

The new property:

this value is the enclosed volume measured by interior bounding surfaces if the spaces are created with the mode 'Use Rooms or Spaces'. Otherwise, this value is the average of the analytical volume and the voxel volume. Note that the analytical volume is measured by the center plane of walls and the top plane of roofs and floors, and the voxel volume is measured by the number of enclosed unit cubes.

The new method

gets the collection of planar polygons describing the surface/opening geometry. A collection of polyloops (planar polygons) describing the opening geometry as described in gbXML. The geometry is currently measured per analytical(center-line).

2.14. Slab API additions

The new method:

allows users to pick edges on a floor and convert them from folding lines to split lines.

2.15. Applications API additions

2.15.1. Application.ShowGraphicalOpenEndsAreaBasedLoadBoundaryDisconnects

The new property

indicates whether or not to show the graphical open ends for Area Based Load Boundary disconnects.

2.16. Sketched Elements API additions

2.16.1. Editing Sketches with SketchEditScope

The new method

starts a sketch edit mode for an element which, at this moment, doesn't have a sketch. Some surface Revit elements (like some Walls or some Analytical Elements) does not have a valid sketch all the time so in order to edit them, we have to create a valid sketch first.

2.16.2. Dimension creation in Sketch Edit mode

The method:

and its overrides can now support creation of dimensions in Sketch Edit mode. If users need to create dimensions in the sketch, they must call this method under sketch edit mode, passing the view parameter as null and using sketch entities as dimension references. The method signatures were not changed but descriptions have been updated.

The method:

and its overrides can now support creation of dimensions in Sketch Edit mode. If users need to create dimensions in the sketch, they must call this method under sketch edit mode, passing the view parameter as null and using sketch entities as dimension references. The method signatures were not changed but descriptions have been updated.

2.16.3. Filled Region for sketch plane

The new method:

2.16.4. Boundary Validation for sketched elements

The new methods:

2.17. Project Browser API additions

2.17.1. BrowserOrganization

The new property

represents the browser organization type.

2.17.2. ProjectBrowserOptions

The new class:

provides access to settings that control Revit's Project Browser appearance and functionality. These settings are stored in the Revit.ini file. All documents in Revit instances which use this Revit.ini will follow these settings.

The new property:

show the icons indicating view placement on sheet status. If true, the icons indicating view placement on sheet status will be shown at every view or schedule node in the Project Browser. If false, the icons indicating view placement on sheet status will not be shown.

2.18. Structure API additions

2.18.1. Line Load

The new methods:

2.18.2. Area Load

The new methods:

2.18.3. Point Load

The new methods:

2.18.4. RebarPropagation

The new class:

a utility class containing functions that can be used to propagate rebar elements.

The new methods:

2.18.5. RebarHostData

The new method:

2.18.6. RebarCoupler

The new property:

2.19. Selection API additions

2.19.1. Selection

The new methods:

2.19.2. UIApplication

The new events:

2.19.3. Events

The new class:

the event arguments used by the SelectionChanged event.

The new methods:

2.20. MEP API additions

2.20.1. ConnectorElement

The new method:

changes the connector host reference by plane reference alone, or plane reference plus an edge. The plane reference alone would allow the connector position to move along the plane later, while the plane reference plus an edge fixes the connector position by the edge loop.

2.20.2. SpatialElement

The new class

a base class for specific domain requirements for a spatial element.

The new method:

gets the domain data for the spatial element. The domain data contains information of different spatial elements, such as electrical load area. Currently room/space/area don't have domain data.

2.20.3. Flipping fabrication parts

The new method:

flips a directionally oriented fabrication part (tees, crosses, valves, dampers, etc.) to the opposite direction. Existing connections will be maintained. Disconnect warnings will be posted if the connection cannot be maintained.

2.21. Parameter API additions

2.21.1. ParameterUtils

The new method:

checks whether an ElementId identifies a built-in parameter. An ElementId identifies a built-in parameter if it corresponds to a valid BuiltInParameter value.

2.22. Print API additions

2.22.1. IViewSheetSet

Autodesk.Revit.DB.IViewSheetSet now supports ordered view sheet list inside. You can now access or arrange the list utilizing the new APIs. Lists can be ordered either automatically or manually, which is controlled by the property IViewSheetSet.IsAutomatic. If the list in under automatic mode, the list will be ordered by Sheet/View organization. You can set them with IViewSheetSet.SheetOrganizationId and IViewSheetSet.ViewOrganizationId. For Manual ordering, you can set IViewSheetSet.OrderedViewList.