FamilyItemFactoryNewExtrusionForm Method |
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: 25.0.0.0 (25.0.0.0)
Syntaxpublic Form NewExtrusionForm(
bool isSolid,
ReferenceArray profile,
XYZ direction
)
Public Function NewExtrusionForm (
isSolid As Boolean,
profile As ReferenceArray,
direction As XYZ
) As Form
public:
Form^ NewExtrusionForm(
bool isSolid,
ReferenceArray^ profile,
XYZ^ direction
)
member NewExtrusionForm :
isSolid : bool *
profile : ReferenceArray *
direction : XYZ -> Form
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.
ExceptionsException | Condition |
---|
InvalidOperationException |
Thrown when creation is attempted in Conceptual Mass, 2D, or other family where extrusions cannot be created.
|
Exampleprivate 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;
}
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
No code example is currently available or this language may not be supported.
No code example is currently available or this language may not be supported.
See Also