RVTDocs.com

FamilyItemFactory.NewBlend

Method
Description:
Add a new Blend instance into the Autodesk Revit family document.
Remarks:
This method creates a blend in a family document. Revit will determine an appropriate default mapping for the vertices of the two profiles. A profile loop cannot contain just one closed curve - in such a case, the curve must be split into at least two segments, so that Revit can find vertices to use for mapping the blend. Caution: several aspects of the Blend are not (easily) predictable from the input arguments. For example, the Blend's TopOffset may be less than its BottomOffset in some cases, depending on the orientations of the profile loops and the orientation of the sketch plane (if a sketch plane is provided). Also, such orientations can affect whether the first or second profile lies in the sketch plane (if a sketch plane is provided).
Syntax
public Blend NewBlend(
	bool isSolid,
	CurveArray profile1,
	CurveArray profile2,
	SketchPlane sketchPlane
)
Examples
private Blend CreateBlend(UIApplication application, SketchPlane sketchPlane)
{
    Blend blend = null;

    // make sure we have a family document
    Document familyDocument = application.ActiveUIDocument.Document;
    if (true == familyDocument.IsFamilyDocument)
    {
        // Define top and base profiles for the blend
        CurveArray topProfile = new CurveArray();
        CurveArray baseProfile = new CurveArray();

        // create rectangular base profile
        XYZ p00 = XYZ.Zero;
        XYZ p01 = new XYZ(10, 0, 0);
        XYZ p02 = new XYZ(10, 10, 0);
        XYZ p03 = new XYZ(0, 10, 0);
        Line line01 = Line.CreateBound(p00, p01);
        Line line02 = Line.CreateBound(p01, p02);
        Line line03 = Line.CreateBound(p02, p03);
        Line line04 = Line.CreateBound(p03, p00);

        baseProfile.Append(line01);
        baseProfile.Append(line02);
        baseProfile.Append(line03);
        baseProfile.Append(line04);

        // create rectangular top profile
        XYZ p10 = new XYZ(5, 2, 10);
        XYZ p11 = new XYZ(8, 5, 10);
        XYZ p12 = new XYZ(5, 8, 10);
        XYZ p13 = new XYZ(2, 5, 10);
        Line line11 = Line.CreateBound(p10, p11);
        Line line12 = Line.CreateBound(p11, p12);
        Line line13 = Line.CreateBound(p12, p13);
        Line line14 = Line.CreateBound(p13, p10);

        topProfile.Append(line11);
        topProfile.Append(line12);
        topProfile.Append(line13);
        topProfile.Append(line14);

        // now create solid rectangular blend
        blend = familyDocument.FamilyCreate.NewBlend(true, topProfile, baseProfile, sketchPlane);

        if (null != blend)
        {
            // move to proper place
            XYZ transPoint1 = new XYZ(0, 11, 0);
            ElementTransformUtils.MoveElement(familyDocument, blend.Id, transPoint1);
        }
        else
        {
            throw new Exception("Create new Blend failed.");
        }
    }
    else
    {
        throw new Exception("Please open a Family document before invoking this command.");
    }

    return blend;
}
Parameters
Parameter Type Description
isSolid Boolean Indicates if the Blend is Solid or Void.
profile1 CurveArray The first blend section. It should represent a single, planar curve loop.
profile2 CurveArray The second blend section. It should represent a single, planar curve loop lying in a plane parallel to that of the first blend section.
sketchPlane SketchPlane The sketch plane for the first profile. Use this to associate the "base" of the blend to geometry from another element. Optional, it can be <span class="keyword"><span data-languagespecifictext="cpp=nullptr|vb=Nothing|nu=null" id="LST11403704_1"></span></span> if you want Revit to derive a new sketch plane from the geometry of the base profile.
Return Value
Type Description
Blend If creation was successful the new blend is returned, otherwise an exception with failure information will be thrown.
Exceptions
Exception Condition
ArgumentException Thrown when the argument is invalid.
InvalidOperationException Thrown when creation is attempted in Conceptual Mass, 2D, or other family where blends cannot be created.
InvalidOperationException Thrown when the creation failed.