Creates a new instance of architectural floor within the project. 
   Namespace:   Autodesk.Revit.DB  
  Assembly:   RevitAPI  (in RevitAPI.dll) Version: 22.0.0.0 (22.1.0.0) 
  Since:  2022 
Syntax
| C# | 
|---|
   |  
| Visual Basic | 
|---|
   |  
| Visual C++ | 
|---|
   |  
Parameters
- document
 -  Type:  Autodesk.Revit.DB Document  
The document in which the new floor is created. 
- profile
 -  Type:  System.Collections.Generic IList   CurveLoop  
An array of planar curve loops that represent the profile of the floor. 
- floorTypeId
 -  Type:  Autodesk.Revit.DB ElementId  
Id of the floor type to be used by the new Floor. 
- levelId
 -  Type:  Autodesk.Revit.DB ElementId  
Id of the level on which the floor is to be placed. 
Return Value
If successful a new floor object within the project.Remarks
 To validate curve loop profile use  BoundaryValidation  . To get default floor type use  GetDefaultFloorType(Document, Boolean)  . 
 Examples
Floor CreateFloorAtElevation(Document document, Level level, double elevation)
{
   // 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, 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 floor = Floor.Create(document, new List<CurveLoop> { profile }, floorTypeId, level.Id);
   Parameter param = floor.get_Parameter(BuiltInParameter.FLOOR_HEIGHTABOVELEVEL_PARAM);
   param.Set(elevation);
   return floor;
} Exceptions
| Exception | Condition | 
|---|---|
| Autodesk.Revit.Exceptions 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- 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. |