AutoCAD.NET二次开发:创建自定义菜单的两种方法比较
AutoCAD.NET⼆次开发:创建⾃定义菜单的两种⽅法⽐较
⽬前我已经掌握的创建CAD菜单⽅法有两种:
COM⽅式:
CUI⽅式:
  从程序复杂度来看,COM⽅式更简单⼀些,CUI⽅式较复杂。
  从版本特性来看,COM⽅式更通⽤⼀些,CUI⽅式仅⽀持CAD2007+的版本。那个牌子的隔离霜好
  从兼容性来看,基本⼀样;在测试程序中,对于CUI⽅式,我引⽤的是CAD2008的类库,⽽最后⽣成的程序也可以在CAD2007中正常运⾏;⽽对于COM⽅式,这⾥要介绍⼀下CAD提供的COM组件了。CAD的COM组件基本上是每三年⼀个系列,⽐如04、05、06提供的是V16系列,07、08、09是V17系列,每个系列中仅注册最⾼版本的COM组件,⽐如我电脑上安装离CAD2007和CAD2008,但是仅注册了CAD2008的组件,⾼版本的COM可以兼容低版本。在我的测试程序中,引⽤的是AutoCAD 2008 Type Library,起初引⽤属性中的“复制本地”为False,这个时候⽣成的DLL拿到了虚拟机中测试,出现了以下情况:
dnf剑魂加点  在虚拟机A中,仅安装了AutoCAD 2007,⽤CAD加载我的DLL,会崩溃,提⽰不到程序集。
  在虚拟机B中,仅安装了AutoCAD 2009,⽤CAD加载我的DLL,运⾏正常。
  之后,我把引⽤属性中的“复制本地“改为了True,把我的DLL和引⽤到的Autodesk.AutoCAD.Interop.dll⼀起复制到两个虚拟机中,都可以正常运⾏。
经济学研究生  因此,在编译CAD程序时,如果在创建项⽬时,引⽤每个系列中的最低版本类库,则理论上,⽣成的DLL可以兼容三个版本。
  从⾃动加载实现来看,COM⽅式配合注册表控制、IExtensionApplication接⼝实现可以很好地实现菜单的⾃动加载;⽽CUI必须⽤cuiload命令进⾏加载,所以要实现其⾃动加载,必须在IExtensionApplication接⼝中向CAD发送lisp命令来调⽤cuiload(⽹上到处都说可以⽤这种⽅法实现,但是我不停在尝试,从来未成功,所以不得不怀疑其可⾏性)。
  最终个⼈认为,还是Com⽅式较优,虽然这样⼀来,需要为每个版本的CAD都发布⼀次程序(因为引⽤到了COM),但也许我们的程序⾥还有其他地⽅会⽤到COM呢。
  ⽽且事实上,我们仅需要⼀套代码,通过为每个版本的CAD创建⼀个项⽬,然后将代码以链接的⽅式加载到项⽬中,就可以很⽅便地发布不同版本的程序集了。如果程序中在些地⽅不同版本CAD中的写法⽀持不⼀样的话,可以⽤预编译指令进⾏控制。
  以链接⽅式加载代码的⽅式如下:
除蚂蚁>铅球加油稿
  在项⽬中点⿏标右键,选择“添加现有项”,然后选中要添加的代码⽂件,点“添加”按钮旁的向下箭头,即可到“添加为链接”,以这种⽅式添加的代码⽂件像桌⾯快捷⽅式⼀样左下⾓有个箭头。
>什么护肤品好用

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。