Create new Form element by Extrude operation, and add it into the Autodesk Revit family document.
Namespace: Autodesk.Revit.CreationAssembly: RevitAPI (in RevitAPI.dll) Version: 26.4.0.0 (26.4.0.0)
Syntax
C#
public Form NewExtrusionForm(
bool isSolid,
ReferenceArray profile,
XYZ direction
)
Parameters
- isSolid Boolean
- Indicates if the Form is Solid or Void.
- profile ReferenceArray
- The profile of extrusion. It should consist of only one curve loop.
- direction XYZ
- The direction of extrusion, with its length the length of the extrusion. The direction must be perpendicular to the plane determined by profile. The length of vector must be non-zero.
Return Value
FormIf creation was successful new form is returned.
Exceptions
| Exception | Condition |
|---|
| InvalidOperationException |
Thrown when creation is attempted in Conceptual Mass, 2D, or other family where extrusions cannot be created.
|
Example
C#
private Form CreateExtrusionForm(Autodesk.Revit.DB.Document document)
{
Form extrusionForm = null;
ReferenceArray ref_ar = new ReferenceArray();
XYZ ptA = new XYZ(10, 10, 0);
XYZ ptB = new XYZ(90, 10, 0);
ModelCurve modelcurve = MakeLine(document, ptA, ptB);
ref_ar.Append(modelcurve.GeometryCurve.Reference);
ptA = new XYZ(90, 10, 0);
ptB = new XYZ(10, 90, 0);
modelcurve = MakeLine(document, ptA, ptB);
ref_ar.Append(modelcurve.GeometryCurve.Reference);
ptA = new XYZ(10, 90, 0);
ptB = new XYZ(10, 10, 0);
modelcurve = MakeLine(document, ptA, ptB);
ref_ar.Append(modelcurve.GeometryCurve.Reference);
XYZ direction = new XYZ(0, 0, 50);
extrusionForm = document.FamilyCreate.NewExtrusionForm(true, ref_ar, direction);
int profileCount = extrusionForm.ProfileCount;
return extrusionForm;
}
public ModelCurve MakeLine(Document doc, XYZ ptA, XYZ ptB)
{
Autodesk.Revit.ApplicationServices.Application app = doc.Application;
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);
ModelCurve modelcurve = doc.FamilyCreate.NewModelCurve(line, skplane);
return modelcurve;
}
VB
Private Function CreateExtrusionForm(document As Autodesk.Revit.DB.Document) As Form
Dim extrusionForm As Form = Nothing
Dim ref_ar As New ReferenceArray()
Dim ptA As New XYZ(10, 10, 0)
Dim ptB As New XYZ(90, 10, 0)
Dim modelcurve As ModelCurve = MakeLine(document, ptA, ptB)
ref_ar.Append(modelcurve.GeometryCurve.Reference)
ptA = New XYZ(90, 10, 0)
ptB = New XYZ(10, 90, 0)
modelcurve = MakeLine(document, ptA, ptB)
ref_ar.Append(modelcurve.GeometryCurve.Reference)
ptA = New XYZ(10, 90, 0)
ptB = New XYZ(10, 10, 0)
modelcurve = MakeLine(document, ptA, ptB)
ref_ar.Append(modelcurve.GeometryCurve.Reference)
Dim direction As New XYZ(0, 0, 50)
extrusionForm = document.FamilyCreate.NewExtrusionForm(True, ref_ar, direction)
Dim profileCount As Integer = extrusionForm.ProfileCount
Return extrusionForm
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
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)
Dim modelcurve As ModelCurve = doc.FamilyCreate.NewModelCurve(line__1, skplane)
Return modelcurve
End Function
See Also
Reference