iCAx开思工具箱

标题: 如何在CATIDrawing里实现对SHEET里全部内容得COPY? [打印本页]

作者: zcsq    时间: 2005-9-4 12:22
标题: 如何在CATIDrawing里实现对SHEET里全部内容得COPY?
想通过COPY/PASTE命令实现拷贝SHEET里的所有内容粘贴到另一SHEET里,包括BackgroundView和MainView,不知COPYPASTE()能否实现,各位有做过得码?给点意见亦可。3X
本人尝试着做了一下,可一直未行通。
作者: zcsq    时间: 2005-9-4 22:57
各位高手请给点意见呀,谢谢!
作者: HNBoTree    时间: 2005-9-6 10:16
我现在也在做二维的,这方面急需帮助,先顶一下。
作者: zcsq    时间: 2005-9-6 11:19
楼上得有没联系方式,交流一下呀!我得QQ10860995
作者: acoka    时间: 2005-9-6 13:16
可以用Ctrl-c, v复制,
所以应该可以用CATICutAndPastable
作者: zcsq    时间: 2005-9-7 18:14
acoka兄好,CATICutAndPastable应该是可以用的。下面是我做的部分程序,现在可以获取一个SHEET里的所有VIEW,但是在使用paste()命令后,ListOfVarBaseUnknown 类型便领listPastedObjects.Size()却为0,不知为什么?
请各位高手继续指点一、二。
多谢!
CATIdent idAppliCont2 = "CATFeatCont";
  CATUnicodeString targetAppliContId ("CAAOsmTargetContainer");
  CATBaseUnknown *pTargetContainer = NULL;
  rc=ATCreateApplicativeContainer(&pTargetContainer,
pDocDrawing,
dAppliCont2,
IID_CATIContainer,
  "",
targetAppliContId);
  if (SUCCEEDED(rc)) cout << "Target applicative container created OK" << endl << flush;
  else
  {
    cout << "ERROR in creating target applicative container" << endl << flush;
        return 4;
  }
  if(pTargetContainer!=NULL)cout<<"pTargetContainer!=0"<<endl;
//create object to copy.........................
    CATLISTV(CATISpecObject_var) oElems= spSheet1->GetViewList();
    cout<<" the objects to copy's number is "  <<oElems.Size()<<endl;
    ListOfVarBaseUnknown listToPaste;
  if(oElems.Size())
  {
  for (int i=1; i<=oElems.Size(); i++)
      {
         listToPaste.Append(oElems);
       }
  }
  cout<<" listToPaste 's number is "  <<listToPaste.Size()<<endl;
  CATICutAndPastable *piCutAndPastableOnTargetCont = NULL;
rc = pTargetContainer -> QueryInterface(IID_CATICutAndPastable,
  (void**) [$piCutAndPastableOnTargetCont)]
  pTargetContainer -> Release();
    pTargetContainer = NULL;
  if(FAILED(rc))
  {
    cout<<"queryinterface CATICutAndPastable ERROR!"<<endl;    
//    pSourceContainer -> Release();
        return 3;
  }
  if(SUCCEEDED(rc)&&piCutAndPastableOnTargetCont != NULL)
    cout<<"queryinterface CATICutAndPastable OK!"<<endl;      
// Paste the requested objects in the target container.   
ListOfVarBaseUnknown listPastedObjects=NULL;            
listPastedObjects= piCutAndPastableOnTargetCont-&gtaste(listToPaste, NULL,NULL);
  cout<<"listPastedObjects number is:"<<listPastedObjects.Size()<<endl;    
作者: acoka    时间: 2005-9-7 20:03
你是要把一个view拷到另一个sheet里去?
  
你可以试试看是不是该换个pTargetContainer
作者: zcsq    时间: 2005-9-8 09:12
Q:你是要把一个view拷到另一个sheet里去?  
A:是的
QQ:你可以试试看是不是该换个pTargetContainer
应该是要改换pTargetContainer,ke 但不知道如何入手去改。
ATCreateApplicativeContainer(&pTargetContainer,  
pDocDrawing,  
dAppliCont2,  
IID_CATIContainer,  
"",  
targetAppliContId);  
几个参数中,不知如何设置param2,3,4,才合适。
多谢acoka!
作者: zcsq    时间: 2005-9-9 16:55
请各位继续指点呀,多谢了!
作者: hick    时间: 2005-9-13 08:54
仔细看看 CATICutAndPastable 的用法
作者: zcsq    时间: 2005-9-14 14:37
标题: 可以拷贝了,但只适合自己画的图,如果
可以拷贝了,但只适合自己画的图,如果是交互由3维到2维的图,却拷不了,维什么?哪位能帮帮我呀?
谢谢!
作者: zcsq    时间: 2005-9-14 14:45
标题: 可以拷贝了,但只适合自己画的图,如果
可以拷贝了,但只适合自己画的图,如果是交互由3维到2维的图,却拷不了,维什么?哪位能帮帮我呀?
谢谢!




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3