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