# 0 引言
当你做了一些属于自己的小功能插件以后,你就可以把它们整合到工具栏,然后直接调用就行了。就比如下面这样:
不用每次都netload单独加载那个dll,然后才是输入命令调用它。
我们直接把所有的插件功能都整合到一个工程里面,编译生成一个属于菜单栏工具dll文件,用的时候加载这一个dll,直接把菜单栏加载进来,想用哪个用哪个。
# 1. 菜单栏实现
菜单栏实现可以采用COM方式和CUI方式进行,COM有一点不好是要求运行CAD版本必须和编译的完全一致,也就是你每一个版本CAD都要编译一个对应的程序。
CUI原理:其实点击菜单栏按钮时,只是调用了该菜单按钮对应的CAD命令,也就是你需要把菜单栏按钮和你自己自定义的命令链接起来。
注意:要求CAD版本在2007及以上
首先
创建一个菜单栏对象
其中类 AcadApplication,需要添加引用 Autodesk.AutoCAD.Interop.dll
该 dll 在对应版本的 ObjectARX 包中,需要下载 ObjectARX 安装。
设置菜单工具名称
然后把菜单子项加进来,用到AddMenuItem方法
AcadPopupMenuItem AddMenuItem(object Index, string Label, string Macro);
// Index 为序号
// Label 为菜单显示文本内容
// Macro 为菜单项执行对应的命令
这样就添加结束了,所对应的命令都是之前的一些例子,你可以把自己的加进去就行了。
之后把菜单栏自动加载就行
# 2 完整代码
这里把菜单栏和菜单栏加载都放在了一个MainClass.cs文件中
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections.Specialized;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.EditorInput;
using AcadApp = Autodesk.AutoCAD.ApplicationServices.Application;
using Autodesk.AutoCAD.Interop; //引用需要添加 Autodesk.AutoCAD.Interop.dll CAD安装目录内
using System.IO;
[assembly: ExtensionApplication(typeof(MyMenuTools.AcadNetApp))] //启动时加载工具栏,注意typeof括号里的类库名
namespace MyMenuTools
{
//添加项目类引用
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("添加菜单

本文介绍了如何使用Visual Basic .NET进行AutoCAD的二次开发,通过创建菜单栏并将其与自定义命令链接,实现功能插件的整合。菜单栏的实现可以选择COM方式或CUI方式,但COM方式要求CAD版本与编译版本匹配。文章提供了完整代码示例,帮助读者理解如何创建和加载菜单栏。
最低0.47元/天 解锁文章
2798

被折叠的 条评论
为什么被折叠?



