/// <summary> /// Create one SweptBlend /// </summary> private void CreateSweptBlend() { try { #region Create top and bottom profiles and path curve Autodesk.Revit.DB.XYZ pnt1 = new Autodesk.Revit.DB.XYZ(0, 0, 0); Autodesk.Revit.DB.XYZ pnt2 = new Autodesk.Revit.DB.XYZ(1, 0, 0); Autodesk.Revit.DB.XYZ pnt3 = new Autodesk.Revit.DB.XYZ(1, 1, 0); Autodesk.Revit.DB.XYZ pnt4 = new Autodesk.Revit.DB.XYZ(0, 1, 0); Autodesk.Revit.DB.XYZ pnt5 = new Autodesk.Revit.DB.XYZ(0, 0, 1); CurveArrArray arrarr1 = new CurveArrArray(); CurveArray arr1 = new CurveArray(); arr1.Append(Line.CreateBound(pnt1, pnt2)); arr1.Append(Line.CreateBound(pnt2, pnt3)); arr1.Append(Line.CreateBound(pnt3, pnt4)); arr1.Append(Line.CreateBound(pnt4, pnt1)); arrarr1.Append(arr1); Autodesk.Revit.DB.XYZ pnt6 = new Autodesk.Revit.DB.XYZ(0.5, 0, 0); Autodesk.Revit.DB.XYZ pnt7 = new Autodesk.Revit.DB.XYZ(1, 0.5, 0); Autodesk.Revit.DB.XYZ pnt8 = new Autodesk.Revit.DB.XYZ(0.5, 1, 0); Autodesk.Revit.DB.XYZ pnt9 = new Autodesk.Revit.DB.XYZ(0, 0.5, 0); CurveArrArray arrarr2 = new CurveArrArray(); CurveArray arr2 = new CurveArray(); arr2.Append(Line.CreateBound(pnt6, pnt7)); arr2.Append(Line.CreateBound(pnt7, pnt8)); arr2.Append(Line.CreateBound(pnt8, pnt9)); arr2.Append(Line.CreateBound(pnt9, pnt6)); arrarr2.Append(arr2); SweepProfile bottomProfile = m_revit.Create.NewCurveLoopsProfile(arrarr1); SweepProfile topProfile = m_revit.Create.NewCurveLoopsProfile(arrarr2); Autodesk.Revit.DB.XYZ pnt10 = new Autodesk.Revit.DB.XYZ(5, 0, 0); Autodesk.Revit.DB.XYZ pnt11 = new Autodesk.Revit.DB.XYZ(0, 20, 0); Curve curve = Line.CreateBound(pnt10, pnt11); Autodesk.Revit.DB.XYZ normal = Autodesk.Revit.DB.XYZ.BasisZ; SketchPlane sketchPlane = CreateSketchPlane(normal, Autodesk.Revit.DB.XYZ.Zero); #endregion // here create one swept blend SweptBlend newSweptBlend1 = m_creationFamily.NewSweptBlend(true, curve, sketchPlane, bottomProfile, topProfile); // move to proper place Autodesk.Revit.DB.XYZ transPoint1 = new Autodesk.Revit.DB.XYZ(11, 32, 0); ElementTransformUtils.MoveElement(m_familyDocument, newSweptBlend1.Id, transPoint1); } catch (Exception e) { m_errCount++; m_errorInfo += "Unexpected exceptions occur in CreateSweptBlend: " + e.ToString() + "\r\n"; } }
/// <summary> /// Create a new swept blend form using arcs to /// define circular start and end profiles and an /// arc path. The NewSweptBlend method requires /// the input profiles to be in the XY plane. /// </summary> public void CreateNewSweptBlendArc(Document doc) { Debug.Assert(doc.IsFamilyDocument, "this method will only work in a family document"); Application app = doc.Application; Autodesk.Revit.Creation.Application creapp = app.Create; Autodesk.Revit.Creation.FamilyItemFactory credoc = doc.FamilyCreate; #region Original code for Revit 2012 #if COMPILE_ORIGINAL_CODE XYZ pnt1 = new XYZ(0, -1, 0); XYZ pnt2 = new XYZ(1, 0, 0); XYZ pnt3 = new XYZ(0, 1, 0); XYZ pnt4 = new XYZ(-1, 0, 0); Arc aArc1 = creapp.NewArc(pnt1, pnt3, pnt2); Arc aArc2 = creapp.NewArc(pnt3, pnt1, pnt4); CurveArrArray arrarr1 = new CurveArrArray(); SweepProfile bottomProfile = creapp.NewCurveLoopsProfile(arrarr1); CurveArray arr1 = new CurveArray(); arr1.Append(aArc1); arr1.Append(aArc2); XYZ pnt6 = new XYZ(0, -2, 0); XYZ pnt7 = new XYZ(2, 0, 0); XYZ pnt8 = new XYZ(0, 2, 0); XYZ pnt9 = new XYZ(-2, 0, 0); Arc aArc3 = creapp.NewArc(pnt6, pnt8, pnt7); Arc aArc4 = creapp.NewArc(pnt8, pnt6, pnt9); CurveArrArray arrarr2 = new CurveArrArray(); CurveArray arr2 = new CurveArray(); arr2.Append(aArc3); arr2.Append(aArc4); arrarr2.Append(arr2); SweepProfile topProfile = creapp.NewCurveLoopsProfile(arrarr2); XYZ pnt10 = new XYZ(0, 0, 0); XYZ pnt11 = new XYZ(0, 5, 0); XYZ pnt122 = new XYZ(2.5, 2.5, 0); Arc testArc = creapp.NewArc(pnt10, pnt11, pnt122); Curve curve = (Curve)testArc; Plane geometryPlane = creapp.NewPlane( XYZ.BasisZ, XYZ.Zero); SketchPlane sketchPlane = doc.NewSketchPlane( geometryPlane); SweptBlend aSweptBlend = doc.NewSweptBlend( true, curve, sketchPlane, bottomProfile, topProfile); #endif // COMPILE_ORIGINAL_CODE #endregion // Original code for Revit 2012 XYZ px = XYZ.BasisX; XYZ py = XYZ.BasisY; Arc arc1 = Arc.Create(-px, px, -py); Arc arc2 = Arc.Create(px, -px, py); CurveArray arr1 = new CurveArray(); arr1.Append(arc1); arr1.Append(arc2); CurveArrArray arrarr1 = new CurveArrArray(); arrarr1.Append(arr1); SweepProfile bottomProfile = creapp.NewCurveLoopsProfile(arrarr1); px += px; py += py; Arc arc3 = Arc.Create(-px, px, -py); Arc arc4 = Arc.Create(px, -px, py); CurveArray arr2 = new CurveArray(); arr2.Append(arc3); arr2.Append(arc4); CurveArrArray arrarr2 = new CurveArrArray(); arrarr2.Append(arr2); SweepProfile topProfile = creapp.NewCurveLoopsProfile(arrarr2); XYZ p0 = XYZ.Zero; XYZ p5 = 5 * XYZ.BasisY; XYZ pmid = new XYZ(2.5, 2.5, 0); Arc testArc = Arc.Create(p0, p5, pmid); Plane geometryPlane = creapp.NewPlane( XYZ.BasisZ, XYZ.Zero); SketchPlane sketchPlane = SketchPlane.Create( doc, geometryPlane); SweptBlend aSweptBlend = credoc.NewSweptBlend( true, testArc, sketchPlane, bottomProfile, topProfile); }