Family |
Add a new Revolution instance into the Autodesk Revit family document.
Namespace: Autodesk.Revit.Creation
Assembly: RevitAPI (in RevitAPI.dll) Version: 25.0.0.0 (25.0.0.0)

public Revolution NewRevolution(
bool isSolid,
CurveArrArray profile,
SketchPlane sketchPlane,
Line axis,
double startAngle,
double endAngle
)
Parameters
- isSolid Boolean
- Indicates if the Revolution is Solid or Void.
- profile CurveArrArray
- The profile of the newly created revolution. This may contain more than one curve loop. Each loop must be a fully closed curve loop and the loops must not intersect. All loops must lie in the same plane. The loop can be a unbound circle or ellipse, but its geometry will be split in two in order to satisfy requirements for sketches used in extrusions.
- sketchPlane SketchPlane
- The sketch plane for the revolution. The direction of revolution is determined by the normal for the sketch plane.
- axis Line
- The axis of revolution. This axis must lie in the same plane as the curve loops.
- startAngle Double
- The start angle of Revolution in radians.
- endAngle Double
- The end angle of Revolution in radians.
Return Value
RevolutionIf creation was successful the new revolution is returned, otherwise an exception with failure information will be thrown.

Exception | Condition |
---|---|
ArgumentException | Thrown when the input argument-profile-is or empty array. |
ArgumentNullException | Thrown when the input argument-sketchPlane-is . |
ArgumentException | Thrown when the input argument-sketchPlane-is an invalid sketch plane. |
ArgumentNullException | Thrown when the input argument-axis-is . |
InvalidOperationException | Thrown when creation is attempted in Conceptual Mass, 2D, or other family where revolutions cannot be created. |
InvalidOperationException | Thrown when the creation failed. |

This method creates an Revolution in a family document. The Revolution will be rotated the plane of the Revolution profile about the Axis.

private Revolution CreateRevolution(Autodesk.Revit.DB.Document document, SketchPlane sketchPlane)
{
Revolution revolution = null;
// make sure we have a family document
if (true == document.IsFamilyDocument)
{
// Define a profile for the revolution
CurveArrArray curveArrArray = new CurveArrArray();
CurveArray curveArray = new CurveArray();
// create a rectangular profile for the revolution
XYZ p0 = XYZ.Zero;
XYZ p1 = new XYZ(10, 0, 0);
XYZ p2 = new XYZ(10, 10, 0);
XYZ p3 = new XYZ(0, 10, 0);
Line line1 = Line.CreateBound(p0, p1);
Line line2 = Line.CreateBound(p1, p2);
Line line3 = Line.CreateBound(p2, p3);
Line line4 = Line.CreateBound(p3, p0);
XYZ pp = new XYZ(1, -1, 0);
Line axis1 = Line.CreateBound(XYZ.Zero, pp);
curveArray.Append(line1);
curveArray.Append(line2);
curveArray.Append(line3);
curveArray.Append(line4);
curveArrArray.Append(curveArray);
// create solid rectangular revolution
revolution = document.FamilyCreate.NewRevolution(true, curveArrArray, sketchPlane, axis1, -Math.PI, 0);
if (null != revolution)
{
// move to proper place
XYZ transPoint1 = new XYZ(0, 32, 0);
ElementTransformUtils.MoveElement(document, revolution.Id, transPoint1);
}
else
{
throw new Exception("Create a new Revolution failed.");
}
}
else
{
throw new Exception("Please open a Family document before invoking this command.");
}
return revolution;
}
