明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 868|回复: 0

[求助]请问版主如果想用C++封装一个块,CopyObjects的用法

[复制链接]
发表于 2009-1-4 09:42:00 | 显示全部楼层 |阅读模式

自己写了一段代码如下:

  CString blockName=pos->first;//得到块名
  CAcadBlock m_block=m_acadDoc.ObjectIdToObject(pos->second);//得到块对象,跟块名放在同一个Pair里
  std::vector<long> m_acadList=m_entityList[blockName]; //得到实体的ID集合
  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_VARIANT,1,rgsabound);
  for(long j=0;j<num2;j++)
  {
   LPDISPATCH entity=m_acadDoc.ObjectIdToObject(m_acadList.at(j));//将实体从ID转换为IDispatch指针
   SafeArrayPutElement(var1.parray,&j,entity);//加入到数组
  }
  CComVariant var2;
  var2.vt=VT_DISPATCH;
  var2.pdispVal=m_block;//将目标快由CAcadBlock对象转化为IDispatch指针

  m_acadDoc.CopyObjects(var1,var2,NULL);调用拷贝函数,这句话有问题.

看了很多资料,都是用VB写的,用一个可变Object数组就可以了,可是我其他程序都是用C++完成,检查了很长时间,没有发现问题,只好求教版主了?谢谢

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 04:27 , Processed in 0.161685 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表