好消息,我想是解决了!
一个一个来,
首先,为什么return 6改成continue以后就没了显示,
今天仔细看了看,原来你在之后,作了document的remove:
rc = CATDocumentServices::Remove (*pDoc);
这样一来,整个product的信息全部从session中删除,自然也就没了显示
把这个remove注释掉,果然显示就出来了。
但是这时的显示,因为没有matrix信息,看起来就像只有一个part被显示了一样。
那么怎么显示实际的装配图呢?
有两个方法,
1。直接显示主product,这时根本就不用循环了
...
CATPathElement* RootObjectPath=new CATPathElement(spRootProduct);
rc = pVisManager->AttachTo(RootObjectPath, pVP, ListIVisu3d, NULL, 0, 1);
if ( FAILED(rc) )
{
cout <<" ERROR in the AttachTo method" << endl;
return 6;
}else{
cout << "AttachTo OK." << endl;
}
CATI3DGeoVisu * pIVisuOnRoot =NULL ;
rc = spRootProduct->QueryInterface(IID_CATI3DGeoVisu, (void **) & pIVisuOnRoot);
...
就可以
2。如果你想控制其中的几个子product不显示或别的什么,
不必用piProductOnProduct->GetShapeRep(spLinkableOnShapeRep) (循环还是要的)
而是:
在循环中
...
CATPathElement* RootObjectPath=new CATPathElement(piProductOnProduct);
rc = pVisManager->AttachTo(RootObjectPath, pVP, ListIVisu3d, NULL, 0, 1);
if ( FAILED(rc) )
{
cout <<" ERROR in the AttachTo method" << endl;
continue;
}else{
cout << "AttachTo OK." << endl;
}
CATI3DGeoVisu * pIVisuOnRoot =NULL ;
rc = piProductOnProduct->QueryInterface(IID_CATI3DGeoVisu, (void **) & pIVisuOnRoot);
...
都会得到附图的结果 |