using System.Diagnostics; using System.Drawing; using System.Linq; using System.Net; using System.Reflection; using System.Text; using System.Windows; using System.Windows.Interop; using System.Windows.Media.Imaging; using Autodesk.Revit.DB; using Autodesk.Revit.UI; using Autodesk.Windows; using Nice3point.Revit.Toolkit.External; using Nice3point.Revit.Toolkit.External.Handlers; using Szmedi.AIScriptRunner.Assists; using Szmedi.AIScriptRunner.Commands; using Szmedi.AIScriptRunner.Properties; using RibbonButton = Autodesk.Windows.RibbonButton; using RibbonPanel = Autodesk.Revit.UI.RibbonPanel; namespace Szmedi.AIScriptRunner; public class App : IExternalApplication { public Result OnStartup(UIControlledApplication application) { try { const BindingFlags flag = BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.InvokeMethod; GlobalVariables.UIApplication = (UIApplication)application.GetType().InvokeMember("getUIApplication", flag, Type.DefaultBinder, application, null); var panel = application.CreateRibbonPanel("AI工具"); //PushButtonData login = // new(nameof(LoginCmd), "用户", GlobalVariables.AddInPath, typeof(LoginCmd).FullName) // { // Image = ToBitmapSource(Resources.AccountSmall), // LargeImage = ToBitmapSource(Resources.Account), // ToolTip = "用户" // }; PushButtonData csharpScript = new(nameof(ScriptRunnerCmd), "AI脚本", GlobalVariables.AddInPath, typeof(ScriptRunnerCmd).FullName) { Image = ToBitmapSource(Resources.AIScriptSmall), LargeImage = ToBitmapSource(Resources.AIScript), ToolTip = "执行C#脚本", //AvailabilityClassName = typeof(IsAuthenticated).FullName }; //panel.AddItem(login); panel.AddItem(csharpScript); } catch (Exception ex) { MessageBox.Show(ex.Message); } return Result.Succeeded; } public static BitmapSource ToBitmapSource(Bitmap bitmap) { if (bitmap == null) { return null; } return Imaging.CreateBitmapSourceFromHBitmap(bitmap.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); } public Result OnShutdown(UIControlledApplication application) { return Result.Succeeded; } public RibbonControl RibbonControl => ComponentManager.Ribbon; }