您的位置:首页 > 其它

AutoCAD二次开发三种添加插件按钮的方法之一

2015-12-13 19:40 495 查看
在上一篇关于AutoCAD的文章中,我将很多关于CAD的博客相关资源进行了说明,这一篇文章我将介绍如何在AutoCAD中的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中,下两篇将从纯代码开始添加按钮,但是不同的命名空间!敬请期待~~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: