Create new Form elements by revolve operation, and add them into the Autodesk Revit family document. 
   Namespace:   Autodesk.Revit.Creation  
  Assembly:   RevitAPI  (in RevitAPI.dll) Version: 17.0.0.0 (17.0.1090.0) 
Syntax
| C# | 
|---|
   |  
| Visual Basic | 
|---|
   |  
| Visual C++ | 
|---|
   |  
Parameters
- isSolid
 -  Type:  System Boolean  
Indicates if the Form is Solid or Void. 
- profile
 -  Type:  Autodesk.Revit.DB ReferenceArray  
The profile of the newly created revolution. It should consist of only one curve loop. The profile must be in the same plane as the axis. 
- axis
 -  Type:  Autodesk.Revit.DB Reference  
The axis of revolution. The axis is a line that must lie in the same plane as the curves in the profile. 
- startAngle
 -  Type:  System Double  
The start angle of Revolution in radians. 
- endAngle
 -  Type:  System Double  
The end angle of Revolution in radians. 
Return Value
If creation was successful new forms are returned.Remarks
 Typically this operation produces only a single form, but some combinations of arguments will create multiple forms from a single profile. 
 Examples
private FormArray CreateRevolveForm(Document document)
{
    FormArray revolveForms = null;
    // Create one profile
    ReferenceArray ref_ar = new ReferenceArray();
    XYZ ptA = new XYZ(0, 0, 10);
    XYZ ptB = new XYZ(100, 0, 10);
    Line line = Line.CreateBound(ptA, ptB);
    ModelCurve modelcurve = MakeLine(document, ptA, ptB);
    ref_ar.Append(modelcurve.GeometryCurve.Reference);
    ptA = new XYZ(100, 0, 10);
    ptB = new XYZ(100, 100, 10);
    modelcurve = MakeLine(document, ptA, ptB);
    ref_ar.Append(modelcurve.GeometryCurve.Reference);
    ptA = new XYZ(100, 100, 10);
    ptB = new XYZ(0, 0, 10);
    modelcurve = MakeLine(document, ptA, ptB);
    ref_ar.Append(modelcurve.GeometryCurve.Reference);
    // Create axis for revolve form
    ptA = new XYZ(-5, 0, 10);
    ptB = new XYZ(-5, 10, 10);
    ModelCurve axis = MakeLine(document, ptA, ptB);
    // make axis a Reference Line
    axis.ChangeToReferenceLine();
    // Typically this operation produces only a single form, 
    // but some combinations of arguments will create multiple froms from a single profile.
    revolveForms = document.FamilyCreate.NewRevolveForms(true, ref_ar, axis.GeometryCurve.Reference, 0, Math.PI / 4);
    return revolveForms;
}
public ModelCurve MakeLine(Document doc, XYZ ptA, XYZ ptB)
{
    Autodesk.Revit.ApplicationServices.Application app = doc.Application;
    // Create plane by the points
    Line line = Line.CreateBound(ptA, ptB);
    XYZ norm = ptA.CrossProduct(ptB);
    if (norm.IsZeroLength()) norm = XYZ.BasisZ;
    Plane plane = Plane.CreateByNormalAndOrigin(norm, ptB);
    SketchPlane skplane = SketchPlane.Create(doc, plane);
    // Create line here
    ModelCurve modelcurve = doc.FamilyCreate.NewModelCurve(line, skplane);
    return modelcurve;
} Private Function CreateRevolveForm(document As Document) As FormArray
    Dim revolveForms As FormArray = Nothing
    ' Create one profile
    Dim ref_ar As New ReferenceArray()
    Dim ptA As New XYZ(0, 0, 10)
    Dim ptB As New XYZ(100, 0, 10)
    Dim line__1 As Line = Line.CreateBound(ptA, ptB)
    Dim modelcurve As ModelCurve = MakeLine(document, ptA, ptB)
    ref_ar.Append(modelcurve.GeometryCurve.Reference)
    ptA = New XYZ(100, 0, 10)
    ptB = New XYZ(100, 100, 10)
    modelcurve = MakeLine(document, ptA, ptB)
    ref_ar.Append(modelcurve.GeometryCurve.Reference)
    ptA = New XYZ(100, 100, 10)
    ptB = New XYZ(0, 0, 10)
    modelcurve = MakeLine(document, ptA, ptB)
    ref_ar.Append(modelcurve.GeometryCurve.Reference)
    ' Create axis for revolve form
    ptA = New XYZ(-5, 0, 10)
    ptB = New XYZ(-5, 10, 10)
    Dim axis As ModelCurve = MakeLine(document, ptA, ptB)
    ' make axis a Reference Line
    axis.ChangeToReferenceLine()
    ' Typically this operation produces only a single form, 
    ' but some combinations of arguments will create multiple froms from a single profile.
    revolveForms = document.FamilyCreate.NewRevolveForms(True, ref_ar, axis.GeometryCurve.Reference, 0, Math.PI / 4)
    Return revolveForms
End Function
Public Function MakeLine(doc As Document, ptA As XYZ, ptB As XYZ) As ModelCurve
    Dim app As Autodesk.Revit.ApplicationServices.Application = doc.Application
    ' Create plane by the points
    Dim line__1 As Line = Line.CreateBound(ptA, ptB)
    Dim norm As XYZ = ptA.CrossProduct(ptB)
    If norm.IsZeroLength() Then
        norm = XYZ.BasisZ
    End If
 Dim plane As Plane = plane.CreateByNormalAndOrigin(norm, ptB)
    Dim skplane As SketchPlane = SketchPlane.Create(doc, plane)
    ' Create line here
    Dim modelcurve As ModelCurve = doc.FamilyCreate.NewModelCurve(line__1, skplane)
    Return modelcurve
End Function