開發環境
win10+ VS2015 Enterprise+ CAD2012簡體中文版
項目創建
CAD插件項目創建簡單實例
項目引用
AcCui.dll acdbmgd.dll acmgd.dll AutoCAD(COM)
新建一個類 Main
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.Customization;
using System.Collections.Specialized;
using Autodesk.AutoCAD.Interop; //獲取CAD應用程序
[assembly: CommandClass(typeof(_13_CAD.Main))]
namespace _13_CAD
{
class Main
{
[CommandMethod("SMM")]
public void ShowMyMenu()
{
//獲取CAD應用程序
AcadApplication app = (AcadApplication)Autodesk.AutoCAD.ApplicationServices.Application.AcadApplication;
for (int i = 0; i < app.MenuGroups.Item(0).Menus.Count; i++)
{
if (app.MenuGroups.Item(0).Menus.Item(i).Name == "我的菜單Com") //判斷菜單是否已存在,如果存在則不再創建
return;
}
AcadPopupMenu pmParnet = app.MenuGroups.Item(0).Menus.Add("CAD文件託管"); //添加根菜單
//多級
AcadPopupMenu pm = pmParnet.AddSubMenu(pmParnet.Count + 1, "打開");
AcadPopupMenuItem pmi0 = pm.AddMenuItem(pm.Count + 1, "文件 ", "OPEN1\n"); //第一個參數是在菜單項中的位置(第幾項),第二個參數是顯示的名稱,第三個參數是點擊之後執行的命令
AcadPopupMenuItem pmi1 = pm.AddMenuItem(pm.Count + 1, "模版 ", "OPEN2\n");
//單級
AcadPopupMenuItem pmi2 = pmParnet.AddMenuItem(pmParnet.Count + 1, "退出 ", "EXIT\n");
//將創建的菜單加入到CAD的菜單中
pmParnet.InsertInMenuBar(app.MenuBar.Count + 1);
}
}
}
打開註冊表
1.跟着數字找
2.在Applications項下新建項
3.新項說明
4.定義初始化類Init
//實現插件在菜單欄中自動顯示
public class Init : IExtensionApplication
{
#region IExtensionApplication 成員
//在程序集初始化時
public void Initialize()
{
//在程序集被初始化時,執行創建菜單操作,再配合註冊表設置可以實現菜單的自動加載
Main main = new Main();
main.ShowMyMenu();
}
//在程序集被卸載時(也可以理解爲CAD關閉時)
public void Terminate()
{
}
#endregion
}