1、自动加载dll的方法(个人觉得下面第4个方法会更方便)
cad加载dll_实现CAD插件启动自动加载的三种方法_weixin_39774556的博客-CSDN博客从网上或者别处淘来的CAD插件,效率很高,但是每次都要手工加载,或者采用了自动加载的方法,但总是不凑效,怎么来有效解决呢?这里提供三种方法供你选择。第一种,也是最常用的方法。点击工具——加载应用程序,或者直接输入命令appload,把插件加载到启动组。不过这种方法经常失效,如果没用可以试试下面两种方法。方法一:添加程序到启动组第二种,也是经过测试最有效通用性最高的方法。找到CAD安装目录下Supp...https://blog.csdn.net/weixin_39774556/article/details/110596286
2、自动加载菜单
3、添加ribbion
4、通过编写bundle的方式默认加载dll
5、代码样例
加载dll后,cad会默认执行Initialize()方法。亲试可行。
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.Interop;
using Autodesk.AutoCAD.Runtime;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
[assembly: ExtensionApplication(typeof(CadTest001.AcadNetApp))]
namespace CadTest001
{
//添加项目类引用
public class AcadNetApp : Autodesk.AutoCAD.Runtime.IExtensionApplication
{
public void Initialize()
{
//加载后初始化的程序放在这里 这样程序一加载DLL文件就会执行
Document doc = Application.DocumentManager.MdiActiveDocument;
doc.Editor.WriteMessage("\n加载程序中...........\n");
//加载菜单栏需
AddMenu();
}
public void Terminate()
{
// do somehing to cleanup resource
}
//加载菜单栏
public void AddMenu()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
doc.Editor.WriteMessage("添加菜单栏成功!>>>>>>>>>>>>>>");
AcadApplication acadApp = Application.AcadApplication as AcadApplication;
//创建建菜单栏的对象
AcadPopupMenu myMenu = null;
// 创建菜单
if (myMenu == null)
{
// 菜单名称
myMenu = acadApp.MenuGroups.Item(0).Menus.Add("个人测试菜单");
myMenu.AddMenuItem(myMenu.Count, "文字批量替换", "TBR "); //每个命令后面有一个空格,相当于咱们输入命令按空格
myMenu.AddMenuItem(myMenu.Count, "文字批量对齐", "TBA ");
myMenu.AddMenuItem(myMenu.Count, "输出文本", "CTE ");
//开始加子菜单栏
AcadPopupMenu subMenu = myMenu.AddSubMenu(myMenu.Count, "CADLinkToEXcel"); //子菜单对象
subMenu.AddMenuItem(myMenu.Count, "Excel表格导入", "CTES ");
subMenu.AddMenuItem(myMenu.Count, "由Excel数据更新CAD表格数据", "UCTFE ");
subMenu.AddMenuItem(myMenu.Count, "由CAD表格数据更新Excel表格数据", "UEFCT ");
myMenu.AddSeparator(myMenu.Count); //加入分割符号
//结束加子菜单栏
}
// 菜单是否显示 看看已经显示的菜单栏里面有没有这一栏
bool isShowed = false; //初始化没有显示
foreach (AcadPopupMenu menu in acadApp.MenuBar) //遍历现有所有菜单栏
{
if (menu == myMenu)
{
isShowed = true;
break;
}
}
// 显示菜单 加载自定义的菜单栏
if (!isShowed)
{
myMenu.InsertInMenuBar(acadApp.MenuBar.Count);
}
}
}
}
using Autodesk.AutoCAD.Runtime;
using System.Windows;
namespace CadTest001
{
public class MyCommands
{
[CommandMethod("TBA")]
public void TextBatchAlign()
{
MessageBox.Show("TBA");
}
[CommandMethod("TBR")]
public void TextBatchReplace()
{
MessageBox.Show("TBR");
}
//输出文本到Excel和Txt 打开窗口
[CommandMethod("CTE")] //CAD启动界面
public void CADTextExport()
{
MessageBox.Show("CTE");
}
[CommandMethod("CTES")]
static public void CADTablebyExcelSheet()
{
MessageBox.Show("CTES");
}
[CommandMethod("UCTFE")]
static public void UpdateCADTableFromExcel()
{
MessageBox.Show("UCTFE");
}
/// <summary>
/// 由CAD表格数据更新Excle中的数据
/// </summary>
[CommandMethod("UEFCT")]
static public void UpdateExcelFromCADTable()
{
MessageBox.Show("UEFCT");
}
}
}