The Revit 2022 API includes an exceptional list of exciting enhancements for add-in developers, including numerous developer wishes and requests that have now been explicitly addressed:
Table of contents top level:
- 1 API Changes
- 1.1 Parameter API changes (migration to ForgeTypeId)
- 1.2 Renamed/replaced Parameter Group members
- 1.3 Document & Worksharing API changes
- 1.4 Sketched element API changes
- 1.5 IndependentTag API Changes
- 1.6 Revision API changes
- 1.7 Structural reinforcement API changes
- 1.8 Import/Export API changes
- 1.9 MEP API changes
- 1.10 PostableCommand enumeration update
- 1.11 BuiltInFailures changes
- 1.12 Filter API change
- 1.13 Ruby macros no longer supported
- 1.14 TransmissionData API change
- 1.15 Removal of obsoleted APIs
- 2 API Additions
- 2.1 Sketched Elements API
- 2.2 Color Fill API
- 2.3 Export API additions
- 2.4 Civil Alignments API
- 2.5 DirectShape API Additions
- 2.6 Document & Worksharing API additions
- 2.7 View API additions
- 2.8 Graphics API additions
- 2.9 Label API additions
- 2.10 Parameter API additions
- 2.11 Dimension API additions
- 2.12 Category API additions
- 2.13 Shared Coordinates API additions
- 2.14 Revision API additions
- 2.15 Phasing API additions
- 2.16 Geometry API additions
- 2.17 Point Cloud API additions
- 2.18 Schedule API additions
- 2.19 Import API additions
- 2.20 Structural API additions
- 2.21 MEP API additions
- 2.22 Energy Analysis API additions
Information Sources
The information below is based on the contents of the Revit Platform API Changes and Additions.docx document included with the Revit 2022 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 2022 API help file RevitAPI.chm
included with the SDK:
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:
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:
- The Revit API help file
RevitAPI.chm
- The Visual Studio solution containing all the SDK samples,
Samples\SDKSamples.sln
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 2022 online help.
What's New in Previous Versions
Here are links to previous discussions of What's New in the Revit API:
- What's New in the Revit 2010 API
- What's New in the Revit 2011 API
- What's New in the Revit 2012 API
- What's New in the Revit 2013 API
- What's New in the Revit 2014 API
- What's New in the Revit 2015 API
- What's New in the Revit 2016 API
- What's New in the Revit 2017 API
- What's New in the Revit 2017.1 API
- What's New in the Revit 2018 API
- Revit 2018.1 and the Visual Materials API
- Revit 2018.1.1 and 2018.1 API Docs Online
- Revit 2018.1 Visual Materials API
- What's New in the Revit 2018.2 API
- What's New in the Revit 2019 API
- What's New in the Revit 2020 API
- What's New in the Revit 2020.1 API
- What's New in the Revit 2021 API
- What's New in the Revit 2021.1 API
Detailed Table of Contents
- 1 API Changes
- 1.1 Parameter API changes (migration to ForgeTypeId)
- 1.1.1 Changes to Parameter Access APIs
- 1.1.2 Changes to Parameter Definition APIs
- 1.1.3 Changes to Shared Parameter Creation and Binding APIs
- 1.1.4 Changes to GlobalParameter APIs
- 1.1.5 New and changed utility APIs
- 1.2 Renamed/replaced Parameter Group members
- 1.3 Document & Worksharing API changes
- 1.3.1 SaveAsCloudModel() now supports save of a new Revit Cloud Worksharing central model
- 1.3.2 Revit Links to Cloud Models
- 1.3.3 Worksharing API exception changes
- 1.3.4 Worksharing API replacements
- 1.4 Sketched element API changes
- 1.5 IndependentTag API Changes
- 1.5.1 Rotation
- 1.5.2 Multiple References
- 1.6 Revision API changes
- 1.7 Structural reinforcement API changes
- 1.8 Import/Export API changes
- 1.9 MEP API changes
- 1.9.1 Electrical API changes
- 1.9.2 Fabrication API changes
- 1.10 PostableCommand enumeration update
- 1.11 BuiltInFailures changes
- 1.12 Filter API change
- 1.13 Ruby macros no longer supported
- 1.14 TransmissionData API change
- 1.15 Removal of obsoleted APIs
- 2 API Additions
- 2.1 Sketched Elements API
- 2.1.1 Ceiling creation
- 2.1.2 Floor APIs
- 2.1.3 Wall APIs
- 2.1.4 Slanted and Tapered Walls
- 2.1.5 Sketch APIs
- 2.1.6 Editing Sketches with SketchEditScope
- 2.1.7 Boundary validation for sketched elements
- 2.1.8 CompoundStructure API
- 2.2 Color Fill API
- 2.2.1 Color Fill Schemes
- 2.2.2 Color Fill Scheme Entries
- 2.2.3 View access to Color Fills
- 2.2.4 Color Fill Legends
- 2.3 Export API additions
- 2.3.1 Export to PDF
- 2.3.2 PDF Export Settings
- 2.4 Civil Alignments API
- 2.5 DirectShape API Additions
- 2.5.1 Reference Curves, Planes, and Points
- 2.5.2 External Geometry
- 2.5.3 Custom Family names
- 2.6 Document & Worksharing API additions
- 2.6.1 Cloud Model API additions
- 2.6.2 OpenOptions API
- 2.7 View API additions
- 2.7.1 Label for views on sheets (Viewport)
- 2.7.2 Callout view
- 2.7.3 Grids in 3D views
- 2.8 Graphics API additions
- 2.9 Label API additions
- 2.10 Parameter API additions
- 2.11 Dimension API additions
- 2.11.1 Dimension layout
- 2.11.2 DimensionType prefix/suffix
- 2.12 Category API additions
- 2.12.1 Built in Categories
- 2.13 Shared Coordinates API additions
- 2.13.1 Reset Shared Coordinates
- 2.13.2 Clipped state of BasePoint
- 2.14 Revision API additions
- 2.15 Phasing API additions
- 2.16 Geometry API additions
- 2.17 Point Cloud API additions
- 2.18 Schedule API additions
- 2.19 Import API additions
- 2.19.1 Import/Link Rhino
- 2.20 Structural API additions
- 2.20.1 Moving individual rebar in a Rebar Set
- 2.20.2 Removing individual bars from a Rebar Set
- 2.20.3 Moving and Removing bars owned by PathReinforcement
- 2.20.4 Area Reinforcement Layers
- 2.20.5 Rebar conversion
- 2.20.6 Rebar geometry
- 2.20.7 Freeform Rebar
- 2.21 MEP API additions
- 2.21.1 Building and Space Type additions
- 2.21.2 Zone additions
- 2.21.3 Mechanical Systems Analysis Set Points
- 2.21.4 Analysis Report Style
- 2.21.5 MEP Hidden Line Settings
- 2.21.6 Electrical Panel Schedule
- 2.21.7 Conversion to Fabrication
- 2.22 Energy Analysis API additions
1.1. Parameter API changes (migration to ForgeTypeId)
In Revit 2021, Revit API functionality for units of measurement migrated from enumerated identifiers to extensible identifiers represented by the ForgeTypeId class. ForgeTypeId is now used as the identifier type for more data structures in the Revit API.
A ForgeTypeId instance holds a string, called a "typeid", that uniquely identifies a Forge schema. A Forge schema is a JSON document describing a data structure, supporting data interchange between applications. A typeid string includes a namespace and version number and may look something like "autodesk.spec.aec:length-1.0.0" or "autodesk.unit.unit:meters-1.0.0". By default, comparison of ForgeTypeId values in the Revit API ignores the version number.
The new classes:
- Autodesk.Revit.DB.DisciplineTypeId
- Autodesk.Revit.DB.GroupTypeId
- Autodesk.Revit.DB.ParameterTypeId
contain properties of type ForgeTypeId, following the pattern established in Revit 2021 with the UnitTypeId, SymbolTypeId, and SpecTypeId classes. Values from the DisciplineTypeId class can be used in code to replace values of the deprecated UnitGroup enumeration. For example, where you previously used UnitGroup.Structural, you would now use DisciplineTypeId.Structural. Values from the GroupTypeId and ParameterTypeId classes can be used to replace values of the BuiltInParameter and BuiltInParameterGroup enumerations, respectively, which have not yet been deprecated.
The SpecTypeId class contains several new nested classes containing ForgeTypeId properties identifying non-floating-point data types, such as integers and strings. ForgeTypeId properties in SpecTypeId and its nested classes can be used to replace values of the deprecated ParameterType enumeration. This table lists the deprecated types and their replacements:
- Deprecated enumeration → Replacement
- UnitGroup → DisciplineTypeId
- ParameterType → SpecTypeId, SpecTypeId.Boolean, SpecTypeId.Int, SpecTypeId.Reference, SpecTypeId.String
Here are some further migrated types where the original enumeration is not yet fully deprecated:
- Original enumeration → Preferred replacements as ForgeTypeId
- BuiltInParameterGroup → GroupTypeId
- BuiltInParameter → ParameterTypeId
The mapping of enumerations to different ForgeTypeId members has implications for previously existing APIs related to parameter access, parameter definitions, shared parameter creation and binding, global parameters and other utilities.
1.1.1. Changes to Parameter Access APIs
- Original member → Preferred replacement
- Document.TypeOfStorage[BuiltInParameter] → Document.GetTypeOfStorage(ForgeTypeId)
- Element.Parameter[BuiltInParameter] → Element.GetParameter(ForgeTypeId)
- Parameter.Id → Parameter.GetTypeId()
1.1.2. Changes to Parameter Definition APIs
In the Definition class, the ParameterType property and the GetSpecTypeId() method are both deprecated in favor of the new method GetDataType(). GetDataType() is more general than the functions it replaces, providing a data type identifier for any parameter.
- For parameters associated with units of measurement, GetDataType() returns a measurable spec identifier. Use UnitUtils.IsMeasurableSpec(ForgeTypeId) to detect a measurable spec identifier.
- For Family Type parameters, GetDataType() returns a category identifier. Use Category.IsBuiltInCategory(ForgeTypeId) to detect a category identifier.
- For all other parameters, GetDataType() returns a spec identifier. Use Parameter.IsSpec(ForgeTypeId) to detect a spec identifier, including measurable specs.
Use Parameter.IsValidDataType(ForgeTypeId) to detect any parameter data type identifier – i.e., any measurable or non-measurable spec or category.
- Deprecated member → Replacement member
- Definition.GetSpecTypeId(), Definition.ParameterType → Definition.GetDataType()
Preferred replacements for non-deprecated members:
- Original member → Preferred replacement
- Definition.ParameterGroup → Definition.GetGroupTypeId()
- InternalDefinition.BuiltInParameter → InternalDefinition.GetParameterTypeId()
- InternalDefinition.ParameterGroup → InternalDefinition.GetGroupTypeId()
- InternalDefinition.ParameterGroup → InternalDefinition.SetGroupTypeId(ForgeTypeId)
- InternalDefinition.Id → InternalDefinition.GetTypeId()
1.1.3. Changes to Shared Parameter Creation and Binding APIs
In the ExternalDefinitionCreationOptions class, used to create shared parameters, the implementation now offers better input validation and new capabilities.
The deprecated class constructor and Type property setter taking ParameterType values now throw an exception for input values ParameterType.Invalid or ParameterType.FamilyType. It was not possible to use this interface to create Family Type shared parameters.
However, it is now possible to create Family Type shared parameters using the replacement functions based on ForgeTypeId. The class constructor taking ForgeTypeId and the SetDataType(ForgeTypeId) method accept any spec or category identifier. Using a category identifier produces a Family Type shared parameter of the given category. Use Category.GetBuiltInCategoryTypeId(BuiltInCategory) to obtain the ForgeTypeId identifier for a given category.
Use Parameter.IsValidDataType(ForgeTypeId) to detect any parameter data type identifier – i.e., any measurable or non-measurable spec or category.
- Deprecated member → Replacement member
- ExternalDefinitionCreationOptions(string, ParameterType) → ExternalDefinitionCreationOptions(string, ForgeTypeId)
- ExternalDefinitionCreationOptions.Type → ExternalDefinitionCreationOptions.GetDataType(), ExternalDefinitionCreationOptions.SetDataType(ForgeTypeId)
Preferred replacements for non-deprecated members:
- Original member → Preferred replacement
- BindingMap.Insert(Definition, Binding, BuiltInParameterGroup) → BindingMap.Insert(Definition, Binding, ForgeTypeId)
- BindingMap.ReInsert(Definition, Binding, BuiltInParameterGroup) → BindingMap.ReInsert(Definition, Binding, ForgeTypeId)
Shared parameters can also be created and leveraged in families using members of the FamilyManager class.
- Deprecated member → Replacement member
- FamilyManager.AddParameter(string, BuiltInParameterGroup, ParameterType, bool) → FamilyManager.AddParameter(string, ForgeTypeId, ForgeTypeId, bool)
Preferred replacements for non-deprecated members:
- Original member → Preferred replacement
- FamilyManager.AddParameter(ExternalDefinition, BuiltInParameterGroup, bool) → FamilyManager.AddParameter(ExternalDefinition, ForgeTypeId, bool)
- FamilyManager.AddParameter(string, BuiltInParameterGroup, Category, bool) → FamilyManager.AddParameter(string, ForgeTypeId, Category, bool)
- FamilyManager.IsUserAssignableParameterGroup(BuiltInParameterGroup) → FamilyManager.IsUserAssignableParameterGroup(ForgeTypeId)
- FamilyManager.Parameter[BuiltInParameter] → FamilyManager.GetParameter(ForgeTypeId)
- FamilyManager.ReplaceParameter(FamilyParameter, ExternalDefinition, BuiltInParameterGroup, bool) → FamilyManager.ReplaceParameter(FamilyParameter, ExternalDefinition, ForgeTypeId, bool)
- FamilyManager.ReplaceParameter(FamilyParameter, string, BuiltInParameterGroup, bool) → FamilyManager.ReplaceParameter(FamilyParameter, string, ForgeTypeId, bool)
1.1.4. Changes to GlobalParameter APIs
- Deprecated member → Replacement member
- GlobalParameter.Create(Document, string, ParameterType) → GlobalParameter.Create(Document, string, ForgeTypeId)
- GlobalParameter.IsValidDataType(ParameterType) → Parameter.IsSpec(ForgeTypeId)
1.1.5. New and changed utility APIs
The LabelUtils class, used to obtain user-visible names for enumerations, has several changes according to the mapping from enumerations to ForgeTypeId. In addition to the replacements listed below, a new method:
- LabelUtils.GetLabelForDiscipline(ForgeTypeId)
returns the user visible name corresponding to a Revit discipline in the current Revit language. The implementation of the method:
- LabelUtils.GetLabelForSpec(ForgeTypeId)
has been expanded to accept a ForgeTypeId argument identifying any parameter data type. For a category identifier input, GetLabelForSpec(ForgeTypeId) returns the label of the Family Type spec for that category, e.g. "Family Type: Wall Tags".
- Deprecated member → Replacement member
- LabelUtils.GetLabelFor(ParameterType) → LabelUtils.GetLabelForSpec(ForgeTypeId)
Preferred replacements for non-deprecated members:
- Original member → Preferred replacement
- LabelUtils.GetLabelFor(BuiltInParameter) → LabelUtils.GetLabelForBuiltInParameter(ForgeTypeId)
- LabelUtils.GetLabelFor(BuiltInParameter, LanguageType) → LabelUtils.GetLabelForBuiltInParameter(ForgeTypeId, LanguageType)
- LabelUtils.GetLabelFor(BuiltInParameterGroup) → LabelUtils.GetLabelForGroup(ForgeTypeId)
ParameterUtils is a new class with static utility functions related to ForgeTypeId parameter identifiers:
- ParameterUtils.GetAllBuiltInGroups()
- ParameterUtils.GetAllBuiltInParameters()
- ParameterUtils.IsBuiltInGroup(ForgeTypeId)
- ParameterUtils.IsBuiltInParameter(ForgeTypeId)
The ParameterUtils class contains several methods that are new in this release but also deprecated. They are offered only to assist clients in migrating code from the BuiltInParameter and BuiltInParameterGroup enumerations to the ForgeTypeId class.
Introduced for porting assistance but deprecated
- ParameterUtils.GetBuiltInParameter(ForgeTypeId)
- ParameterUtils.GetBuiltInParameterGroup(ForgeTypeId)
- ParameterUtils.GetParameterGroupTypeId(BuiltInParameterGroup)
- ParameterUtils.GetParameterTypeId(BuiltInParameter)
SpecUtils is a new class with static utility functions related to ForgeTypeId spec identifiers:
- SpecUtils.GetAllSpecs()
- SpecUtils.IsSpec(ForgeTypeId)
- SpecUtils.IsValidDataType(ForgeTypeId)
The SpecUtils class contains two methods that are new in this release but also deprecated. They are offered only to assist clients in migrating code from the ParameterType enumeration to the ForgeTypeId class.
Introduced for porting assistance but deprecated
- SpecUtils.GetParameterType(ForgeTypeId)
- SpecUtils.GetSpecTypeId(ParameterType)
Changes were made to UnitUtils to clarify the meaning of some operations and to offer functions related to disciplines.
The methods GetAllSpecs() and IsSpec(ForgeTypeId) are renamed to GetAllMeasurableSpecs() and IsMeasurableSpec(ForgeTypeId) to clarify that they apply only to measurable specs, describing floating-point values associated with units of measurement, and to avoid confusion with the new Parameter class static methods GetAllSpecs() and IsSpec(ForgeTypeId), which apply to specs of all value types.
The new method:
- UnitUtils.GetAllDisciplines()
provides a list of all available Revit disciplines, suitable for iteration. Previously iteration would have used the members of the UnitGroup enumeration.
- Deprecated → Replacement
- UnitUtils.GetAllSpecs() → UnitUtils.GetAllMeasurableSpecs()
- UnitUtils.GetUnitGroup(ForgeTypeId) → UnitUtils.GetDiscipline(ForgeTypeId)
- UnitUtils.IsSpec(ForgeTypeId) → UnitUtils.IsMeasurableSpec(ForgeTypeId)
1.2. Renamed/replaced Parameter Group members
As a part of changes made to support externalized parameter groups, three BuiltInParameterGroup enumeration values were renamed:
- Original → Replacement
- PG_ELECTRICAL → PG_ELECTRICAL_ENGINEERING
- PG_AELECTRICAL → PG_ELECTRICAL
- PG_TERMINTATION → PG_TERMINATION
Note that because the name PG_ELECTRICAL now identifies a different group, client applications which do not adjust will find parameters they create now in "Electrical" instead of "Electrical Engineering".
1.3. Document & Worksharing API changes
1.3.1. SaveAsCloudModel() now supports save of a new Revit Cloud Worksharing central model
The method:
- Document.SaveAsCloudModel(Guid, Guid, String, String)
has been enhanced to support upload of local workshared file into BIM 360 Design as a Revit Cloud Worksharing central model.
In addition, the exception UnauthenticatedUserException is removed from the documented exceptions for this method.
1.3.2. Revit Links to Cloud Models
The methods:
- RevitLinkType.Create(Document, ModelPath, RevitLinkOptions)
- RevitLinkType.LoadFrom(ModelPath, WorksetConfiguration)
have been enhanced to support creation of new cloud model Revit links. You may use ModelPathUtils. ConvertCloudGUIDsToCloudPath() to create a cloud path to use as an argument to these methods.
These other link methods:
- RevitLinkType.IsLoaded()
- RevitLinkType.Load()
- RevitLinkType.Reload()
- RevitLinkType.Unload()
will work with any cloud Revit link created by a Revit user or through the APIs above.
1.3.3. Worksharing API exception changes
Several exceptions have changed from existing worksharing API. For the method Document.SaveAsCloudModel():
- Situation → Previous exception → Current exception
- User doesn't sign in → ArgumentException → RevitServerUnauthenticatedUserException
- Duplicated model name → RevitServerInternalException → RevitServerModelAlreadyExistsException
- Hub/Project/Folder doesn't exist → ArgumentException → RevitServerUnauthorizedException
- Folder is Plans folder or its sub folder → ArgumentException → RevitServerUnauthorizedException
- Folder doesn't have "Edit" permission → ArgumentException → RevitServerUnauthorizedException
In addition, the function will now throw RevitServerModelNameBreaksConventionException when the model name breaks the project naming convention.
For the method ModelPathUtils.ConvertCloudGUIDsToCloudPath():
- Situation → Previous exception → Current exception
- Region doesn't exist → RevitServerCommunicationException → RevitServerUnauthorizedException
- Project doesn't exist → CentralModelMissingException → RevitServerUnauthorizedException
- Model doesn't exist → No exception → RevitServerUnauthorizedException
- Model exists in a folder that doesn't have the "Edit" permission, but has View above permission → RevitServerUnauthorizedException → No exception
1.3.4. Worksharing API replacements
Some properties have been removed and replaced in this release. Because these were an immediate replacement, applications referencing the replaced properties will need to be updated immediately for this release.
- Removed member → Replaced member
- DocumentSavingAsEventArgs.IsSavingAsMasterFile → DocumentSavingAsEventArgs.IsSavingAsCentralFile
- DocumentSavedAsEventArgs.IsSavingAsMasterFile → DocumentSavedAsEventArgs.IsSavingAsCentralFile
1.4. Sketched element API changes
1.4.1. Floor creation API replacements
The following members have been replaced:
- Deprecated member → Replacement member
- Autodesk.Revit.Creation.Document.NewFloor() (all overloads) → Floor.Create(Document document, IList<CurveLoop> profile, ElementId floorTypeId, ElementId levelId)
- Autodesk.Revit.Creation.Document.NewSlab() → Floor.Create(Document document, IList<CurveLoop> profile, ElementId floorTypeId, ElementId levelId, bool isStructural, Line slopeArrow, double slope)
- Autodesk.Revit.Creation.Document.NewFoundationSlab() → Floor.Create(Document document, IList<CurveLoop> profile, ElementId floorTypeId, ElementId levelId)
1.5. IndependentTag API Changes
1.5.1. Rotation
The new property
- RotationAngle
can be used to get or set the rotation of the tag relative to its view.
1.5.2. Multiple References
IndependentTag now supports multiple references to various elements or sub-elements.
A number of properties were deprecated. The users can now access the desired leader or tagged element using their References.
- Deprecated Member → Replacement Members
- IndependentTag.TaggedLocalElementId → IndependentTag.GetTaggedLocalElementIds()
- IndependentTag.TaggedElementId → IndependentTag.GetTaggedElementIds()
- IndependentTag.GetTaggedLocalElement() → IndependentTag.GetTaggedLocalElements()
- IndependentTag.GetTaggedReference() → IndependentTag.GetTaggedReferences()
- IndependentTag.HasElbow → IndependentTag.HasLeaderElbow()
- IndependentTag.LeaderElbow → IndependentTag.GetLeaderElbow(), IndependentTag.SetLeaderElbow()
- IndependentTag.LeaderEnd → IndependentTag.GetLeaderEnd(), IndependentTag.SetLeaderEnd()
All deprecated members still work in multi leader scenario by using only the first tagged reference.
The new members:
- IndependentTag.AddReferences()
- IndependentTag.RemoveReferences()
- IndependentTag. MultiLeader
are used to bulk add or remove references from a tag, and to query if the tag references multiple elements.
1.6. Revision API changes
RevisionSettings API replacements
The following methods have been deprecated and replaced due to terminology changes in the Revisions user interface:
- Deprecated API → Replacement
- RevisionSettings.GetNumericRevisionSettings() → RevisionNumberingSequence.GetAllRevisionNumberingSequences()
- RevisionSettings.SetNumericRevisionSettings() → RevisionNumberingSequence.SetNumericRevisionSettings()
- RevisionSettings.GetAlphanumericRevisionSettings() → RevisionNumberingSequence.GetAllRevisionNumberingSequences()
- RevisionSettings.SetAlphanumericRevisionSettings() → RevisionNumberingSequence.SetAlphanumericRevisionSettings()
1.7. Structural reinforcement API changes
Reinforcement bars now uses two diameter values instead of just one:
- The model diameter which is used to model the reinforcement bars
- The nominal diameter which is used for formula computations
The following members were deprecated and replaced. Note that the deprecated members always reference the bar's "model diameter".
- Deprecated member → Replacement members
- BarTypeDiameterOptions.BarDiameter → BarTypeDiameterOptions.BarModelDiameter, BarTypeDiameterOptions.BarNominalDiameter
- RebarBarType.BarDiameter → RebarBarType.BarModelDiameter, RebarBarType.BarNominalDiameter
- RebarBendData.BarDiameter → RebarBendData.BarModelDiameter, RebarBendData.BarNominalDiameter
- RebarUpdateCurvesData.GetBarDiameter → RebarUpdateCurvesData.GetBarModelDiameter, RebarUpdateCurvesData.GetBarNominalDiameter
1.8. Import/Export API changes
1.8.1. Import() and Link() methods now treat View as optional
The methods:
- Document.Import()
- Document.Link()
that take a View as an argument have been updated to accept null for that argument. This applies to all overloads of these methods except those that work with DWF. This View argument used to be required, but now null will be used to take an appropriate default action for the import operations.
1.8.2. Export API replacements
The following property has been removed and replaced in this release. Because these were an immediate replacement, applications referencing the replaced property will need to be updated immediately for this release.
- Removed member → Replaced member
- DGNExportOptions.MasterUnits → DGNExportOptions.WorkingUnits
1.9. MEP API changes
1.9.1. Electrical API changes
The following method and property have been deprecated; the old methods referred to temperature in terms on "long", which did not match the capabilities in the UI, and had an error when referring to non-Fahrenheit temperature values.
- Deprecated API → Replacement
- TemperatureRatingType.AddCorrectionFactor(long temperature, double factor) → TemperatureRatingType.AddCorrectionFactor(double temperature, double factor)
- CorrectionFactor.Temperature → CorrectionFactor.GetTemperature()
1.9.2. Fabrication API changes
In a terminology change, the fabrication service "group" was renamed as a "palette" in order to align with changes made in the Revit user interface. This affected the following members:
- Deprecated API → Replacement
- FabricationNetworkChangeService.SetGroupId() → FabricationNetworkChangeService.SetPaletteId()
- FabricationNetworkChangeService.SetRestrictGroup() → FabricationNetworkChangeService.SetRestrictPalette()
- FabricationService.GroupCount → FabricationService.PaletteCount
- FabricationService.IsValidGroupIndex() → FabricationService.IsValidPaletteIndex()
- FabricationService.GetGroupName() → FabricationService.GetPaletteName()
- FabricationService.IsGroupExcluded() → FabricationService.IsPaletteExcluded()
- FabricationService.SetServiceGroupExclusions() → FabricationService.SetServicePaletteExclusions()
- FabricationServiceButton.GroupIndex → FabricationServiceButton.PaletteIndex
- FabricationPartSizeMap.GroupId → FabricationPartSizeMap.PaletteId
The following properties have been deprecated. Because they are not currently used and relate to not yet available capabilities, there is no replacement for these members.
- Deprecated API → Replacement
- FabricationConfigurationInfo.CloudVersion → None
- FabricationConfigurationInfo.IsConnected → None
1.10. PostableCommand enumeration update
Many updates have been made to the PostableCommand enumeration to match the current set of Revit commands.
A good number of commands were newly added to the enumeration:
- Anchors
- BatchPrint
- Bolts
- Collaborate
- CollaborateInCloud
- ConnectionSettings
- ContourCut
- CoordinationModel
- CoordinationSelectLink
- Cope
- CopeSkewed
- CopyMonitorSelectLink
- CopyMonitorUseCurrentProject
- CornerCut
- CutBy
- CutThrough
- DeleteEnergyModel
- Dynamo
- GetAutodeskContent
- GlobalParameters
- Holes
- ImportImage
- ImportPDF
- LinkImage
- LinkPDF
- LinkTopography
- LoadAsGroupIntoOpenProjects
- LoadFamilyIntoProjectAndClose
- LoadIntoProject
- LoadRebarShapeIntoProjectAndClose
- ManageCloudModels
- Miter
- Multiplanar
- MultiPointRouting
- NewFamily
- NewProject
- OpenFamily
- OpenIFC
- OpenIFCOptions
- OpenProject
- Optimize
- PAndIDModeler
- PAndIDSettings
- PathOfTravel
- Plate
- PublishSettings
- RepairCentralModel
- ResetSharedCoordinates
- RevealObstacles
- SaveAsCloudModel
- SaveAsFamily
- SawCutFlange
- SawCutWeb
- ShapeStatus
- SharedViews
- ShearStuds
- Shorten
- ShowWarningsInViews
- SpaceNaming
- StructuralConnection
- StructuralRebarCoupler
- SystemsAnalysis
- SystemZone
- TitleBlock
- ToggleHome
- TogglePAndIDModelerBrowser
- ToggleRevealHiddenElementsMode
- Walkthrough
- Welds
- WorksharingMonitor
Some enumeration values were renamed to match the current naming of the commands in the Revit UI. There is no way to preserve the old name as obsoleted so code referring to these values will need to be updated:
- Removed → Replacement
- ExportMassModelGBXML → ExportGBXML
- ModelBrowserContainer → ToggleHome
- PlaceOnHost → PlaceOnStairOrRamp
- Playlist → DynamoPlayer
- RunEnergySimulation → Generate
- ShowEnergyModel → CreateEnergyModel
- UseCurrentProject → CoordinationReviewUseCurrentProject
Finally, some commands have been removed from the Revit UI. These commands can no longer be posted, so the values have been removed from the enumeration:
- ExportBuildingSite
- PublishDGNToAutodeskBuzzsaw
- PublishDWFToAutodeskBuzzsaw
- PublishDWGToAutodeskBuzzsaw
- PublishDXFToAutodeskBuzzsaw
- PublishSATToAutodeskBuzzsaw
- RecentFiles
- ResultsAndCompare
- StairBySketch
- ViewRange
1.11. BuiltInFailures changes
Some changes have been made to existing BuiltInFailure definitions. Code that looks for or handles specific failures may need updating, as it is not possible to obsolete the replaced members, so they have been removed in this release.
- Failure submodule → Removed FailureDefinition → Replacement FailureDefinition
- WallFailures → ExtrudedWallMustBeVertical → ExtrudedWallDisallowedForCrossSectionType
- GroupFailures → FailedToSetMasterGroupId → FailedToSetLeaderGroupId
1.12. Filter API change
The constructor for the class FilterStringRule has been obsoleted and replaced. The previous constructor has a Boolean argument for case sensitivity that was not used in View Filters and could not be used properly from the API, as all string comparisons in filters are case-insensitive:
- Obsoleted member → Replacement member
- FilterStringRule(FilterableValueProvider, FilterStringRuleEvaluator, String, boolean) → FilterStringRule(FilterableValueProvider, FilterStringRuleEvaluator, String)
The method FilterStringRuleEvaluator.Evaluate() still has an argument "caseSensitive", but it's never called by filter code with this argument set to true.
1.13. Ruby macros no longer supported
Due to technology limitations, the Macro Manager no longer supports Ruby language in Revit Macros. The option to create new Ruby macros has been removed from the UI and API, and existing Ruby Macros in previous version documents will be deleted during upgrade.
1.14. TransmissionData API change
Autodesk.Revit.DB.TransmissionData.UserData is now used to store the systems analysis reports path, if any report exists in the document. This is to allow eTransmit to include external reports. The API method itself is not changed.
1.15. Removal of obsoleted APIs
The following previously obsoleted APIs have been removed:
- ModelPathUtils.ConvertCloudGUIDsToCloudPath(Guid projectId, Guid modelId)
- Document.SaveAsCloudModel(String folderId, String modelName)
- MEPModel.ElectricalSystems
- MEPModel.AssignedElectricalSystems
- StructuralConnectionHandler.Create(Document doc, List<ElementId> idsToConnect)
2.1. Sketched Elements API
2.1.1. Ceiling creation
The new methods:
- Ceiling.Create(Document document, IList<CurveLoop> curveLoops, ElementId ceilingTypeId, ElementId level)
- Ceiling.Create(Document document, IList<CurveLoop> curveLoops, ElementId ceilingTypeId, ElementId levelId, Line slopeArrow, double slope)
create a new instance of a ceiling in a Revit project, with one overload supporting a sloped ceiling.fac
2.1.2. Floor APIs
In addition to the replacement Floor creation methods described above, the new method:
- Floor.GetDefaultFloorType(Document document, bool isFoundation)
returns the id of the default floor or foundation type for a document.
2.1.3. Wall APIs
The new methods:
- Wall.CreateProfileSketch()
- Wall.RemoveProfileSketch()
- Wall.CanHaveProfileSketch()
provide access to add and remove profile sketches to wall elements that support them. Once a sketch is added, the profile sketch can be edited using SketchEditScope.
2.1.4. Slanted and Tapered Walls
The new members:
- Wall.CrossSection
- Wall.IsWallCrossSectionValid()
allow assignment of a cross section type to a given wall, and determine if that type can be assigned.
The new enumerations:
- Autodesk.Revit.DB.WallCrossSection
- Autodesk.Revit.DB.WidthMeasuredAt
- Autodesk.Revit.DB.InsertOrientation
enumerate the values for options related to alternate wall cross section values, especially the options available for Tapered walls.
2.1.5. Sketch APIs
The new methods:
- Ceiling.SketchId
- Floor.SketchId
- Wall.SketchId
- Opening.SketchId
return the id of the element's sketch.
The method:
- Sketch.OwnerId
returns the id of the element that owns this sketch.
The new method:
- Sketch.GetAllElements()
returns the ids of all the elements owned by the sketch, including elements of type:
- Autodesk.Revit.DB.ModelCurve
- Autodesk.Revit.DB.ReferencePlane
- Autodesk.Revit.DB.Dimension
This method works for any Sketch you can obtain from a Sketch-based element (Ceiling, Extrusion, etc.). It is available both in and outside of a SketchEditScope.
2.1.6. Editing Sketches with SketchEditScope
Using the new class:
- Autodesk.Revit.DB.SketchEditScope
allows an application to edit sketch based elements while preserving the unchanged elements that are already present in the sketch. While a Sketch editing session is active, you can add, delete or modify Sketch elements (curves, dimensions, reference planes). When you finish the session, the edited Sketch-based element will be updated. Only certain sketches are currently supported for editing:
- Ceiling sketches
- Floor sketches
- Wall profile sketches
- Opening sketches
using the new members:
- SketchEditScope constructor – creates a new SketchEditScope
- SketchEditScope.Start() – starts editing a particular sketch, including starting the associated transaction. After this is started only elements owned by the Sketch and new elements to be added to the Sketch may be modified.
- SketchEditScope.IsSketchEditingSupported() – checks if a particular sketch can be edited with a SketchEditScope.
2.1.7. Boundary validation for sketched elements
The new method:
- BoundaryValidation.IsValidHorizontalBoundary()
validates input curves form a valid horizontal boundary for Ceiling or Floor creation.
2.1.8. CompoundStructure API
The new method:
- CompoundStructure.CanSplitAndMergeRegionsBeUsed()
checks whether split and merge regions operations can be used for this compound structure. This validator is associated with the use of the existing MergeRegionsAdjacentToSegment() and SplitRegion() methods.
2.2. Color Fill API
Multiple new classes provide access to color fills. These classes expose color fill schemes, entries and color fill legends. You can also also a ccess the color fill scheme applied to a particular view.
2.2.1. Color Fill Schemes
The new class:
- Autodesk.Revit.DB.ColorFillScheme
represents a color scheme that can be applied to plan and section views. Key new members of this class include:
- ColorFillScheme.AddEntry()
- ColorFillScheme.RemoveEntry()
- ColorFillScheme.UpdateEntry()
- ColorFillScheme.GetEntries()
- ColorFillScheme.SetEntries()
- ColorFillScheme.SortEntries()
- ColorFillScheme.AreaSchemeId
- ColorFillScheme.CategoryId
- ColorFillScheme.ParameterDefinition
- ColorFillScheme.StorageType
- ColorFillScheme.Title
- ColorFillScheme.Duplicate
- ColorFillScheme.GetFormatOptions()
- ColorFillScheme.SetFormatOptions()
- ColorFillScheme.GetSupportedParameterIds()
2.2.2. Color Fill Scheme Entries
The new class:
- Autodesk.Revit.DB.ColorFillSchemeEntry
represents an entry in a color scheme. Key new members of this class include:
- ColorFillSchemeEntry.Color
- ColorFillSchemeEntry.FillPatternId
- ColorFillSchemeEntry.Caption
- ColorFillSchemeEntry.StorageType
- ColorFillSchemeEntry.IsVisible
- ColorFillSchemeEntry.IsInUse
- ColorFillSchemeEntry.GetIntegerValue()
- ColorFillSchemeEntry.GetDoubleValue
- ColorFillSchemeEntry.GetStringValue()
- ColorFillSchemeEntry.GetElementIdValue()
- ColorFillSchemeEntry.SetIntegerValue()
- ColorFillSchemeEntry.SetDoubleValue()
- ColorFillSchemeEntry.SetStringValue()
- ColorFillSchemeEntry.SetElementIdValue()
2.2.3. View access to Color Fills
The new members:
- View.GetColorFillSchemeId()
- View.SetColorFillSchemeId()
provide access to read and apply the color fill scheme associated with a particular category in the view.
2.2.4. Color Fill Legends
The new class:
- Autodesk.Revit.DB.ColorFillLegend
offers the ability to create, read and modify properties of color fill legend annotation elements in a particular owner view. Key new members of this class include:
- ColorFillLegend.Create()
- ColorFillLegend.GetColumnWidths()
- ColorFillLegend.SetColumnWidths()
- ColorFillLegend.ColorFillCategoryId
- ColorFillLegend.Height
- ColorFillLegend.Origin
2.3. Export API additions
2.3.1. Export to PDF
The new method:
- Document.Export(String, IList<ElementId>, PDFExportOptions)
exports one or more views and sheets in PDF format.
The options provided, in the new class:
- Autodesk.Revit.DB.PDFExportOptions
include graphical options, paper and output format options, and the option to combine output views and sheets into a single PDF or to produce a different PDF for each view and sheet with a specific naming convention.
2.3.2. PDF Export Settings
The new element class:
- Autodesk.Revit.DB.ExportPDFSettings
represents a named stored PDF export option available in a document. You can use this class to extract the options from this element to use for exporting to PDF, or modify or create new stored settings with different options.
2.4. Civil Alignments API
Revit now provides support for Civil Alignments and their associated annotations. Alignments are imported from InfraWorks as a part of the workflow to transfer Civil Structures. The API supports read of alignment properties and geometric information, along with read/write and create of associated annotations. All new classes for the Alignments API are exposed through a different assembly in the Revit installation, located at
- Addins\CivilAlignments\Autodesk.CivilAlignments.DBApplication.dll
The new class:
- Autodesk.Revit.DB.Infrastructure.Alignment
represents an alignment and can be used to find alignments in a document, and to query a particular alignment's properties and to analyze alignment geometry. This object is not an Element, but the underlying Element can be obtained from this object if needed.
The new class:
- Autodesk.Revit.DB.Infrastructure.AlignmentStationLabel
represents an alignment station label annotation and can be used to find such labels in a document as well as to create and modify such labels. This object is not an Element, but the underlying Element (which is a SpotDimension instance) can be obtained from this object if needed.
The new classes:
- Autodesk.Revit.DB.Infrastructure.AlignmentStationLabelOptions
- Autodesk.Revit.DB.Infrastructure.AlignmentStationLabelSetOptions
provide options for creating a single alignment label or for creating a set of alignment labels.
2.5. DirectShape API Additions
2.5.1. Reference Curves, Planes, and Points
The new methods:
- DirectShape.AddReferenceCurve()
- DirectShape.AddReferencePlane()
- DirectShape.AddReferencePoint()
- DirectShapeType.AddReferenceCurve()
- DirectShapeType.AddReferencePlane()
- DirectShapeType.AddReferencePoint()
enable the creation of reference curves, planes and points inside DirectShape elements. Explicit bounds can be provided for direct shape reference curves and planes. Revit tools that can use named references within families will also be able to select the references inside the DirectShape elements.
The overloads for these methods include an optional DirectShapeReferenceOptions input. Use:
- DirectShapeReferenceOptions.Name
to set the assigned name for the reference. If the name is specified, it is visible when picking the reference's geometry. Otherwise, the default DirectShape element name is displayed.
The new validator:
- DirectShapeReferenceOptions.IsValidReferenceName()
validates the name assigned to DirectShapeReferenceOptions.Name.
The new validators:
- DirectShape.IsValidReferenceCurve()
- DirectShape.IsValidReferencePlaneBoundingBoxUV()
- DirectShapeType.IsValidReferenceCurve()
- DirectShapeType.IsValidReferencePlaneBoundingBoxUV()
validates the inputs needed for specifying a plane or curve explicit reference in the DirectShape.
2.5.2. External Geometry
The new class:
- ExternalGeometryId
represents an identifier for geometry from external sources.
The new members:
- ExternalGeometryId.IsValidExternalGeometryId()
- ExternalGeometryId.Id
provide validation of an identifier and a means to access the identifier as a String.
The new class:
- ExternallyTaggedGeometryObject
serves as a base class for externally tagged geometry.
The new members:
- ExternallyTaggedGeometryObject.ExternalId
provides the ExternalGeometryId associated with the geometry.
The new class:
- ExternallyTaggedNonBRep
represents non-BRep geometry with an external identifier.
The new class:
- ExternallyTaggedBRep
represents BRep (Solid) geometry with external identifiers for the BRep itself and any subset of Faces or Edges.
The new class:
- BRepBuilderPersistentIds
Provides a mechanism to associate external identifiers with geometry created by a BRepBuilder.
The new members:
- BRepBuilderPersistentIds.AddSubTag()
- BRepBuilderPersistentIds.IsValidExternalGeometryIdForNewCorrespondence()
- BRepBuilderPersistentIds.IsValidBRepBuilderGeometryIdForNewCorrespondence()
- BRepBuilderPersistentIds.IsAssociatedBRepBuilderValid()
- BRepBuilderPersistentIds.IsBRepBuilderGeometryIdFaceOrEdge()
provide an ability to associate “tags” with Faces and Edges created by BRepBuilder.
A new member:
- BRepBuilder.GetResult()
accepting a BRepBuilderPersistentIds has been added which returns an ExternallyTaggedBRep.
The new class:
- ExternallyTaggedGeometryValidation
provides validators
- ExternallyTaggedGeometryValidation.IsValidGeometry
- ExternallyTaggedGeometryValidation.IsNonSolid
- ExternallyTaggedGeometryValidation.IsSolid
to help determine validity of a GeometryObject for use with the new externally tagged geometry.
The new members:
- DirectShape.AddExternallyTaggedGeometry()
- DirectShape.GetExternallyTaggedGeometry()
- DirectShape.HasExternallyTaggedGeometry()
- DirectShape.UpdateExternallyTaggedGeometry()
- DirectShape.RemoveExternallyTaggedGeometry()
- DirectShape.ResetExternallyTaggedGeometry()
- DirectShapeType.AddExternallyTaggedGeometry()
- DirectShapeType.GetExternallyTaggedGeometry()
- DirectShapeType.HasExternallyTaggedGeometry()
- DirectShapeType.UpdateExternallyTaggedGeometry()
- DirectShapeType.RemoveExternallyTaggedGeometry()
- DirectShapeType.ResetExternallyTaggedGeometry()
provide a means to add, remove, update, or retrieve an ExternallyTaggedGeometryObject to/from a DirectShape or DirectShapeType.
2.5.3. Custom Family names
The new member:
- DirectShapeType.SetFamilyName()
provides the ability to set a custom Family name for a DirectShapeType.
The new validator:
- DirectShapeType.CanChangeFamilyName()
provides the ability to check if a DirectShapeType supports a custom Family name. Certain categories do not support custom Family names.
2.6. Document & Worksharing API additions
2.6.1. Cloud Model API additions
Four new methods allow access to identifying forge IDs for Cloud Models:
- Document.GetHubId(): ForgeDM hub id where the model locates.
- Document.GetProjectId(): ForgeDM project id where the model locates.
- Document.GetCloudFolderId(bool forceRefresh): ForgeDM folder id where the model locates.
- Document.GetCloudModelUrn(): A ForgeDM Urn identifying the model.
These methods all return strings, which will be empty for a document which is not a cloud model.
2.6.2. OpenOptions API
The new property:
- OpenOptions.IgnoreExtensibleStorageSchemaConflict
allows your application to ignore a schema conflict error on open. The default is false. Setting this to true will ignore the exception of schema conflict while opening the model. Data in the existing schema with the conflicting ID will be erased from the model.
2.7. View API additions
2.7.1. Label for views on sheets (Viewport)
The new property:
- Viewport.LabelOffset
controls the two-dimensional label offset from left bottom corner of the viewport (as established with Rotation set to None) to the left end of the viewport label line.
The new property:
- Viewport.LabelLineLength
controls the length of the viewport label line in sheet space.
2.7.2. Callout view
The new method:
- View.GetCalloutParentId()
returns the ID of a view which this callout references, or InvalidElementId if there is not parent.
The new property:
- View.IsCallout
identifies if the view is a callout view.
2.7.3. Grids in 3D views
Several new methods in View3D control grid visibility in 3D Views:
- View3D.GetLevelsThatShowGrids()
- View3D.ShowGridsOnLevel(ElementId levelId)
- View3D.HideGridsOnLevel(ElementId levelId)
- View3D.ShowGridsOnLevels(ElementIdset levelIds)
2.8. Graphics API additions
2.8.1. Temporary in-canvas graphics
The new class:
- TemporaryGraphicsManager
allows the creation of temporary graphics in the canvas and can be used to create in-canvas controls.
It has the following members:
- TemporaryGraphicsManager.GetTemporaryGraphicsManager()
- TemporaryGraphicsManager.AddControl()
- TemporaryGraphicsManager.UpdateControl()
- TemporaryGraphicsManager.RemoveControl()
- TemporaryGraphicsManager.SetVisibility()
- TemporaryGraphicsManager.GetAll()
- TemporaryGraphicsManager.Clear()
The new class:
- InCanvasControlData
stores a reference to the image used in the temporary graphics. It has the following properties:
- InCanvasControlData.ImagePath
- InCanvasControlData.Position
2.9. Label API additions
The new methods:
- Level.GetNearestLevelId(Document document, double elevation)
- Level.GetNearestLevelId(Document document, double elevation, out double offset)
return the id of the Level which is closest to the specified elevation. The level can be at, above or below the target elevation. If there is more than one Level at the same distance from the elevation, the Level with the lowest id will be returned.
2.10. Parameter API additions
The new class:
- Autodesk.Revit.DB.MultipleValuesIndicationSettings
allows access to the custom value for used in instances of the Properties Palette, Tags and Schedules when multiple elements are referenced and the value of the parameter is different.
The new members:
- MultipleValuesIndicationSettings.GetMultipleValuesIndicationSettings()
- MultipleValuesIndicationSettings.Custom
- MultipleValuesIndicationSettings.CustomValue
- MultipleValuesIndicationSettings.Value
provide access to the settings in the document, the option for the custom value, and read-only access to the value that will be used (either the custom value or the default).
2.11. Dimension API additions
2.11.1. Dimension layout
Several new properties allow access to positioning for various parts of a dimension:
- Dimension.TextPosition
- Dimension.LeaderEndPosition
- Dimension.HasLeader
- SpotDimension.LeaderElbowPosition
- SpotDimension.LeaderHasElbow
2.11.2. DimensionType prefix/suffix
The new properties:
- DimensionType.Prefix
- DimensionType.Suffix
allow access to the corresponding values in the dimension type.
2.12. Category API additions
2.12.1. Built in Categories
The new methods:
- Category.GetBuiltInCategoryTypeId(BuiltInCategory)
- Category.GetBuiltInCategory(ForgeTypeId)
- Category.IsBuiltInCategory(ForgeTypeId)
allow access to BuiltInCategories.
2.13. Shared Coordinates API additions
2.13.1. Reset Shared Coordinates
The new method:
- Document.ResetSharedCoordinates()
resets the shared coordinates for the host model. It provides the same functionality as the UI Command "Reset Shared Coordinates".
After resetting coordinates, the following changes will take place:
- GIS coordinate system will be erased
- Shared coordinates relationships with other linked models will be eliminated.
- The Survey Point will be moved back to the startup location, where it coincides with the Internal Origin.
- The angle between Project North and True North will be reset to 0.
Note: There will be no changes to linked models.
2.13.2. Clipped state of BasePoint
The new property:
- bool BasePoint.Clipped
will get or set the clipped state of the survey point BasePoint based on the active ProjectLocation of its Document. For the project base point, the get method will always return false, and the set method will throw an exception.
2.14. Revision API additions
Revision sequences and API additions
The new class:
- Autodesk.Revit.DB.RevisionNumberingSequence
defines the sequences by which numbers are assigned to Revisions. Revision numbering is either numeric or alphanumeric. Revision numbering is assigned to Revisions to control the numbering scheme of that Revision. Alphanumeric from the API corresponds to the UI concept of "Custom".
The new members:
- RevisionNumberingSequence.CreateNumericSequence()
- RevisionNumberingSequence.CreateAlphanumericSequence()
- RevisionNumberingSequence.GetSequenceName()
- RevisionNumberingSequence.SetSequenceName()
- RevisionNumberingSequence.GetNumericRevisionSettings()
- RevisionNumberingSequence.SetNumericRevisionSettings()
- RevisionNumberingSequence.GetAlphanumericRevisionSettings()
- RevisionNumberingSequence.SetAlphanumericRevisionSettings()
- RevisionNumberingSequence.GetAllRevisionNumberingSequences()
- RevisionNumberingSequence.HasValidRevisionSettingsForNumberType()
- RevisionNumberingSequence.HasValidNumericRevisionSettings()
- RevisionNumberingSequence.HasValidAlphanumericRevisionSettings()
- RevisionNumberingSequence.NumberType
provide the ability to create, read and modify the settings related to Revision numbering sequences.
The new methods:
- Revision.GetRevisionNumberingSequenceId()
- Revision.SetRevisionNumberingSequenceId()
provide access to the id of the revision numbering sequence which controls this revision's numbering:
The new methods:
- NumericRevisionSettings.GetMinimumDigits() – get the minimum number of digits for a revision number.
- NumericRevisionSettings.SetMinimumDigits() – set the minimum number of digits for a revision number.
provide access to the setting controlling the minimum number of digits for a revision number.
2.15. Phasing API additions
The new methods:
- Element.IsDemolishedPhaseOrderValid()
- Element.IsCreatedPhaseOrderValid()
validate the order of phases on a given element with respect to the input phase id, ensuring that an object is not assigned a phase where it is demolished before it was created.
2.16. Geometry API additions
The new property:
- Mesh.IsClosed
checks if each edge in the mesh belongs to at least two faces.
2.17. Point Cloud API additions
The new method:
- PointCloudType.GetReCapProject()
provides a direct entry point to get access to an object from the ReCap SDK (ReCapWrapper.RCProject) from Revit. This object represents the point cloud from the RC file path stored in PointCloudType. The ReCap assembly ReCapWrapper.dll will need to be included into code using this method.
The coordinate system in RCProject is defined by the Point Cloud. Please refer to ReCap SDK documentation for RCProject.getCoordinateSystem(). If you need points converted to the modeling coordinate system in Revit, you can obtain the transformation matrix from PointCloudInstance.GetTransform().
2.18. Schedule API additions
2.18.1. Multiple Value Indication – schedule customization
The existing class:
- ScheduleField
has several new properties which allow customization of the multiple value indication per field:
- ScheduleField.MultipleValuesDisplayType
- ScheduleField.MultipleValuesText – The text to be used when a field has multiple values
- ScheduleField.MultipleValuesCustomText – The text to be used when a field has multiple values and the display type is set to ScheduleFieldMultipleValuesDisplayType.Custom
The new Enum:
- ScheduleFieldMultipleValuesDisplayType
defines how the schedule field's multiple value indication is displayed (using the project setting, a custom text or a predefined text "
2.19. Import API additions
2.19.1. Import/Link Rhino
The new methods:
- Document.Import(String, ImportOptions3DM, View)
- Document.Link(String, ImportOptions3DM, View)
import or link a 3DM file into the document.
2.20. Structural API additions
2.20.1. Moving individual rebar in a Rebar Set
The new methods:
- Rebar.MoveBarInSet()
- Rebar.GetBarIndexFromReference()
- Rebar.GetMovedBarTransform()
- Rebar.ResetMovedBarTransform()
allow an application to move an individual bar, and to read and reset the transform of the individual bar in a Rebar Set.
2.20.2. Removing individual bars from a Rebar Set
The new function:
- Rebar.SetBarIncluded()
allows you to designate a particular bar at a given index to be included or not.
The existing properties:
- Rebar.IncludeFirstBar
- Rebar.IncludeFirstBar
continue to function as before, and setting these to true are equivalent to removing the bar at the first or last position index.
The existing function:
- Rebar.DoesBarExistAtPosition()
now supports returning false for any bar position index and not just the first or last bar.
2.20.3. Moving and Removing bars owned by PathReinforcement
The new methods:
- RebarInSystem.SetBarIncluded()
- RebarInSystem.MoveBarInSet()
- RebarInSystem.GetMovedBarTransform()
- RebarInSystem.ResetMovedBarTransform()
- RebarInSystem.CanEditIndividualBars()
provide access to move, include or remove individual bars only for RebarInSystem elements that are owned by PathReinforcement. (This is not supported for RebarInSystem owned by AreaReinforcement).
2.20.4. Area Reinforcement Layers
The new methods:
- AreaReinforcement.GetNumberOfLines()
- AreaReinforcement.GetLineFromLayerAtIndex()
- AreaReinforcement.SetLineIncluded()
- AreaReinforcement.IsLineIncluded()
- AreaReinforcement.MoveLine()
- AreaReinforcement.GetMovedLineTransform()
- AreaReinforcement.ResetMovedLineTransform()
- AreaReinforcement.SetLayerActive()
- AreaReinforcement.IsLayerActive()
- AreaReinforcement.GetLayerDirection()
provide access to the layers of Area Reinforcement elements, and to manipulate (move and remove) the individual lines exposed through those layers.
2.20.5. Rebar conversion
The new methods:
- AreaReinforcement.ConvertRebarInSystemToRebars()
- PathReinforcement.ConvertRebarInSystemToRebars()
convert all of the RebarInSystem elements owned by the input element into equivalent Rebar elements.
2.20.6. Rebar geometry
The new methods:
- Rebar.GetTransformedCenterlineCurves()
- RebarInSystem.GetTransformedCenterlineCurves()
return the centerline curves for a given bar, where the geometry of the curves are in the actual transformed position. The BarPositionTransform (representing the relative position of any individual bar in the set – a translation along the distribution path) and MovedBarTransform (representing the movement of the bar relative to its default position along the distribution path) will be applied to the returned curves.
2.20.7. Freeform Rebar
The new properties:
- RebarFreeFormAccessor.RebarStyle
- RebarFreeFormAccessor.StirrupTieAttachmentType
provides read and write access to the corresponding properties of freeform rebar elements.
The new method:
- RebarFreeFormAccessor.SetReportedShape()
changes the rebar shape of a freeform rebar that is currently using the RebarWorkInstructions.Straight option to the provided rebar shape.
2.21. MEP API additions
2.21.1. Building and Space Type additions
Several new properties have been added for Building and Space Types:
- HVACLoadType.HeatingSetPoint – The heating temperature set point in unit Kelvin (K).
- HVACLoadType.CoolingSetPoint – The cooling temperature set point in unit Kelvin (K).
- HVACLoadType.HumidificationSetPoint – The humidification set point as a number between 0 and 1.
- HVACLoadType.DehumidificationSetPoint – The dehumidification set point as a number between 0 and 1.
2.21.2. Zone additions
The new property:
- GenericZone.LevelOffset
gets or sets the offset distance from this zone to the associated level.
2.21.3. Mechanical Systems Analysis Set Points
The new properties:
- HVACLoadType.HeatingSetPoint
- HVACLoadType.CoolingSetPoint
- HVACLoadType.HumidificationSetPoint
- HVACLoadType.DehumidificationSetPoint
provide access to the heating temperature, cooling temperature, humidification and dehumidifcation set point values. Temperature set points are in Kelvin, while humidity set points are percentages ranging from 0 to 1.
2.21.4. Analysis Report Style
The new property:
- ViewSystemsAnalysisReport.ReportStyle
accesses the report style used in a particular analysis report view.
2.21.5. MEP Hidden Line Settings
The new class:
- Autodesk.Revit.DB.Mechanical.MEPHiddenLineSettings
represents the settings of the mechanical hidden line display (e.g. ducts and pipes). It can be obtained from the static method:
- MEPHiddenLineSettings.GetMEPHiddenLineSettings(Document)
It offers the following properties:
- MEPHiddenLineSettings.DrawHiddenLine
- MEPHiddenLineSettings.LineStyle
- MEPHiddenLineSettings.InsideGap
- MEPHiddenLineSettings.OutsideGap
- MEPHiddenLineSettings.SingleLineGap
2.21.6. Electrical Panel Schedule
The new property:
- PanelScheduleData.IsAutoShadingForLoadDisplay
indicates if a panel schedule will display shading for Load cells automatically.
2.21.7. Conversion to Fabrication
The new method to the DesignToFabricationConverter class:
- DesignToFabricationConverter.SetMapForFamilySymbolToFabricationPartType()
The method will set a map used when the design to fabrication tool is running. The map relationships will be used to replace any family instance that is based upon the family symbols found in the map with the corresponding fabrication part for the fabrication part type set in the mapping.
2.22. Energy Analysis API additions
The options used to produce an energy model or export to gbXML have been unified.
The new enumeration value:
- AnalysisMode.RoomsOrSpaces
indicates that the energy analysis model should be based on volumes from rooms or spaces defined in the building model.
The new enumeration values:
- EnergyModelType.AnalysisMode
- ExportEnergyModelType.AnalysisMode
allow specification of the energy model production based on the given analysis type.