首页 > 代码库 > 关于ObjectARX中自定义对象的OPM
关于ObjectARX中自定义对象的OPM
关键字
ObjectARX,AutoCAD,自定义对象,OPM
在ObjectARX开发中,给自定义对象添加一个属性页面是个很有吸引力的事情,
学习路径如下,
1,学习ObjectARX的samples,其中AsdkSquareWrapper和polysamp
1.1研究AsdkSquareWrapper,这个例子相对简单,比较容易看懂,
弄清楚custent和 custentwrapper之间的关系,和一些固定的关系,和引用,哪些文件是中间生成等等,对没有COM编程经验的比较好;
但估计是制作年代比较久远,按照readme虽然能编译通过,并且正确运行,但有些细节已经不一样了。
1.2研究polysamp,这是一个复杂,但也有很多的值得学习的例子,包括自定义对象,如何映射到COM上,映射到dotNET上等等
主要看compoly看如何映射到COM,
1.3(可选)再研究AsdkSquare,并对其进行重新改造;
小结:通过C++,实现一个OPM接口的属性页,asdkSquare为蓝本,已经足够了,不需要像polysamp那么复杂
两者对比:
A输出为一个DLL,然后由注册表文件REG,用户自行注册, 而P则是 包装成一个DBX文件,在AutoCAD的过程中,调用注册,完成注册,隐含使用了资源中RGS
A中的main.cpp相对简单;P中则是增加了AcrxEntryPoint等函数,以支持上述问题
A中无安装文件;P中提供了一个MSI项目参考,从而进行注册
A的文件组织有缺陷,需要两次编译(一次生成MIDL,一次生成DLLs);而这方面P则比较好,重复包含IDL文件可以就可以解决这个问题
A中的AsdkSquareLib.h应该是过时的产物,新的应该是AsdkSquareLib_i.h;而P则无这方面的问题
2 网上资料
这方面资料很少
《OPM的实现 》 http://blog.csdn.net/pangshaohua/article/details/5259542
这个只要看看就行,理解其中的含义即可,并不能说明其中是一种好的方案