using System;
using Autodesk.AutoCAD.ApplicationServices.Core;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.DatabaseServices;
using Microsoft.Win32;
using System.Reflection;
using Autodesk.Windows;
namespace AcadUtils
{
public partial class Main : IExtensionApplication
{
[CommandMethod("TestCommand")]
public void MyCommand()
{
// создаем выпадающий список
Autodesk.Windows.RibbonCombo comboBox1 = new RibbonCombo();
comboBox1.Id = "_combobox1";
// создаем кнопку
Autodesk.Windows.RibbonButton button1 = new Autodesk.Windows.RibbonButton();
button1.Id = "_button1";
// создаем контейнер для элементов
Autodesk.Windows.RibbonPanelSource rbPanelSource = new Autodesk.Windows.RibbonPanelSource();
rbPanelSource.Title = "Новая панель элементов";
// добавляем в контейнер элементы управления
rbPanelSource.Items.Add(comboBox1);
rbPanelSource.Items.Add(new RibbonSeparator());
rbPanelSource.Items.Add(button1);
// создаем панель
RibbonPanel rbPanel = new RibbonPanel();
// добавляем на панель контейнер для элементов
rbPanel.Source = rbPanelSource;
// создаем вкладку
RibbonTab rbTab = new RibbonTab();
rbTab.Title = "Новая вкладка";
rbTab.Id = "HabrRibbon";
// добавляем на вкладку панель
rbTab.Panels.Add(rbPanel);
// получаем указатель на ленту AutoCAD
Autodesk.Windows.RibbonControl rbCtrl = ComponentManager.Ribbon;
// добавляем на ленту вкладку
rbCtrl.Tabs.Add(rbTab);
// делаем созданную вкладку активной ("выбранной")
rbTab.IsActive = true;
}
[CommandMethod("AutocadUtils_Register")]
public void RegisterMyApp()
{
// Get the AutoCAD Applications key
string sProdKey = HostApplicationServices.Current.UserRegistryProductRootKey;
string sAppName = "ArmTools_1.0";
Microsoft.Win32.RegistryKey regAcadProdKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(sProdKey);
Microsoft.Win32.RegistryKey regAcadAppKey = regAcadProdKey.OpenSubKey("Applications", true);
// Check to see if the "MyApp" key exists
string[] subKeys = regAcadAppKey.GetSubKeyNames();
foreach (string subKey in subKeys)
{
// If the application is already registered, exit
if (subKey.Equals(sAppName))
{
regAcadAppKey.Close();
return;
}
}
// Get the location of this module
string sAssemblyPath = Assembly.GetExecutingAssembly().Location;
// Register the application
Microsoft.Win32.RegistryKey regAppAddInKey = regAcadAppKey.CreateSubKey(sAppName);
regAppAddInKey.SetValue("DESCRIPTION", sAppName, RegistryValueKind.String);
regAppAddInKey.SetValue("LOADCTRLS", 14, RegistryValueKind.DWord);
regAppAddInKey.SetValue("LOADER", sAssemblyPath, RegistryValueKind.String);
regAppAddInKey.SetValue("MANAGED", 1, RegistryValueKind.DWord);
regAcadAppKey.Close();
}
[CommandMethod("AutocadUtils_Unregister")]
public void UnregisterMyApp()
{
// Get the AutoCAD Applications key
string sProdKey = HostApplicationServices.Current.UserRegistryProductRootKey;
string sAppName = "ArmTools_1.0";
Microsoft.Win32.RegistryKey regAcadProdKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(sProdKey);
Microsoft.Win32.RegistryKey regAcadAppKey = regAcadProdKey.OpenSubKey("Applications", true);
// Delete the key for the application
regAcadAppKey.DeleteSubKeyTree(sAppName);
regAcadAppKey.Close();
}
public void Initialize()
{
Editor editor = Application.DocumentManager.MdiActiveDocument.Editor;
editor.WriteMessage("\nПакет утилит.\n");
RegisterMyApp();
MyCommand(); // Тут проблема
}
public void Terminate()
{
}
}
}