NewExtrusionForm Method


Create new Form element by Extrude operation, and add it into the Autodesk Revit family document.

Namespace: Autodesk.Revit.Creation
Assembly: RevitAPI (in RevitAPI.dll) Version: 2015.0.0.0 (2015.0.0.0)

Syntax

C#
public Form NewExtrusionForm(
	bool isSolid,
	ReferenceArray profile,
	XYZ direction
)
Visual Basic
Public Function NewExtrusionForm ( _
	isSolid As Boolean, _
	profile As ReferenceArray, _
	direction As XYZ _
) As Form
Visual C++
public:
Form^ NewExtrusionForm(
	bool isSolid, 
	ReferenceArray^ profile, 
	XYZ^ direction
)

Parameters

isSolid
Type: System Boolean
Indicates if the Form is Solid or Void.
profile
Type: Autodesk.Revit.DB ReferenceArray
The profile of extrusion. It should consist of only one curve loop.
direction
Type: Autodesk.Revit.DB 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

If creation was successful new form is returned.

Examples

Copy C#
private Form CreateExtrusionForm(Autodesk.Revit.DB.Document document)
{
    Form extrusionForm = null;

    // Create one profile
    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);

    // The extrusion form direction
    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;
    // Create plane by the points
    Line line = Line.CreateBound(ptA, ptB);
    XYZ norm = ptA.CrossProduct(ptB);
    if (norm.IsZeroLength()) norm = XYZ.BasisZ;
    Plane plane = app.Create.NewPlane(norm, ptB);
    SketchPlane skplane = SketchPlane.Create(doc, plane);
    // Create line here
    ModelCurve modelcurve = doc.FamilyCreate.NewModelCurve(line, skplane);
    return modelcurve;
}
Copy VB.NET
Private Function CreateExtrusionForm(document As Autodesk.Revit.DB.Document) As Form
    Dim extrusionForm As Form = Nothing

    ' Create one profile
    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)

    ' The extrusion form direction
    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
    ' 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 = app.Create.NewPlane(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

Exceptions

Exception Condition
Autodesk.Revit.Exceptions InvalidOperationException Thrown when creation is attempted in Conceptual Mass, 2D, or other family where extrusions cannot be created.

See Also