This guide discusses a special case of Wall System Families. Basic familiarity with Walls (Basic & Stacked) greatly helps in understanding the Curtain Walls in Autodesk Revit®.

Curtain Grids

Curtain Walls are a special Wall System Family in Autodesk Revit®. The geometry of these walls is generated based on an underlying UV Curtain Grid. The grid configuration is set in the Curtain Wall Type:

Curtain Grids have Grid Lines on the U and V axes. In Revit API, the U direction is the vertical axis of the wall, and the V direction is the direction of the wall base curve (U line swept over the V curve):

Grid Lines can form angles other than 90° (Currently only on non-curved curtain walls):

Curtain Mullions are attached to each Grid Lines segment and are joined based on the configurations set in the Curtain Wall Type:

Curtain Mullions are also attached to the vertical and horizontal borders of the wall. Remember that these border lines are part of the wall topology definition and not the Curtain Grid. The Grid only includes the grid lines created inside the wall boundaries:

4-Sided areas created by the grid are called Grid Cells:

Curtain Panels (system families) or Curtain Panel Family (special type of flexible families that are designed to be inserted into Curtain Cells and act as custom panels) instances can be inserted into these cells to complete the geometry. Curtain Panels can be customized to represent solid panels, glass panels, or even empty (!) areas:

The types of Curtain Mullions and Panels used for a wall are defined in the Curtain Wall Type and can also be overridden on the wall instance.

Walls vs Systems

Curtain Walls and Curtain Systems are almost identical in definition. The only difference is that Curtain Walls are vertical and have directionality so the Grid configuration is set for Vertical and Horizontal grid lines. Curtain Systems can be created from Mass surfaces and thus are not flowing in a certain direction. Hence the Grid configurations is set for Grid 1 and Grid 2 axes.

In Revit API, Curtain Walls are represented by DB.Wall and Curtain Systems are represented by DB.CurtainSystem. The Wall primitive in Rhino.Inside.Revit represents Walls of all kinds. There are also specific primitives that contain data related to Curtain Walls e.g. Curtain System , Curtain Grid , Curtain Cell , etc.

Querying Curtain Walls

Similar to collecting Basic and Stacked Walls, the components shown at Walls (Basic & Stacked) section, can help filtering the Curtain Wall instances and types:

As shown in the images below, a combination of category picker, Category Filter , and Query Types+ v1.0 can be used to filter the Curtain Panel and Curtain Mullion types and instances in a model. However, the collector does not return anything for Curtain Grids. See Analyzing Curtain Walls for better workflows to extract Panel and Mullion information. As you can see, the Curtain Grids graph does not return any results for Grid Types. The Panel and Mullion types can be collected however:

 

 

And the same for collecting instances:

 

Analyzing Curtain Wall Types

Now that we can collect the Curtain Wall Types, use the Analyze Curtain Wall Type shown here to analyze their properties. The Wall Function , Curtain Grid Layout , and Curtain Grid Join Condition components can help filtering based on these values:

Analyzing Curtain Walls

Extracting Curtain Wall Geometry

The full geometry of a Curtain Wall instance can be extracted using the Element Geometry component:

The Element Bounding Geometry component shown here, can be used to extract bounding geometry of a given Curtain Wall instance:

 

Embedded Curtain Walls

Curtain Walls can be embedded inside other walls. The Analyze Curtain Wall component shown above, can provide access the to the parent/host wall (Host Wall), embedding the given Curtain Wall instance. If Curtain Wall is not embedded, null is returned:

Extracting Grid

In Revit API, Curtain Grids are represented by the DB.CurtainGrid

The Analyze Curtain Wall component shown above, can provide access to the Curtain Grid of a Curtain Wall instance. Curtain Grid can be used to extract information about the Grid, and access the individual Cells, Mullions, and Panels on the Curtain Wall:

Analyzing Curtain Grids

Using the component shown here, the Curtain Grid can be further broken down to its properties and hosted elements:

  • Curtain Cells: Returns all the individual Curtain Cells. Cells are the bounded areas between the grid lines
  • Curtain Mullions: Returns all the individual Curtain Mullions
  • Curtain Panels: Returns all the individual Curtain Panels or Family Instances (e.g. Curtain Wall Door) hosted on the Curtain Cells
  • Curtain Grid Lines: Returns all the individual Curtain Grid Lines along U and V directions and their properties

 

Analyzing Cells

In Revit API, Curtain Cells are represented by the DB.CurtainCell

The component shown here, can analyze each curtain cell and extract the cell curves (Curves) and the panelized curves (Planarized Curves):

Note the difference between the cell curves and the panelized curves:

As you can see in the image below, the cell curves follow the curvature of the wall, but the panelized curves, are the curves bounding the flat surface that is bounded inside the cell:

