几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量

几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 (http://www.dimcax.com/hust/index.php)
-   数据库ObjectDBX (http://www.dimcax.com/hust/forumdisplay.php?f=177)
-   -   【转帖】请教高手如何用c++将acadentity封装到一个块去? (http://www.dimcax.com/hust/showthread.php?t=13921)

yang686526 2009-04-28 04:35 PM

【转帖】请教高手如何用c++将acadentity封装到一个块去?
 
请教高手如何用c++将acadentity封装到一个块去?
www.dimcax.com
请教高手如何用c++将acadentity封装到一个块去?
如果用vb则很简单,直接实用可变数组装入object类型,再用copyobjects函数即可,我现在用c++,copyobjects的第一个参数为variant* 类型,看起来只能用其内含的safearray数组,保存的对象为idispitch类型,可以加进去以后,也可以读出来,但是copyobjects调用失败,请问有高手知道是什么原因吗?谢谢。代码如下:
cstring blockname=pos->first; //得到块名称
cacadblock m_block=m_acaddoc.objectidtoobject(pos->second);//得到块类型实例
std::vector<long> m_acadlist=m_entitylist[blockname]; //获取需要添加到该块的实体集合
int num2=m_acadlist.size(); //得到该集合的实体数目
ccomvariant var1;
var1.vt=vt_dispatch|vt_array;
safearraybound rgsabound[1];
rgsabound[0].celements=num2;
rgsabound[0].llbound=0;
var1.parray=safearraycreate(vt_dispatch,1,rgsabound);
for(long j=0;j<num2;j++)
{
lpdispatch entity=m_acaddoc.objectidtoobject(m_acadlist.at(j)); //得到一个实体的idispitch
safearrayputelement(var1.parray,&j,entity); //添加实体
}
ccomvariant var2;
var2.vt=vt_dispatch;
var2.pdispval=m_block; //j将cacadblock转化为variant* 类型
m_acaddoc.copyobjects(var1,var2,null); //调用copyobjects函数,经调试这句话有问题,是不是参数设置出问题了?


所有的时间均为北京时间。 现在的时间是 06:38 AM.