/// <summary> /// Batch creation of Walls /// </summary> /// <returns>If batch creation succeeds, return true; otherwise, return false</returns> private bool CreateWalls() { try { if (null == m_level) { return false; } //Create ProfiledWallCreationData for Walls' batch creation List<ProfiledWallCreationData> profiledWallCreationDatas = new List<ProfiledWallCreationData>(); Autodesk.Revit.Creation.Application appCreation = m_cmdData.Application.Application.Create; for (int i = 1; i < 11; i++) { // Create wall's profile which is a combination of rectangle and arc CurveArray curveArray = appCreation.NewCurveArray(); // Create three lines for rectangle part of profile. Autodesk.Revit.DB.XYZ pt1 = new Autodesk.Revit.DB.XYZ (i * 10, -80, 15); Autodesk.Revit.DB.XYZ pt2 = new Autodesk.Revit.DB.XYZ (i * 10, -80, 0); Autodesk.Revit.DB.XYZ pt3 = new Autodesk.Revit.DB.XYZ (i * 10, -90, 0); Autodesk.Revit.DB.XYZ pt4 = new Autodesk.Revit.DB.XYZ (i * 10, -90, 15); Line line1 = appCreation.NewLine(pt1, pt2, true); Line line2 = appCreation.NewLine(pt2, pt3, true); Line line3 = appCreation.NewLine(pt3, pt4, true); // Create arc part of profile. Autodesk.Revit.DB.XYZ pointInCurve = new Autodesk.Revit.DB.XYZ (i * 10, -85, 20); Arc arc = appCreation.NewArc(pt4, pt1, pointInCurve); if(null == line1 || null == line2 || null == line3 || null == arc) { continue; } curveArray.Append(line1); curveArray.Append(line2); curveArray.Append(line3); curveArray.Append(arc); ProfiledWallCreationData profiledWallCreationData = new ProfiledWallCreationData(curveArray,true); if (null != profiledWallCreationData) { profiledWallCreationDatas.Add(profiledWallCreationData); } } //Create RectangularWallCreationData for Walls' batch creation List<RectangularWallCreationData> rectangularWallCreationDatas = new List<RectangularWallCreationData>(); for (int i = 1; i < 11; i++) { Autodesk.Revit.DB.XYZ pt1 = new Autodesk.Revit.DB.XYZ (i*10,-110,0); Autodesk.Revit.DB.XYZ pt2 = new Autodesk.Revit.DB.XYZ (i*10,-120,0); Line line = appCreation.NewLine(pt1,pt2,true); RectangularWallCreationData rectangularWallCreationData = null; if(null != line) { rectangularWallCreationData = new RectangularWallCreationData(line, m_level, true); } if (null != rectangularWallCreationData) { rectangularWallCreationDatas.Add(rectangularWallCreationData); } } // Create Walls if(0 == profiledWallCreationDatas.Count || 0 == rectangularWallCreationDatas.Count) { return false; } m_doc.Create.NewWalls(profiledWallCreationDatas); m_doc.Create.NewWalls(rectangularWallCreationDatas); } catch (Exception) { return false; } return true; }
/// <summary> /// Batch creation of Walls /// </summary> /// <returns>If batch creation succeeds, return true; otherwise, return false</returns> private bool CreateWalls() { try { if (null == m_level) { return(false); } //Create ProfiledWallCreationData for Walls' batch creation List <ProfiledWallCreationData> profiledWallCreationDatas = new List <ProfiledWallCreationData>(); Autodesk.Revit.Creation.Application appCreation = m_cmdData.Application.Application.Create; for (int i = 1; i < 11; i++) { // Create wall's profile which is a combination of rectangle and arc CurveArray curveArray = appCreation.NewCurveArray(); // Create three lines for rectangle part of profile. Autodesk.Revit.DB.XYZ pt1 = new Autodesk.Revit.DB.XYZ(i * 10, -80, 15); Autodesk.Revit.DB.XYZ pt2 = new Autodesk.Revit.DB.XYZ(i * 10, -80, 0); Autodesk.Revit.DB.XYZ pt3 = new Autodesk.Revit.DB.XYZ(i * 10, -90, 0); Autodesk.Revit.DB.XYZ pt4 = new Autodesk.Revit.DB.XYZ(i * 10, -90, 15); Line line1 = appCreation.NewLine(pt1, pt2, true); Line line2 = appCreation.NewLine(pt2, pt3, true); Line line3 = appCreation.NewLine(pt3, pt4, true); // Create arc part of profile. Autodesk.Revit.DB.XYZ pointInCurve = new Autodesk.Revit.DB.XYZ(i * 10, -85, 20); Arc arc = appCreation.NewArc(pt4, pt1, pointInCurve); if (null == line1 || null == line2 || null == line3 || null == arc) { continue; } curveArray.Append(line1); curveArray.Append(line2); curveArray.Append(line3); curveArray.Append(arc); ProfiledWallCreationData profiledWallCreationData = new ProfiledWallCreationData(curveArray, true); if (null != profiledWallCreationData) { profiledWallCreationDatas.Add(profiledWallCreationData); } } //Create RectangularWallCreationData for Walls' batch creation List <RectangularWallCreationData> rectangularWallCreationDatas = new List <RectangularWallCreationData>(); for (int i = 1; i < 11; i++) { Autodesk.Revit.DB.XYZ pt1 = new Autodesk.Revit.DB.XYZ(i * 10, -110, 0); Autodesk.Revit.DB.XYZ pt2 = new Autodesk.Revit.DB.XYZ(i * 10, -120, 0); Line line = appCreation.NewLine(pt1, pt2, true); RectangularWallCreationData rectangularWallCreationData = null; if (null != line) { rectangularWallCreationData = new RectangularWallCreationData(line, m_level, true); } if (null != rectangularWallCreationData) { rectangularWallCreationDatas.Add(rectangularWallCreationData); } } // Create Walls if (0 == profiledWallCreationDatas.Count || 0 == rectangularWallCreationDatas.Count) { return(false); } m_doc.Create.NewWalls(profiledWallCreationDatas); m_doc.Create.NewWalls(rectangularWallCreationDatas); } catch (Exception) { return(false); } return(true); }