Creates a new instance of ceiling within the project.
Namespace: Autodesk.Revit.DB
Assembly: RevitAPI (in RevitAPI.dll) Version: 23.0.0.0 (23.1.0.0)
Since: 2022
Syntax
C# |
---|
|
Visual Basic |
---|
|
Visual C++ |
---|
|
Parameters
- document
- Type: Autodesk.Revit.DB Document
The document in which the new ceiling is created.
- curveLoops
- Type: System.Collections.Generic IList CurveLoop
An array of planar curve loops that represent the profile of the ceiling.
- ceilingTypeId
- Type: Autodesk.Revit.DB ElementId
Id of the ceiling type to be used by the new ceiling. If InvalidElementId is passed, the default type will be used.
- levelId
- Type: Autodesk.Revit.DB ElementId
Id of the level on which the ceiling is to be placed.
Return Value
If successful a new ceiling object within the project.Remarks
To validate curve loop profile use BoundaryValidation .
Examples

Ceiling CreateCeilingAtElevation(Document document, Level level, double elevation)
{
XYZ first = new XYZ(0, 0, 0);
XYZ second = new XYZ(20, 0, 0);
XYZ third = new XYZ(20, 15, 0);
XYZ fourth = new XYZ(0, 15, 0);
CurveLoop profile = new CurveLoop();
profile.Append(Line.CreateBound(first, second));
profile.Append(Line.CreateBound(second, third));
profile.Append(Line.CreateBound(third, fourth));
profile.Append(Line.CreateBound(fourth, first));
var ceiling = Ceiling.Create(document, new List<CurveLoop> { profile }, ElementId.InvalidElementId, level.Id);
Parameter param = ceiling.get_Parameter(BuiltInParameter.CEILING_HEIGHTABOVELEVEL_PARAM);
param.Set(elevation);
return ceiling;
}

Private Function CreateCeilingAtElevation(ByVal document As Document, ByVal level As Level, ByVal elevation As Double) As Ceiling
Dim first As XYZ = New XYZ(0, 0, 0)
Dim second As XYZ = New XYZ(20, 0, 0)
Dim third As XYZ = New XYZ(20, 15, 0)
Dim fourth As XYZ = New XYZ(0, 15, 0)
Dim profile As CurveLoop = New CurveLoop()
profile.Append(Line.CreateBound(first, second))
profile.Append(Line.CreateBound(second, third))
profile.Append(Line.CreateBound(third, fourth))
profile.Append(Line.CreateBound(fourth, first))
Dim ceiling = Autodesk.Revit.DB.Ceiling.Create(document, New List(Of CurveLoop) From {
profile
}, ElementId.InvalidElementId, level.Id)
Dim param As Parameter = ceiling.Parameter(BuiltInParameter.CEILING_HEIGHTABOVELEVEL_PARAM)
param.[Set](elevation)
Return ceiling
End Function
Private Function IExternalCommand_Execute(commandData As ExternalCommandData, ByRef message As String, elements As ElementSet) As Result Implements IExternalCommand.Execute
Throw New NotImplementedException()
End Function
Exceptions
Exception | Condition |
---|---|
Autodesk.Revit.Exceptions ArgumentException | The ElementId levelId is not a Level. -or- The ElementId ceilingTypeId does not correspond to a CeilingType. -or- The input curve loops cannot compose a valid boundary, that means: the "curveLoops" collection is empty; or some curve loops intersect with each other; or each curve loop is not closed individually; or each curve loop is not planar; or each curve loop is not in a plane parallel to the horizontal(XY) plane; or input curves contain at least one helical curve. -or- Input curves build invalid sketch. -or- Failed to create curve elements. |
Autodesk.Revit.Exceptions ArgumentNullException | A non-optional argument was null |
Autodesk.Revit.Exceptions InvalidOperationException | Cannot generate a sketch. -or- Failed to create new element. |
Autodesk.Revit.Exceptions ModificationForbiddenException | The document is in failure mode: an operation has failed, and Revit requires the user to either cancel the operation or fix the problem (usually by deleting certain elements). -or- The document is being loaded, or is in the midst of another sensitive process. |
Autodesk.Revit.Exceptions ModificationOutsideTransactionException | The document has no open transaction. |