Create Method (Document, IList(CurveLoop), ElementId, ElementId, Line, Double)


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#
public static Ceiling Create(
	Document document,
	IList<CurveLoop> curveLoops,
	ElementId ceilingTypeId,
	ElementId levelId,
	Line slopeArrow,
	double slope
)
Visual Basic
Public Shared Function Create ( _
	document As Document, _
	curveLoops As IList(Of CurveLoop), _
	ceilingTypeId As ElementId, _
	levelId As ElementId, _
	slopeArrow As Line, _
	slope As Double _
) As Ceiling
Visual C++
public:
static Ceiling^ Create(
	Document^ document, 
	IList<CurveLoop^>^ curveLoops, 
	ElementId^ ceilingTypeId, 
	ElementId^ levelId, 
	Line^ slopeArrow, 
	double slope
)

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.
slopeArrow
Type: Autodesk.Revit.DB Line
A line used to control the slope angle of the Ceiling. It must be horizontal.
slope
Type: System Double
The slope angle.

Return Value

If successful a new ceiling object within the project.

Remarks

To validate curve loop profile use BoundaryValidation .

Examples

Copy C#
Ceiling CreateSlopedCeiling(Document document, Level level)
{
   XYZ first = new XYZ(0, 0, 0);
   XYZ second = new XYZ(20, 0, 0);
   XYZ third = new XYZ(20, 20, 0);
   XYZ fourth = new XYZ(0, 20, 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));

   Line slopeArrow = Line.CreateBound(new XYZ(10, 10, 0), new XYZ(11, 10, 0));
   return Ceiling.Create(document, new List<CurveLoop> { profile }, ElementId.InvalidElementId, level.Id, slopeArrow, Math.PI / 2);
}
Copy VB.NET
Private Function CreateSlopedCeiling(ByVal document As Document, ByVal level As Level) 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, 20, 0)
    Dim fourth As XYZ = New XYZ(0, 20, 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 slopeArrow As Line = Line.CreateBound(New XYZ(10, 10, 0), New XYZ(11, 10, 0))
    Return Ceiling.Create(document, New List(Of CurveLoop) From {
        profile
    }, ElementId.InvalidElementId, level.Id, slopeArrow, Math.PI / 2)
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- The slopeArrow must be a horizontal line. -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.

See Also

ArchiLabs

Stop fighting Revit automation.

Build repeatable BIM design and documentation workflows with scripts, data, and AI in one place, without wrestling brittle one-off automations.

Try ArchiLabs →