visual basic. net二次开发autocad_AutoCAD .NET 二次开发实例(12) 个人菜单栏实现

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

# 0 引言

当你做了一些属于自己的小功能插件以后,你就可以把它们整合到工具栏,然后直接调用就行了。就比如下面这样:

293e55801afc5348f7676d8482fb5705.png

不用每次都netload单独加载那个dll,然后才是输入命令调用它。

我们直接把所有的插件功能都整合到一个工程里面,编译生成一个属于菜单栏工具dll文件,用的时候加载这一个dll,直接把菜单栏加载进来,想用哪个用哪个。

# 1. 菜单栏实现

菜单栏实现可以采用COM方式和CUI方式进行,COM有一点不好是要求运行CAD版本必须和编译的完全一致,也就是你每一个版本CAD都要编译一个对应的程序。

CUI原理:其实点击菜单栏按钮时,只是调用了该菜单按钮对应的CAD命令,也就是你需要把菜单栏按钮和你自己自定义的命令链接起来。

注意:要求CAD版本在2007及以上

首先

创建一个菜单栏对象

3c8a129eb6147cbcb593e2f9fde84943.png

其中类 AcadApplication,需要添加引用 Autodesk.AutoCAD.Interop.dll

该 dll 在对应版本的 ObjectARX 包中,需要下载 ObjectARX 安装。

947fd3890bdabf68d5f28d1d5f7a871b.png

d210efdef87688cb5288ef437328d543.png

设置菜单工具名称

fe5f0ad8b028fbdbdcc505428c0b12df.png

然后把菜单子项加进来,用到AddMenuItem方法

d2d6daee64271ed92b8a966b55f8350b.png
AcadPopupMenuItem AddMenuItem(object Index, string Label, string Macro);

// Index 为序号
// Label 为菜单显示文本内容
// Macro 为菜单项执行对应的命令

68cd11632fa8f378cabd7cef2bf86d76.png

这样就添加结束了,所对应的命令都是之前的一些例子,你可以把自己的加进去就行了。

之后把菜单栏自动加载就行

# 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("添加菜单
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值