Currently there is very limited support for design options in Revit API

Querying Design Options

In Revit API, Design Options are represented by the DB.DesignOption

Use the Active Design Option to find the design option that is currently active in Revit UI.

Then you can use the Design Option Identity and Design Option Set Identity to inspect the identity of each Design Option or Design Option Set.

To query all the Design Option Sets and Design Options in a document, use the Query Design Option Sets and Query Design Options components respectively.

Notice that the Design Option Set object is a simple DB.Element since there is very limited support for design options in Revit API

Collecting Design Option Elements

You can pass a design option to the Design Option Filter component to collect the elements belonging to a given design option.

Deleting Design Options

Due to challenges of deleting Design Options, we have not created a workflow yet.

  • Deleting a Design Option, also deletes all the views referencing that design option. A workaround is to read BuiltInParameter.VIEWER_OPTION_VISIBILITY parameter of the view object, and if it has a value, meaning it is referencing a design option, set the value to InvalidElementId to remove the reference. User must also be notified of which views have been changed.
  • Deleting a Design Option, also deletes all the elements inside the design option. Ideally the user needs to decide if any of the elements need to be relocated before Design Option is removed.
  • Design Options can be deleted using Document.Delete()