ProjectionZ Property


The Z projection option.

Namespace: Autodesk.Revit.DB.Structure
Assembly: RevitAPI (in RevitAPI.dll) Version: 17.0.0.0 (17.0.1090.0)
Since: 2015

Syntax

C#
public SurfaceElementProjectionZ ProjectionZ { get; set; }
Visual Basic
Public Property ProjectionZ As SurfaceElementProjectionZ
	Get
	Set
Visual C++
public:
property SurfaceElementProjectionZ ProjectionZ {
	SurfaceElementProjectionZ get ();
	void set (SurfaceElementProjectionZ value);
}

Remarks

Retrieves and set analytical model projection information for Z direction. To set projection to level, grid or plane use ProjectionPlaneZ property.

Examples

Copy C#
/// <summary>
/// Change the Z projection for all surface elements to BottomOrExterior
/// </summary>
public void ChangeSurfaceProjections(Document document)
{
    FilteredElementCollector collector = new FilteredElementCollector(document);
    IList<Element> elements = collector.WherePasses(new ElementClassFilter(typeof(AnalyticalModelSurface))).WhereElementIsNotElementType().ToElements();
    if (elements.Count > 0)
    {
        using (Transaction tran = new Transaction(document, "Change Surface Projections"))
        {
            tran.Start();
            foreach (AnalyticalModelSurface ams in elements)
            {
                SurfaceElementProjectionZ orgEndProj = ams.ProjectionZ;
                SurfaceElementProjectionZ newEndProj = SurfaceElementProjectionZ.BottomOrExterior;
                ams.ProjectionZ = newEndProj;
            }
            tran.Commit();
        }
    }
}
Copy VB.NET
''' <summary>
''' Change the Z projection for all surface elements to BottomOrExterior
''' </summary>
Public Sub ChangeSurfaceProjections(document As Document)
   Dim collector As New FilteredElementCollector(document)
   Dim elements As IList(Of Element) = collector.WherePasses(New ElementClassFilter(GetType(AnalyticalModelSurface))).WhereElementIsNotElementType().ToElements()
   If elements.Count > 0 Then
      Using tran As New Transaction(document, "Change Surface Projections")
         tran.Start()
         For Each ams As AnalyticalModelSurface In elements
            Dim orgEndProj As SurfaceElementProjectionZ = ams.ProjectionZ
            Dim newEndProj As SurfaceElementProjectionZ = SurfaceElementProjectionZ.BottomOrExterior
            ams.ProjectionZ = newEndProj
         Next
         tran.Commit()
      End Using
   End If
End Sub

Exceptions

Exception Condition
Autodesk.Revit.Exceptions ArgumentOutOfRangeException When setting this property: A value passed for an enumeration argument is not a member of that enumeration

See Also

ArchiLabs Desktop

Put AI to work inside Revit.

Give Desktop your instructions and project files to build Revit families, update model elements, and create views and schedules. Works directly in Revit and AutoCAD.

Explore Desktop →