博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AutoCAD.NET二次开发:创建自定义菜单(AcCui)
阅读量:5070 次
发布时间:2019-06-12

本文共 1789 字,大约阅读时间需要 5 分钟。

从CAD2007之后,Autodesk提供了一个新的程序集AcCui.dll,使用这个程序集,我们可以方便地做一些界面方面的操作,比如创建自定义菜单。

 

下面介绍一下菜单的创建过程:

1、在项目中添加引用:AcCui.dll,这个DLL存放在CAD的安装目录中。但是,好像CAD2007之前的版本里没有这个DLL),我电脑上安装了CAD2004、CAD2005、CAD2008、CAD2010,其中,只有CAD2008和CAD2010中有这个DLL。

2、在代码中添加using:

using Autodesk.AutoCAD.Runtime;using Autodesk.AutoCAD.Customization;using System.Collections.Specialized;

3、声明一个自定义组,在这个组中可以自定义我们的命令、菜单、工具栏等。

//自定义的组名string strMyGroupName = "MyGroup";//保存的CUI文件名(从CAD2010开始,后缀改为了cuix)string strCuiFileName = "MyMenu.cui";//创建一个自定义组(这个组中将包含我们自定义的命令、菜单、工具栏、面板等)CustomizationSection myCSection = new CustomizationSection();myCSection.MenuGroupName = strMyGroupName;

4、创建命令组,并添加菜单命令

//创建自定义命令组MacroGroup mg = new MacroGroup("MyMethod", myCSection.MenuGroup);MenuMacro mm1 = new MenuMacro(mg, "打开文件", "OF", "");MenuMacro mm2 = new MenuMacro(mg, "打开模板", "OM", "");MenuMacro mm3 = new MenuMacro(mg, "保存", "SV", "");

5、创建菜单,如果菜单项是单级菜单,则直接声明为PopMenuItem即可;如果菜单项下有子级,则将其子级放到一个PopMenu中,然后将这个PopMenu放到PopMenuRef中,最后将PopMenuRef放到总菜单中。按照这个原理,可以创建多级菜单。

//声明菜单别名StringCollection scMyMenuAlias = new StringCollection();scMyMenuAlias.Add("MyPop1");scMyMenuAlias.Add("MyTestPop");//菜单项(将显示在项部菜单栏中)PopMenu pmParent = new PopMenu("我的菜单", scMyMenuAlias, "我的菜单", myCSection.MenuGroup);//子项的菜单(多级)PopMenu pm1 = new PopMenu("打开", new StringCollection(), "", myCSection.MenuGroup);PopMenuRef pmr1 = new PopMenuRef(pm1, pmParent, -1);PopMenuItem pmi1 = new PopMenuItem(mm1, "文件", pm1, -1);PopMenuItem pmi2 = new PopMenuItem(mm2, "模板", pm1, -1);//子项的菜单(单级)PopMenuItem pmi3 = new PopMenuItem(mm3, "保存(&S)", pmParent, -1);

6、保存菜单文件

// 最后保存文件myCSection.SaveAs(strCuiFileName);

 

本来还想实现菜单的自动加载,但是CUI菜单必须用cuiload命令进行加载,在网上找到的方法都是向CAD发送lisp命令调用cuiload,但是我没有调用成功过。

 下面是一个测试程序的源码,开发环境是:VS2005 + CAD2008

转载于:https://www.cnblogs.com/bomb12138/p/3600842.html

你可能感兴趣的文章
NHibernate.3.0.Cookbook第四章第7节的翻译
查看>>
Docker 监控平台Prometheus
查看>>
vertical-align 和line-height 以及baseline的解析
查看>>
Android学习第十四天----SAX解析xml
查看>>
app与后台的token、sessionId、RSA加密登录认证与安全解决方案
查看>>
Java 基础
查看>>
Nancy总结(一)Nancy一个轻量的MVC框架
查看>>
关于软件工程的理解
查看>>
Git学习笔记(1)——安装,配置,创建库,文件添加到库
查看>>
mysql 用户管理和权限设置
查看>>
软件安全2.找到文件所占簇号(windows)
查看>>
解决文件夹无限嵌套无法删除的问题---最新办法
查看>>
线程的两种睡眠方法&ANR(进程/服务无响应)
查看>>
自然语言处理
查看>>
三元表达式/列表推导/生成器表达式
查看>>
Groovy基本语法
查看>>
关于selenium IDE找不到元素
查看>>
adb(12)-查看连接过的 WiFi 密码
查看>>
Mysql临时表
查看>>
Ext.Ajax.request 使用示例
查看>>