The Revit MEP 2011 API

Revit 2010 and 2011 both put a strong focus on the development of Revit MEP, both from an end user and a programming point of view. The API features provided with Revit 2011 provide important new functionality for Revit MEP add-in developers. Of course, the entire platform API features such as dynamic update, analysis visualization, user interface integration, selection mechanism, transactions and other enhancements are applicable and extremely useful to MEP add-ins as well. A number of additional MEP specific enhancements have also been added. The main ones are the support for cable trays, conduits and panel schedules, all of which are fully supported by the API as well as the user interface.

Revit MEP Product Features

The key features of Revit MEP 2011 from a product point of view are the new cable tray and conduit elements and the support for electrical panel schedules.

Cable Tray and Conduit

Revit 2011 includes support for modelling conduit and cable tray as unique object types. The goal of this feature is to represent real world conduit and cable tray for coordination purposes and for accurate and legible construction drawings.

Cable trays and conduits and can be routed as individual runs with or without individual fittings placed between straight sections. Conduit runs without fittings would be used for conduit that is bent to change directions instead of having actual fittings. When using conduit or cable tray runs without fittings, you can now use a new schedule type to report the overall length of the run. These schedule types have categories of Conduit Runs and Cable Tray Runs respectively.

Cable trays can be drawn as channel or ladder type.

Conduits can be connected to cable tray segments. The conduit does not have to actually touch the cable tray to connect. For example, you can connect a conduit 6 below the cable tray and have the conduit end update if the cable tray segment is moved.

Conduit and cable tray each support graphics with varying levels of detail in fine, medium, and coarse display.

A new type of connector is now available for connecting conduit to equipment. This new surface connector enables an entire face of a piece of equipment to accept conduit connections without having to manually add individual conduit connectors to the equipment. This makes connecting to equipment such as switchgear, transformers and panels faster and easier.

Panel Schedules

You can create a schedule that lists the circuits connected to a panel, and displays information about each circuit such as location on the panel, circuit name, apparent loads, etc. Panel schedules display three main information sections: a header, circuit table, and a loads summary. A new Panel Schedule view for the selected panel is displayed in the drawing area, and panel schedules are added to the project browser under the Panel Schedules folder. A panel schedule shows the following data:

Additional circuit and panel information to display can be specified in the panel schedule templates.

Other Enhancements

Placing Valves and Fittings in Section or Elevation Views

It is now possible to place valves, fittings, and other types of duct or piping accessories while in an elevation or section view. For example, you can switch to an elevation view and place a valve in a vertical pipe.

Tagging of MEP Elements during placement

You can now tag MEP components as they are being placed instead of doing so in a separate step.

Piping Companion Flanges

There is a new pipe fitting type for flanges. If you define a flanged pipe type, you can edit the type and specify a companion flange that will be automatically inserted between the pipes and flanged fittings and on connections to equipment like pumps.

Oval Duct

Oval ducts are now available in addition to the rectangular and round duct shapes. New size separators are available for oval duct size annotations and oval ducts can be used in duct sizing.

Demand Factors and Load Categories

Demand factors have been updated to allow for more control over how demand loads are calculated and can be customized. Load categories are customizable and can be displayed in panel schedules.

New Electrical Content

Many new types of electrical content have been added. New content is provided for communications, fire safety, data, nurse call, etc. Control panels have been added in addition to the individual controls or devices, so several of these objects can be connected to their appropriate panels.

The Revit MEP API

Many of the enhancements to the Revit 2011 MEP specific API are related to the electrical domain, since the HVAC and mechanical domains were a primary focus of the previous Revit MEP 2010 API release. We later also presented a full overview of the entire Revit MEP API.

Paralleling the product features, the cable tray, conduit and panel schedules are the main areas of enhancement in 2011. A number of other topics have been addressed as well.

Cable Tray and Conduit

The entire new cable tray and conduit feature is fully exposed through the API. Whatever can be done in the user interface should be possible using the API as well. A number of new classes and elements related to the cable tray and conduit ones have been added. The major ones are:

As a result of the introduction of these new conduit elements, the previously existing classes ConduitType and ConduitTypeSet have been renamed to WireConduitType and WireConduitTypeSet.

Panel Schedules

A new comprehensive API has been introduced to support access to panel schedules and their contents. The major classes exposed by this API are:

Other Enhancements

New Element Creation Paradigm

In previous versions of the Revit API, almost all new element creation functionality was provided by the creation application and document classes in the Autodesk.Revit.Creation namespace. The Revit 2011 API introduces a new paradigm for by providing creation methods for new elements as static members on the classes themselves. This paradigm is demonstrated by the new Revit MEP API classes. For instance, to create a new Conduit element, you use the static Create method on the Conduit class:

  Conduit conduit = Conduit.Create(
    doc, idConduitType,
    startPoint, endPoint,
    idLevel );

For greater clarity, the gbXMLParamElem class has been renamed to EnergyDataSettings, and some of its members were renamed as well.

Validation in ElectricalSystem Properties

The ElectricalSystem properties Length and VoltageDrop now throw an InvalidOperationException when the value cannot be computed, instead of returning zero.

WireMaterialType, InsulationType, TemperatureRatingType

These classes now inherit from ElementType.

DuctConnector, PipeConnector, ElectricalConnector

These classes now inherit from a new common ConnectorElement base class.

Demand Factor and Load Classifications

The ElectricalSystem LoadClassification property has been replaced with a new property LoadClassifications. It returns a semicolon-delimited string listing the load classifications assigned to the system. Load classifications are now elements and can be found through regular element iteration.

The class DemandFactor was replaced by ElectricalDemandFactorDefinition.

The ElectricalSetting method GetDemandFactor has been replaced by the DemandFactorId property on the ElectricalLoadClassification class, which returns the id of the ElectricalDemandFactorDefinition element assigned to the load classification.

Revit MEP API Samples

For completeness' sake, here is a complete overview of available Revit MEP API samples:

From what we discussed above, you can probably guess that the new ones for Revit MEP 2011 are the ones marked with an asterisk dealing with panel schedules, conduits, and cable trays.

We discussed the existing samples in the Revit MEP API overview and the Autodesk University 2009 presentation CP308-2 All Systems Go in the New Autodesk Revit MEP API.
Panel Schedules

The Revit SDK includes one new MEP specific sample application named PanelSchedule. It defines three external commands to demonstrate the use of the new panel schedule API:

Pipe to Conduit Converter

Just last week, I presented my pipe to conduit converter add-in sample application p2c demonstrating a practical use of the new conduit elements. In addition, it implements a useful end user utility for converting pipes to conduits, and offered a great opportunity to discuss many aspect of the generic new Revit 2011 API functionality.

Cable Tray Fitting Creation

The creation of cable tray elements is also based on the new element creation paradigm mentioned above for conduits and is pretty straightforward. To add fittings between the straight cable tray segments requires exact alignment of the segments, however, and will be the topic of a future post.