AutoCAD二次开发三种添加插件按钮的方法之一
2015-12-13 19:40
495 查看
在上一篇关于AutoCAD的文章中,我将很多关于CAD的博客相关资源进行了说明,这一篇文章我将介绍如何在AutoCAD中的ribbon中添加相应的按钮。就是下面这种按钮:
PS:在开发中我们最好使用中英文两个版本同时进行,因为有些时候那些接口或类中的命名和英文版中的名称一样的,这样方便理解!
-----------------------------------------------------分割线------------------------------------------------
开发工具 :VS2010
开发环境 :.Net Framework4.5
开发语言 :C#
AutoCAD版本:2014中/EN
-----------------------------------------------------分割线-----------------------------------------------
如果你是一个CAD的老用户,你会知道这个配置文件,以前是.cui后缀的,新版本从2013开始是.cuix,不过本质上是一个东西;每当你打开AutoCAD的时候,它根据lisp加载的一大堆配置文件就在.cuix中,一般这些配置文件在C盘的隐藏文件夹里面,C:\Users\当前用户名(Administrator?)\AppData\Roaming\Autodesk\AutoCAD 2014\R19.1\chs\Support,不过最重要的是红色方框那个:
这里我们可以自定义一个自己的.cuix文件,然后再CAD中输入cui命令,打开用户自定义窗体,然后你可以将你的自定义文件cuix添加进去:
这里的mycui文件就是我们自定义的啦,未融入就是之前添加现在路经找不到文件咯!你需要在这个文件中新建自己的按钮:
就是这个东西,多试试你就知道怎么做了,然后给你自定义的按钮添加一个命令宏,也就是你在CAD之中点击这个按钮需要使用的命令,这个命令可以是自己代码写在DLL中加载到CAD中的,也可以是CAD内置的,自定义按钮当然一般是自定义命令啦!
当然你以为这样就行啦,那就错了,现在只是配置文件做好了,下一步我们需要将配置文件刚才弄好的按钮功能添加到ACAD下的功能区—》选项卡—》插件:
接下来你还需要选择工作空间,然后右键选择自定义工作空间(一般我们使用默认工作空间,当然也可以代码设置工作空间),然后将刚才的编辑好的插件添加进去
这样我们就配置好了我们的插件按钮了,最后我们需要输入‘netload’将我们的写好的dll命令添加进来就可以实现按钮互操作了,这里我们每次加载自定义的.cuix之后的操作也可以使用代码实现,我们在VS中安装了AutoCAD的插件开发环境后Autodesk新建项目,在myPlugin.cs这个文件的void IExtensionApplication.Initialize()方法中写入加载.cuix文件的代码,这样每次加载dll就会预先加载cuix文件,那么就不会出现cuix未融入的状态了;然后就是将我们写在cuix中的配置好的按钮添加到主功能区中去!
最后的按钮效果啦。。。
这一篇主要讲了太多关于配置的流程,大多可以使用手动配置实现,核心是需要自定义的配置文件cuix,然后读取他的命令按钮添加到我们主ribbon中,下两篇将从纯代码开始添加按钮,但是不同的命名空间!敬请期待~~~
PS:在开发中我们最好使用中英文两个版本同时进行,因为有些时候那些接口或类中的命名和英文版中的名称一样的,这样方便理解!
-----------------------------------------------------分割线------------------------------------------------
开发工具 :VS2010
开发环境 :.Net Framework4.5
开发语言 :C#
AutoCAD版本:2014中/EN
-----------------------------------------------------分割线-----------------------------------------------
第一种:利用.cuix配置文件
如果你是一个CAD的老用户,你会知道这个配置文件,以前是.cui后缀的,新版本从2013开始是.cuix,不过本质上是一个东西;每当你打开AutoCAD的时候,它根据lisp加载的一大堆配置文件就在.cuix中,一般这些配置文件在C盘的隐藏文件夹里面,C:\Users\当前用户名(Administrator?)\AppData\Roaming\Autodesk\AutoCAD 2014\R19.1\chs\Support,不过最重要的是红色方框那个:这里我们可以自定义一个自己的.cuix文件,然后再CAD中输入cui命令,打开用户自定义窗体,然后你可以将你的自定义文件cuix添加进去:
这里的mycui文件就是我们自定义的啦,未融入就是之前添加现在路经找不到文件咯!你需要在这个文件中新建自己的按钮:
就是这个东西,多试试你就知道怎么做了,然后给你自定义的按钮添加一个命令宏,也就是你在CAD之中点击这个按钮需要使用的命令,这个命令可以是自己代码写在DLL中加载到CAD中的,也可以是CAD内置的,自定义按钮当然一般是自定义命令啦!
当然你以为这样就行啦,那就错了,现在只是配置文件做好了,下一步我们需要将配置文件刚才弄好的按钮功能添加到ACAD下的功能区—》选项卡—》插件:
接下来你还需要选择工作空间,然后右键选择自定义工作空间(一般我们使用默认工作空间,当然也可以代码设置工作空间),然后将刚才的编辑好的插件添加进去
这样我们就配置好了我们的插件按钮了,最后我们需要输入‘netload’将我们的写好的dll命令添加进来就可以实现按钮互操作了,这里我们每次加载自定义的.cuix之后的操作也可以使用代码实现,我们在VS中安装了AutoCAD的插件开发环境后Autodesk新建项目,在myPlugin.cs这个文件的void IExtensionApplication.Initialize()方法中写入加载.cuix文件的代码,这样每次加载dll就会预先加载cuix文件,那么就不会出现cuix未融入的状态了;然后就是将我们写在cuix中的配置好的按钮添加到主功能区中去!
//使用cuix文件添加对应ribbonbutton //先判断是否添加配置cuix //将配置cuix中的配置功能项添加到acad.cuix中的功能区 //刷新工作空间的功能区命令 private void AddRibbonButtonByCustomCui() { string mainCuiFile = (string)Application.GetSystemVariable("MENUNAME"); mainCuiFile += ".cuix"; CustomizationSection csLoad = new CustomizationSection(mainCuiFile); PartialCuiFileCollection pPartialCuiFileCollection = csLoad.PartialCuiFiles; if (pPartialCuiFileCollection.Contains("mycui.cuix")) { System.Windows.Forms.MessageBox.Show("已加载插件!"); Application.UnloadPartialMenu(strCuipath); //return; } bool isOK = Application.LoadPartialMenu(strCuipath); //加载自定义cui if (!isOK) { System.Windows.Forms.MessageBox.Show("加载自定义配置文件失败!"); return; } //加载CUI //Application.QuitWillStart += new EventHandler(Application_BeginQuit); //Application.BeginQuit += new EventHandler(Application_BeginQuit); //Autodesk.Windows.ComponentManager.ApplicationMenu.Opening += new EventHandler<EventArgs>(ApplicationMenu_Opening); CustomizationSection cs = new CustomizationSection(mainCuiFile); PartialCuiFileCollection cuiFiles = cs.PartialCuiFiles; //acad.cuix配置文件 if (cuiFiles.Contains("mycui.cuix")) {//将my.cuix文件中的配置按钮写入acad.cuix文件中去 string strPartialCui = cuiFiles.GetFileNameByIndex(cuiFiles.IndexOf("mycui.cuix")); CustomizationSection csCustom = new CustomizationSection(strPartialCui); RibbonPanelSource pRibbonPanelSource = csCustom.MenuGroup.RibbonRoot.FindPanel("RBNU_191_C0DED");//自定义panel中的ElementID RibbonPanelSource pCloneRibbonPanelSource = pRibbonPanelSource.Clone() as RibbonPanelSource; cs.MenuGroup.RibbonRoot.RibbonPanelSources.Add(pCloneRibbonPanelSource); RibbonTabSource pRibbonTableSource2 = cs.MenuGroup.RibbonRoot.FindTab("RBN_00012112");//插件Tab的ElementID RibbonPanelSourceReference pRibbonPanelSourceRefrence = new RibbonPanelSourceReference(pRibbonTableSource2); //这一步ID一定要赋值 pRibbonPanelSourceRefrence.PanelId = pCloneRibbonPanelSource.ElementID; pRibbonTableSource2.Items.Add(pRibbonPanelSourceRefrence); cs.Save(); Application.ReloadAllMenus();//否则不现实按钮 } }
最后的按钮效果啦。。。
这一篇主要讲了太多关于配置的流程,大多可以使用手动配置实现,核心是需要自定义的配置文件cuix,然后读取他的命令按钮添加到我们主ribbon中,下两篇将从纯代码开始添加按钮,但是不同的命名空间!敬请期待~~~
相关文章推荐
- gem5: the trace of cache set and cache line write hit counters
- 初识Jenkins
- openSUSE 42.1 下安装 Oracle JDK
- 关闭数据库遇到SHUTDOWN: Active processes prevent shutdown operation
- 欧拉回路的判定
- 初识Jenkins
- JSTL 核心标签库 使用 (转)
- uva 116 Unidirectional TSP【号码塔+打印路径】
- Famitracker 效果列表(Effect list)
- python中的多线程
- android之ContentProvider详解
- golang声明变量
- 过滤器验证用户登录
- 多路分发_demo_me
- Windows——用快捷键打开命令提示符cmd
- 密码学之RSA加密
- c语言:1000瓶水,有一瓶是有毒的,现共有10只老鼠,怎么判断毒水?
- iOS 点击空白处收回键盘的方法
- 初探nodejs创建web服务器
- 安卓在雪域注册