FamilyItemFactory.NewRevolveForms
Method
Description:
Create new Form elements by revolve operation, and add them into the Autodesk Revit family document.
Create new Form elements by revolve operation, and add them into the Autodesk Revit family document.
Remarks:
Typically this operation produces only a single form, but some combinations of arguments will create multiple forms from a single profile.
Typically this operation produces only a single form, but some combinations of arguments will create multiple forms from a single profile.
Syntax
public FormArray NewRevolveForms(
bool isSolid,
ReferenceArray profile,
Reference axis,
double startAngle,
double endAngle
)
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;
}
Parameters
Parameter | Type | Description |
---|---|---|
isSolid | Boolean | Indicates if the Form is Solid or Void. |
profile | 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 | Reference | The axis of revolution. The axis is a line that must lie in the same plane as the curves in the profile. |
startAngle | Double | The start angle of Revolution in radians. |
endAngle | Double | The end angle of Revolution in radians. |
Return Value
Type | Description |
---|---|
FormArray | If creation was successful new forms are returned. |