using Autodesk.Revit.DB; using Autodesk.Revit.UI; using System; using System.Collections.Generic; namespace HYJig { public class DrawJigCurve { public DrawJigCurve(ExternalCommandData cmdData) { this.uidocument_0 = cmdData.Application.ActiveUIDocument; } public DrawJigCurve(UIDocument uiDoc) { this.uidocument_0 = uiDoc; } public Result DrawJigCurveLine(ref List lstCurves, ref XYZ ptLast, string strPromptStart, string strPromptEnd) { XLineJig xlineJig = new XLineJig(this.uidocument_0); XYZ xyz; if (ptLast != null) { xyz = ptLast; xlineJig.StartPoint = xyz; } else { xyz = xlineJig.PickStartPoint(strPromptStart); if (xyz == null) { xlineJig.Dispose(); return Result.Cancelled; } } XYZ xyz2 = xlineJig.PickEndPoint(xyz, strPromptEnd); Result result; if (xyz2 == null) { xlineJig.Dispose(); result = Result.Cancelled; } else { lstCurves = xlineJig.CreateCurves(); ptLast = xyz2; xlineJig.Dispose(); result = 0; } return result; } public Result DrawJigCurveLine(ref Line line, ref XYZ ptLast, string strPromptStart, string strPromptEnd) { List list = new List(); Result result = this.DrawJigCurveLine(ref list, ref ptLast, strPromptStart, strPromptEnd); if (list.Count > 0) { line = list[0] as Line; } return result; } public Result DrawJigCurveLineXDirection(ref Line line, ref XYZ ptLast, string strPromptStart, string strPromptEnd) { XLineJig xlineJig = new XLineJig(this.uidocument_0); XYZ xyz; if (ptLast != null) { xyz = ptLast; xlineJig.StartPoint = xyz; } else { xyz = xlineJig.PickStartPoint(strPromptStart); if (xyz == null) { xlineJig.Dispose(); return Result.Cancelled; } } xlineJig.ResetPoint = XUiJigBase.EResetPoint.eByAngle; xlineJig.LineAngle = 0.0; XYZ xyz2 = xlineJig.PickEndPoint(xyz, strPromptEnd); Result result; if (xyz2 == null) { xlineJig.Dispose(); result = Result.Cancelled; } else { List list = new List(); list = xlineJig.CreateCurves(); ptLast = xyz2; if (list.Count > 0) { line = list[0] as Line; } xlineJig.Dispose(); result = 0; } return result; } public Result DrawJigCurveLineYDirection(ref Line line, ref XYZ ptLast, string strPromptStart, string strPromptEnd) { XLineJig xlineJig = new XLineJig(this.uidocument_0); XYZ xyz; if (ptLast != null) { xyz = ptLast; xlineJig.StartPoint = xyz; } else { xyz = xlineJig.PickStartPoint(strPromptStart); if (xyz == null) { xlineJig.Dispose(); return Result.Cancelled; } } xlineJig.ResetPoint = XUiJigBase.EResetPoint.eByAngle; xlineJig.LineAngle = 1.5707963267948966; XYZ xyz2 = xlineJig.PickEndPoint(xyz, strPromptEnd); Result result; if (xyz2 == null) { xlineJig.Dispose(); result = Result.Cancelled; } else { List list = new List(); list = xlineJig.CreateCurves(); ptLast = xyz2; if (list.Count > 0) { line = list[0] as Line; } xlineJig.Dispose(); result = 0; } return result; } public Result DrawJigCurveRect(ref List lstCurves, string strPromptStart, string strPromptEnd) { XRectJig xrectJig = new XRectJig(this.uidocument_0); try { XYZ xyz = xrectJig.PickStartPoint(strPromptStart); if (xyz == null) { xrectJig.Dispose(); return Result.Cancelled; } XYZ xyz2 = xrectJig.PickEndPoint(xyz, this.uidocument_0.ActiveView.RightDirection, strPromptEnd); if (xyz2 == null) { xrectJig.Dispose(); return Result.Cancelled; } lstCurves = xrectJig.CreateCurves(); xrectJig.Dispose(); } catch (Exception) { xrectJig.Dispose(); return Result.Failed; } return 0; } public Result method_0(ref List lstCurves, ref XYZ ptLast, string strPromptStart, string strPromptEnd, string strPromptMid) { XArc3PtJig xarc3PtJig = new XArc3PtJig(this.uidocument_0); try { XYZ xyz; if (ptLast != null) { xyz = ptLast; xarc3PtJig.StartPoint = xyz; } else { xyz = xarc3PtJig.PickStartPoint(strPromptStart); if (xyz == null) { xarc3PtJig.Dispose(); return Result.Cancelled; } } XYZ xyz2 = xarc3PtJig.PickEndPoint(xyz, strPromptEnd); if (xyz2 == null) { xarc3PtJig.Dispose(); return Result.Cancelled; } XYZ xyz3 = xarc3PtJig.PickOnCurvePoint(xyz, xyz2, strPromptMid); if (xyz3 == null) { xarc3PtJig.Dispose(); return Result.Cancelled; } lstCurves = xarc3PtJig.CreateCurves(); ptLast = xyz2; xarc3PtJig.Dispose(); } catch (Exception) { xarc3PtJig.Dispose(); } return 0; } public Result method_1(ref Arc arc, ref XYZ ptLast, string strPromptStart, string strPromptEnd, string strPromptMid) { List list = new List(); Result result = this.method_0(ref list, ref ptLast, strPromptStart, strPromptEnd, strPromptMid); if (list.Count > 0) { arc = list[0] as Arc; } return result; } public Result DrawJigCurveArcCenter2Pt(ref List lstCurves, string strPromptCenter, string strPromptStart, string strPromptEnd) { XArcJig xarcJig = new XArcJig(this.uidocument_0); try { XYZ xyz = xarcJig.PickCenterPoint(strPromptCenter); if (xyz == null) { xarcJig.Dispose(); return Result.Cancelled; } XYZ xyz2 = xarcJig.PickStartPoint(xyz, strPromptStart); if (xyz2 == null) { xarcJig.Dispose(); return Result.Cancelled; } XYZ xyz3 = xarcJig.PickEndPoint(xyz, xyz2, strPromptEnd); if (xyz3 == null) { xarcJig.Dispose(); return Result.Cancelled; } lstCurves = xarcJig.CreateCurves(); xarcJig.Dispose(); } catch (Exception) { xarcJig.Dispose(); } return 0; } public Result DrawJigCurveArcCenter2Pt(ref Arc arc, string strPromptCenter, string strPromptStart, string strPromptEnd) { List list = new List(); Result result = this.DrawJigCurveArcCenter2Pt(ref list, strPromptCenter, strPromptStart, strPromptEnd); if (list.Count > 0) { arc = list[0] as Arc; } return result; } private UIDocument uidocument_0; } }