![]() |
请教高手如何用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函数,经调试这句话有问题,是不是参数设置出问题了? |
| 所有的时间均为北京时间。 现在的时间是 03:58 AM. |