The panelized curves can be used to create faces. Notice that each cell is marked with its index and they are in order from bottom row to the top row:

Analyzing Mullions

In Revit API, Curtain Mullions are represented by the DB.Mullion

The geometry for Curtain Mullions can be extracted by passing the Mullions from Analyze Curtain Wall component, to the Element Geometry component:

 

The component shown here can be used to extract information about the individual Curtain Mullions:

The Axis Curve output provides the axis curve of the Mullion. Notice how the horizontal curves are not intersecting the vertical curves, as the curves follow the join settings for the associated Mullions:

The Mullion location curve can also be extracted by passing the Mullion to a Curve component. Note that some of the mullions might have a length of zero and are not visible as geometries on the curtain walls:

Analyzing Mullion Types

In Revit API, Curtain Mullion Types are represented by the DB.MullionType

The Analyze Mullion Type component shown here can be used to analyze the Mullion Types extracted by the Analyze Mullion component:

The Curtain Mullion System Family value picker can be used to filter the Mullions by their System Family e.g. L Corner Mullions

Analyzing Panels

Curtain Walls can host two types of inserts. They can be either Curtain Panels or instances of Custom Families designed to work with Curtain Walls like a Curtain Wall Door instance. The components shown here help analyzing the Curtain Panels. The family instances can be analyzed using the methods and components provided in Data Model: Types and Data Model: Elements & Instances guides.

In Revit API, Curtain Panels are represented by the DB.Panel

The geometry for Curtain Panels can be extracted by passing the Panels from Analyze Curtain Wall component, to the Element Geometry component:

Notice how the panels are in order from bottom to top row:

Since the Panels output parameter can return both Panels (DB.Panel) and Custom Family Instances (DB.FamilyInstance), the same workflow can extract the geometry of all these insert types:

 

However when extracting information about individual Curtain Panels:, the Panels output needs to be filtered for Panels (DB.Panel), otherwise the Analyze Panel will show an error:

Use the Filter Elements+ v1.0 component, in combination with other filter components e.g. ( Category Filter ), to filter for Panels (DB.Panel):

The Analyze Panel component also provides access to the panel base point(Base Point) and normal/orientation vectors (Orientation):

 

Analyzing Panel Types

In Revit API, Curtain Panel Types are represented by the DB.PanelType

The Analyze Panel Type component shown here can be used to analyze the Panel Types extracted by the Analyze Panel component:

Note that Panel Type output parameter can return a System Panel Type (DB.PanelType) or a Custom Family Symbol (DB.FamilySymbol) depending on the type of Panel inserted into the Grid, so we need to filter for panels first:

Analyzing Grid Lines

In Revit API, Curtain Grid Lines are represented by the DB.CurtainGridLine

The curve for Curtain Grid Lines can be extracted by passing the Grid Lines from Deconstruct Curtain Grid+ v1.0 component, to the Curve component:

The component shown here can be used to extract info about each individual Curtain Grid Line:

Notice the difference between the Curtain Grid Line curves and segments. The Curve output parameter provide access to a single curve for each Curtain Grid Line along the U or V axes:

Whereas the Segments output parameter provides access to all the individual line segments per each Curtain Grid Line and it also includes the unused segments outside of the wall boundaries:

Curtain Grid Line curves and segments are shown here:

Extract Associated Mullions and Panels

The Deconstruct Curtain Line component also provides the Mullions and Panels that are associated with each Grid Line. Notice that the Mullions and Panels on the wall borders are not included since they are not part of the Curtain Grid definition:

 

Panel association is slightly different from Mullions. Each Mullion is associated with a single Grid Line, however a single Panel (since it has two sides) is associated with a Grid Line along the U axis and also another Grid Line along the V:

Creating Curtain Walls

By Profile

Similar to creating a basic wall based on a profile, you can simply create a curtain wall by passing a Curtain Wall Type to the Add Wall (Profile)+ v1.0 component:

Querying Curtain Systems

In Revit API, Curtain System Types are represented by DB.CurtainSystemType. Curtain Systems are represented by DB.CurtainSystem

Curtain System types and instances can be queries using the generic Category Filter , Query Types+ v1.0 , and Query Elements components:

Analyzing Curtain Systems

Analyze Curtain System Type component shown here can be used to extract information about Curtain System types. Note the similarity between the Curtain System Type and Curtain Wall Types:

Extracting information from Curtain System instances are very similar to Curtain Wall instances. Similar to Analyze Curtain Wall component, the Analyze Curtain System Type component provides access to the Curtain Grid definition:

Note that Curtain Systems can have multiple Curtain Grids, each associated with a single face of the source geometry. These curtain grids have independent boundaries and are generated based on the Curtain System Type definition

Once you gain access to the Curtain Grid definition, you can use the Deconstruct Curtain Grid+ v1.0 to extract information, very similar to grids on Curtain Walls: