此问题的引入是因为一个cad二次开发软件,客户要求做成绿色安装。何为绿色安装呢?软件包copy到一台电脑上(已安装CAD),双击exe,打开的界面包含自定义的菜单、菜单的图标能正确显示、每个功能能使用、能使用自定义的字体、线型、图块、图形模板。

  包含以下工作:

  (1)搜索当前电脑已安装的cad版本,指定待打开版本

  (2)新定义配置名或添加到已有的配置中

  (3)添加支持路径<保证自定义菜单图标显示,打开的图能自动搜索到字体、线型>

  (4)启动对应版本自定义的arx<保证功能使用>

  (5)添加自定义菜单<保证菜单显示>

   下面是修改注册表实现的方法:

   cad版本信息:[HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\]

   指定版本缺省打开配置:[HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R16.0\ACAD-201:804\Profiles] @=" 缺省配置"

   支持路径:[HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R16.0\ACAD-201:804\Profiles\<<配置>>\General] "ACAD"="......"

   ......

   arx自动加载:acad.rx文件

   自定义菜单的显示着实折磨了我好久,方法也想了很多,纠结阿纠结阿:

  (1)写入注册表法,不知啥原因,反正菜单没显示出来

  (2)在arx程序加载时acedCommand调用命令,cad完全打开后手动加载arx菜单是显示了,不过我们的目的是cad启动时加载命令,亦失败了

  (3)lisp程序加载命令,因此我写了个加载命令的acaddoc.lsp放在搜索路径下,菜单是能显示了可是和杀毒软件不友好,总是被杀毒软件杀了~~~~

   (4)经历了总总无奈后纠结地继续探索,此处特别鸣谢北京易楼的网友,在他的推荐下我看了“免费工具 [易楼AutoCAD插件管理器20110323版]”,贴上关键函数

 

#if _MSC_VER < 1500 // MFC 8.0 or earlier

extern "C" Acad::ErrorStatus ads_queueexpr(const TCHAR* lisp_expr );

#endif

 

ps

:早期版本需导出此函数

   问题终于解决,写下此文纪念走过的路。

参考文章:

CAD启动时自动加载程序的研究http://hi.baidu.com/zzdiqarealqsuxr/item/9a607e908068008659146109

易楼AutoCAD插件管理器20110323版http://www.easylou.com/