Files
RevitArchive/HYJigPro/RevitExtensionAPI.cs

75 lines
2.7 KiB
C#
Raw Normal View History

2026-02-23 14:58:05 +08:00
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;
}
}
}