查看单个帖子
旧 2009-04-27, 12:57 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 请教高手如何用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函数,经调试这句话有问题,是不是参数设置出问题了?
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)