Share

Floor.Create(Document, IList<CurveLoop>, ElementId, ElementId, Boolean, Line, Double) Method

Creates a new instance of floor within the project.


Namespace: Autodesk.Revit.DB
Assembly: RevitAPI (in RevitAPI.dll) Version: 26.1.0.0 (26.1.0.34)

Syntax

C#

public static Floor Create(
	Document document,
	IList<CurveLoop> profile,
	ElementId floorTypeId,
	ElementId levelId,
	bool isStructural,
	Line slopeArrow,
	double slope
)

Parameters

document  Document
The document in which the new floor is created.
profile  IList<CurveLoop>
An array of planar curve loops that represent the profile of the floor.
floorTypeId  ElementId
Id of the floor type to be used by the new Floor.
levelId  ElementId
Id of the level on which the floor is to be placed.
isStructural  Boolean
True if new floor should be structural, false if architectural.
slopeArrow  Line
A line used to control the slope angle of the Floor. It must be horizontal. If slopeArrow is nullptr, the horizontal floor will be created.
slope  Double
The slope angle. If slopeArrow is nullptr, this parameter will be ignored.

Return Value

Floor
If successful a new floor object within the project.

Exceptions

ExceptionCondition
ArgumentException The ElementId levelId is not a Level. -or- The floorTypeId does not correspond to a FloorType. -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 horizontal or null. -or- Input curves build invalid sketch. -or- Failed to create curve elements.
ArgumentNullException A non-optional argument was null
InvalidOperationException Cannot generate a sketch. -or- Failed to create new element.
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.
ModificationOutsideTransactionException The document has no open transaction.

Remarks

To validate curve loop profile use BoundaryValidation. To get default floor type use GetDefaultFloorType(Document, Boolean).

Example

C#

/// The example below shows how to use Floor.Create method to create a new slopped floor on one level 
/// using a geometry profile and a floor type. 
/// In this sample, the geometry profile is a CurveLoop of lines, you can also use arcs, ellipses and splines.
Floor CreateSlopedFloor(Document document, Level level)
{
   // Get a floor type for floor creation
   ElementId floorTypeId = Floor.GetDefaultFloorType(document, false);

   // Build a floor profile for the floor creation
   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 Floor.Create(document, new List<CurveLoop> { profile }, floorTypeId, level.Id, true, slopeArrow, Math.PI / 2);
}

VB

Private Function CreateSlopedFloor(ByVal document As Document, ByVal level As Level) As Floor
   Dim floorTypeId As ElementId = Floor.GetDefaultFloorType(document, False)
   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 Floor.Create(document, New List(Of CurveLoop) From {
          profile
      }, floorTypeId, level.Id, True, slopeArrow, Math.PI / 2)
End Function

See Also

Reference

Was this information helpful?