首页 > 代码库 > 关于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

 这个只要看看就行,理解其中的含义即可,并不能说明其中是一种好的方案