using System.Drawing; using System.Timers; using Autodesk.Revit.Attributes; using Autodesk.Revit.DB; using Autodesk.Revit.UI; using Nice3point.Revit.Toolkit.External; using ShrlAlgo.Toolkit.Core.Heplers; namespace ShrlAlgo.Addin.Test; [Transaction(TransactionMode.Manual)] [Regeneration(RegenerationOption.Manual)] public class TestGDI : ExternalCommand { private UIView ui; /// /// 设置项目基点 /// /// private void SetProjectPosition(XYZ position) { using Transaction trans = new(Document); trans.Start("设置项目基点"); XYZ p = new(); ProjectPosition pp = new(position.X, position.Y, position.Z, 0); //设置项目基点 Document.ActiveProjectLocation.SetProjectPosition(p, pp); trans.Commit(); } public override void Execute() { ui = UiDocument.GetOpenUIViews().FirstOrDefault(uiView => uiView.ViewId == UiDocument.ActiveView.Id); var corners = ui.GetZoomCorners(); //var inptr = HookInptr.FindWindow(null, view.Name); //Graphics graphics = Graphics.FromHwnd(inptr); //graphics.RenderingOrigin= //Graphics graphics = Graphics.FromHwnd(System.Diagnostics.Process.GetCurrentProcess().Handle); System.Timers.Timer timer = new(2000) { Interval = 500, Enabled = true //AutoReset = true }; timer.Elapsed += Timer_Elapsed; } private void Timer_Elapsed(object sender, ElapsedEventArgs e) { var rectangle = ui.GetWindowRectangle(); //屏幕坐标;原点在右上角 var graphics = Graphics.FromHwnd(System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle); var p = new System.Drawing.Point(rectangle.Left + 1920, rectangle.Top); var p1 = new System.Drawing.Point(rectangle.Right + 1920, rectangle.Bottom); GdiHelper.DrawLine(graphics, p, p1); } }