iCAx开思网
标题:
seba请进!!!CAA: 和CATIA v5 R11 CATIA v5 R13中Draft的复制问题
[打印本页]
作者:
wgbin2100
时间:
2005-11-11 15:58
标题:
seba请进!!!CAA: 和CATIA v5 R11 CATIA v5 R13中Draft的复制问题
CAA: 和CATIA v5 R11 CATIA v5 R13中Draft的复制问题
本人做了一个程序,在CATIA v5 R11中可以进行复制视图,但到了CATIA v5 R13就不行了,总是提示我 command interruput,请高手指点!!!
主要代码如下:
CATListValCATISpecObject_var spViewToPasteList=spSheet1->GetViewList();
CATICutAndPastable_var spSrcCCP(CATISpecObject_var(spSheet1)->GetFeatContainer());
CATICutAndPastable_var spTarCCP(CATISpecObject_var(spSheet2)->GetFeatContainer());
IdFormat MyFmy ="CATDrwCont" ;
const CATFormat* pFmt = CATFormat::GetRegisteredFormat(MyFmy);
ListOfVarBaseUnknown newListToCopy;
ListOfVarBaseUnknown listFromCopy;
for ( int j = 1; j<=spViewToPasteList.Size(); j++)
{
CATIView_var(spViewToPasteList[j])->SetViewType(Main_View);
listFromCopy.Append(spViewToPasteList[j]);
listPastedObjects= spTarCCP -> Paste (extractedListToCopy,&listTargetObjects ,pFmt);
CATISketch_var spSkech =(CATIView_var(spViewToPasteList[j]))->GetSketch();
CATIDescendants_var spDes(spSkech);
if (!spDes)
{
cout << "No CATIDecendants Interface." << endl;
}
else
{
CATListValCATISpecObject_var listChildren;
spDes->GetAllChildren("CATIDrwText", listChildren); //"CATISpecObject"
int c = listChildren.Size();
for (int i = 1; i<=c; i++) ((CATIDrwText_var)listChildren[i])->SetOrientationReference(1);
}
HRESULT rc = spSrcCCP -> BoundaryExtract (newListToCopy, &listFromCopy,pFmt);
ListOfVarBaseUnknown extractedListToCopy;
CATICutAndPastable_var spSrcCCPExt = spSrcCCP -> Extract (newListToCopy, pFmt);
int r = 0;
if (!!spSrcCCPExt) r = spSrcCCPExt->BoundaryExtract(extractedListToCopy, NULL,pFmt);
for( j=1;j<=extractedListToCopy.Size();j++)
{
double ox,oy;
CATIDftViewMakeUp *ViewMU =NULL;
rc=extractedListToCopy[j]->QueryInterface(IID_CATIDftViewMakeUp, (void **)&ViewMU);
if(SUCCEEDED(rc))
{ ViewMU->GetPosition(&ox,&oy);
ViewMU->SetPosition(ox,oy);
}
ListOfVarBaseUnknown listPastedObjects ;
ListOfVarBaseUnknown listTargetObjects ;
listTargetObjects.Append(spSheet2);
listPastedObjects= spTarCCP -> Paste (extractedListToCopy,&listTargetObjects ,pFmt);
}
作者:
saeba
时间:
2005-11-11 21:15
是,是点我名吗?
最近杂事缠身,顾不上回答网友的问题,对不起了。
我会找时间试试你的source的(现在没有环境,只能下星期了),不过我手头只有R15,希望能再现你的问题。
BTW, command interruput可能是遇到Null pointer了,你能定位在哪里出现Null pointer了吗?
如果能的话,即使R15再现不了,也可以猜测你的问题大概在哪里。
作者:
wgbin2100
时间:
2005-11-12 10:26
谢谢saeba!!!!就上面这个程序也是以前你给我的,我再看看是不是哪里出现了Null pointer
作者:
saeba
时间:
2005-11-15 14:25
wgbin2100,
你能提供一个workspace或者framework吗?
最近时间很紧,没有时间从头做一个测试环境。
另外,你测试出哪里出现了Null pointer了吗?
CNEXTOUTPUT=console,用cout输出看看到哪一步了?
作者:
wgbin2100
时间:
2005-11-17 09:41
谢谢saeba!!!我没发现NULLpoint,你的邮箱地址是什么 ?我把framework发给你 。我的是
wgbin2100@163.com
作者:
saeba
时间:
2005-11-17 11:04
给你发了,
最好也给我一个你用来测试的CATDrawing文件。谢谢
作者:
wgbin2100
时间:
2005-11-17 11:30
现在好像邮箱有点问题 ,总是发不出去。我再试试
作者:
wgbin2100
时间:
2005-11-17 11:37
可能现在你的邮箱有点问题 ,我换了几个邮箱给你发信 ,总是发不出
作者:
wgbin2100
时间:
2005-11-17 15:13
已经发给你了 请您看一下
作者:
saeba
时间:
2005-11-17 17:01
你的问题不在你贴出的source中,而在你的dialog中:
是这段source引起的command terminate: (DrawCmdDlg.cpp)
CATIDrwText *DrwText=NULL;
rc=spSheet1->QueryInterface(IID_CATIDrwText,(void **)&DrwText);
if(FAILED(rc))
cout<<"DrwText is ERROR"<<endl;
else cout<<"DrwText is ERROR"<<endl;
CATIDrwAnnotationComponent * DrwTextPro=NULL;
rc=DrwText->QueryInterface(IID_CATIDrwAnnotationComponent,(void **)&DrwTextPro);
DrwTextPro->SetOrientationReference(1);
--> spSheet1->QueryInterface(IID_CATIDrwText,(void **)&DrwText);
从sheet中怎么能QI到CATIDrwText呢?
所以DrwText就成了NULL pointer,而你有没有检查,造成的CATIA down.
看这段source,你似乎是想要设置sheet的方向(纵横),但是不对路子。
应该用CATIDftFormat::SetSheetOrientation,而且还要和format中定义的相对应。
但是这是针对R15的,不知R13能不能用。
作者:
saeba
时间:
2005-11-17 17:02
忘了说了,把这段source注释掉,command的运行一切正常,该拷贝的都拷贝了。
作者:
wgbin2100
时间:
2005-11-18 09:39
谢谢saeba!!!
我后来给你发了一个程序DrawPack,是这个出现了那个出了问题
作者:
saeba
时间:
2005-11-18 12:37
DrawPack在我这里运行没有问题(R15)
我想也许是你不幸遇上了R13得什么Bug,我就帮不上什么忙了。
你应该试试设置断点跟踪一下大概是在哪部分出的问题,
或者试试更高版本的SP或直接R14/R15.
作者:
wgbin2100
时间:
2005-11-18 15:13
谢谢saeba!!!可能是我的CATIA的版本有问题 ,我的是盗版的(没办法,穷啊),运行CATIA会突然关闭。就是在那个paste函数出了问题,listPastedObjects= spTarCCP -> Paste (extractedListToCopy,&listTargetObjects ,pFmt);//问题出错在此句,如果把这句注释掉就没问题
欢迎光临 iCAx开思网 (https://www.icax.org/)
Powered by Discuz! X3.3