找回密码 注册 QQ登录
开思网工业级高精度在线3D打印服务

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 18443|回复: 13
打印 上一主题 下一主题

seba请进!!!CAA: 和CATIA v5 R11 CATIA v5 R13中Draft的复制问题

[复制链接]
跳转到指定楼层
1
发表于 2005-11-11 15:58:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
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);
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2005-11-11 21:15:43 | 只看该作者
是,是点我名吗?
最近杂事缠身,顾不上回答网友的问题,对不起了。
我会找时间试试你的source的(现在没有环境,只能下星期了),不过我手头只有R15,希望能再现你的问题。
BTW, command interruput可能是遇到Null pointer了,你能定位在哪里出现Null pointer了吗?
如果能的话,即使R15再现不了,也可以猜测你的问题大概在哪里。
3
发表于 2005-11-12 10:26:02 | 只看该作者
谢谢saeba!!!!就上面这个程序也是以前你给我的,我再看看是不是哪里出现了Null pointer
4
发表于 2005-11-15 14:25:53 | 只看该作者
wgbin2100,
你能提供一个workspace或者framework吗?
最近时间很紧,没有时间从头做一个测试环境。
另外,你测试出哪里出现了Null pointer了吗?
CNEXTOUTPUT=console,用cout输出看看到哪一步了?
5
发表于 2005-11-17 09:41:15 | 只看该作者
谢谢saeba!!!我没发现NULLpoint,你的邮箱地址是什么 ?我把framework发给你 。我的是wgbin2100@163.com
6
发表于 2005-11-17 11:04:52 | 只看该作者
给你发了,
最好也给我一个你用来测试的CATDrawing文件。谢谢
7
发表于 2005-11-17 11:30:12 | 只看该作者
现在好像邮箱有点问题 ,总是发不出去。我再试试
8
发表于 2005-11-17 11:37:29 | 只看该作者
可能现在你的邮箱有点问题 ,我换了几个邮箱给你发信 ,总是发不出
9
发表于 2005-11-17 15:13:05 | 只看该作者
已经发给你了  请您看一下
10
发表于 2005-11-17 17:01:21 | 只看该作者
你的问题不在你贴出的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能不能用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2024-12-24 08:27 , Processed in 0.023825 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

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