using Autodesk.Revit.DB; using Autodesk.Revit.UI; using Autodesk.Revit.UI.Selection; using System; namespace HYJig { public static class RevitExtensionAPI { public static XYZ PickPoint(this Selection selection, XYZ ptBase, UIDocument uiDoc, string statusPrompt = "单击选择点, 按 ESC 键退出。") { XYZ xyz = null; using (XLineJig xlineJig = new XLineJig(uiDoc)) { xlineJig.StartPoint = ptBase; xlineJig.JigStage = XLineJig.EStage.eEndPt; xyz = uiDoc.Selection.PickPoint(statusPrompt); } return xyz; } public static XYZ PickOtherPoint(XYZ ptBase, UIDocument uiDoc, string statusPrompt = "单击选择点, 按 ESC 键退出。") { XYZ xyz = null; using (XLineJig xlineJig = new XLineJig(uiDoc)) { xlineJig.JigStage = XLineJig.EStage.eEndPt; xlineJig.StartPoint = ptBase; xyz = uiDoc.Selection.PickPoint(statusPrompt); } return xyz; } public static XYZ PickRectOtherPoint(XYZ ptBase, UIDocument uiDoc, string statusPrompt = "单击选择点, 按 ESC 键退出。") { XYZ xyz = null; using (XRectJig xrectJig = new XRectJig(uiDoc)) { xrectJig.JigStage = XRectJig.EStage.eEndPt; xrectJig.StartPoint = ptBase; xrectJig.RectAngle = uiDoc.ActiveView.RightDirection; xyz = uiDoc.Selection.PickPoint(statusPrompt); } return xyz; } public static XYZ PickArcMidPoint(XYZ ptStart, XYZ ptEnd, UIDocument uiDoc, string statusPrompt = "单击选择弧线上任意点, 按 ESC 键退出。") { XYZ xyz = null; using (XArc3PtJig xarc3PtJig = new XArc3PtJig(uiDoc)) { xarc3PtJig.JigStage = XArc3PtJig.EStage.eOnCurvePt; xarc3PtJig.StartPoint = ptStart; xarc3PtJig.EndPoint = ptEnd; xyz = uiDoc.Selection.PickPoint(statusPrompt); } return xyz; } public static XYZ PickArcEndPoint(XYZ ptStart, XYZ ptCenter, UIDocument uiDoc, string statusPrompt = "单击选择弧线终点, 按 ESC 键退出。") { XYZ xyz = null; using (XArcJig xarcJig = new XArcJig(uiDoc)) { xarcJig.JigStage = XArcJig.EStage.ePtEnd; xarcJig.StartPoint = ptStart; xarcJig.CenterPoint = ptCenter; xyz = uiDoc.Selection.PickPoint(statusPrompt); } return xyz; } } }