[原创]ObjectARX开发环境搭建之VS2010+ObjectARX2012Wizard+Addin工具条问题修复
目前ObjectARX版本越来越高,也越来越简化开发,如果需要同时开发低版本和高版本的ARX程序,就需要搭建批量编译环境,以满足ARX开发的需要。
批量编译的搭建网络上已经有了很多的教程,基本上都是基于vs2010+arx2012wizard,原因是arx2012的wizard有addin工具条,而高版本不再有此功能,对于新手来说,这是很不方便的。可是arx2012的wizard存在一些未修改的错误,导致addin工具条有的无法使用,甚至会引起vs2010的崩溃。经过我的研究发现了问题的所在,原本在QQ群的群问问已经发表了这个解决的帖子,但是QQ群新版更新后取消了这个应用,为了避免后面的人继续走这个弯路,特发此文。
ARX二次开发对vs的版本和arx的版本对应,具体的可以查看我的博文: https://www.cnblogs.com/edata/p/10802746.html
我建议新手选择vs2010+arx2012wizard进行初步开发,因为这个版本的wizard向导工具拥有工具条的的功能,而有的教程和书籍都使用了工具条来进行开发,所以工具条可以让新手更方便快捷的学习arx基础,(ps:高版本只要arx和vs对应,基本上配置更简单,几乎用向导生成就能开始开发了)。
如果代码写好了,就可以直接向上升级到最新版本,向下降级编译到cad2004,代码改动比较小。cad2000~2002 的sdk不一样不能直接使用,需要修改才能实现。套用一句古语:上可九天揽月,下可五洋捉鳖,所以用vs2010+wizard2012是非常不错的选择。
首先我们需要获得这个几个软件:vs2010 +sp1,objectARX2012 wizard,objectarx各个版本.vC助手,这些均可百度得到。
vs2010和vc助手安装也比较简单,都能百度得到,不再详细介绍。
objectarx各个版本的sdk基本上就是一个自解压包,这个需要对应你需要开发的版本。我们这里建议先安装arx2013 sdk或2014sdk, 使用autocad2013或者2014。(cad2010~2012也可以)
下载wizard2012 http://www.cnblogs.com/Yself/p/4765382.html
objectARX2012wizard模板向导,这个是msi文件,如果系统是win7或者win8之类的系统,都需要管理员权限才能安装到位,否则会导致安装的向导不可用,具体的解决方式,可以参考:http://www.cnblogs.com/edata/p/6796025.html ,虽然此文说的是2015的向导,实际上2012的也是一样的要求和方法。
objectARX2012wizard要求.net3.5环境,安装之前最好确认这个是否已经安装完成,一般你安装cad2012的时候会自动安装这个.net3.5.
如果是win7/win8 win10一定要用管理员模式安装,安装这个wizard几乎是一路next,就行。
安装完成后,我们需要先对这个wizard修复。
首先修复Addin工具条的图标,这个由于缺少中文资源文件引起的。
win7或win8 win10 64位系统打开路径 C:\Program Files (x86)\Autodesk\ObjectARX Wizards for AutoCAD 2012\ArxAddInWiz2010
下载zh-chs中文资源文件夹. 点击下载zh-chs
解压到上面的目录即可。
完成后重新启动vs:就有了这个图标。
下面继续改造:打开
C:\Program Files (x86)\Autodesk\ObjectARX Wizards for AutoCAD 2012\ArxWizMFCSupport\HTML\1033
或
C:\Program Files\Autodesk\ObjectARX Wizards for AutoCAD 2012\ArxWizMFCSupport\HTML\1033
右键打开default.htm文件并查找classid将CLASSID="CLSID:5A0C78A8-07D8-48cd-B1DD-BA9752C79F1C">
换成CLASSID="CLSID:19db9a07-5ca3-461e-9e7b-b370c91aba2e">
保存文件,如果是win8 win10 可能要先保存到桌面或者其他位置,再复制回去覆盖(后面保存均相同)。
同理我们继续打开
C:\Program Files\Autodesk\ObjectARX Wizards for AutoCAD 2012\ArxMemVariableWiz\HTML\1033
或C:\Program Files (x86)\Autodesk\ObjectARX Wizards for AutoCAD 2012\ArxMemVariableWiz\HTML\1033
右键打开default.htm文件并查找classid将CLASSID="CLSID:5A0C78A8-07D8-48cd-B1DD-BA9752C79F1C">
换成CLASSID="CLSID:19db9a07-5ca3-461e-9e7b-b370c91aba2e">
保存。。
继续打开
C:\Program Files\Autodesk\ObjectARX Wizards for AutoCAD 2012\ArxAppWiz\Scripts\1033
或者C:\Program Files (x86)\Autodesk\ObjectARX Wizards for AutoCAD 2012\ArxAppWiz\Scripts\1033
右键打开default.js
查找到ManagedExtensions 默认在122行或者123行.将后面的值修改成 bDotNetModule ? managedAssembly: managedNotSet ;
下面是完整例子(这个是修复arx勾选net的错误修正方式):
config.ManagedExtensions =bDotNetModule ? managedAssembly: managedNotSet ;
修改一下默认输出路径的多的一个斜杠
查找OutputFile 大概在168行
取消$(outdir)/的这个斜杠
参见图
按Ctrl+End键盘鼠标拖动到最下方
最最后一行开始倒数第三行,找到var szPath ="c:\\Program Files\\Autodesk\\AutoCAD 2011\\" ;这类似这句
将这个地址改成你的cad安装目录如 "D:\\Program Files\\Autodesk\\AutoCAD 2013\\" 注意路径的双斜线。
保存。。
--------------------------------------------------
更新修正 MIDL1012 错误 2019-07-26
修复新建COM服务器的ATL支持项目(OPM)的错误,
修改为
这样新建的带有MIDL项目就不会提示错误这个错误了.
打开C:\Program Files (x86)\Autodesk\ObjectARX Wizards for AutoCAD 2012\ArxWizMFCSupport\Templates\1033目录下的
DockControlBar.h DockControlBar.cpp
修改 Create函数的第二个参数类型为 LPCTSTR,可以将Create成员函数声明放在 public下(可选)。
如果不放在public下,在类外不能使用这个create,如果不打算改写其他方式调用create,就改在public下。
完成后我们用vs2010开始新建项目。
启动成功后会自动加载arx,无需再用ap加载。直接在命令行输入hello就能执行这句hello arx 2013!!
首次运行可能会提示无法找到acad.exe的调试信息,打勾点是即可。
备注:acad.exe的pdb是调试acad.exe部分的,二次开发只需要调试自己的代码部分,不需要调试exe部分,而且桌子公司没有提供该pdb。