Files
2025-04-24 20:56:44 +08:00

64 lines
2.0 KiB
C#

using System.Drawing;
using System.Timers;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using Nice3point.Revit.Toolkit.External;
using ShrlAlgoToolkit.Core.Assists;
namespace ShrlAlgo.Addin.Test;
[Transaction(TransactionMode.Manual)]
[Regeneration(RegenerationOption.Manual)]
public class TestGDI : ExternalCommand
{
private UIView ui;
/// <summary>
/// 设置项目基点
/// </summary>
/// <param name="position"></param>
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);
GdiAssist.DrawLine(graphics, p, p1);
}
}