找回密码 注册 QQ登录
一站式解决方案

iCAx开思网

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

拓扑相交出错 请高手指点 帮俺看看源代码!

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

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

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

x
代码如下:
HRESULT GetIntersectPoint(const CATISpecObject_var &spMainbodyFeature,const CATISpecObject_var &spLineObj)
{
   CATLISTP(CATPoint) LISTPoint = NULL;
   HRESULT rc = S_OK;
   CATBody_var spMainFeaturebody = NULL_var;
   CATBody_var spLineObjBody = NULL_var;

  spMainFeaturebody = GetBodyFromFeature(spMainbodyFeature);
  if (spMainbodyFeature == NULL_var)
  {
    cout<<"Error:GetBodyFromFeature(spMainbodyFeature,spMainFeaturebody)"<<endl;
return E_FAIL;
  }
  cout<<"Get spMainFeaturebody Successful"<<endl;
  rc = GetBodyFromFeature(spLineObj,spLineObjBody);
  if (FAILED(rc)||(spLineObjBody == NULL_var))
   {
    cout<<"Error:GetBodyFromFeature(spLineObj,spLineObjBody)"<<endl;
    return rc;
   }
  cout<<"Get spLineObjbody Successful"<<endl;
CATLISTP(CATCell) LISTCell1;
spLineObjBody->GetAllCells(LISTCell1,1);
if (LISTCell1.Size() <= 0)
{
  cout<<"can't get line body"<<endl;
  return E_FAIL;
}
cout<<"LISTCell1.Size() = "<<LISTCell1.Size()<<endl;

CATLISTP(CATCell) LISTCell2;
spMainFeaturebody->GetAllCells(LISTCell2,2);
if (LISTCell2.Size() <= 0)
{
  cout<<"can't get surface body"<<endl;
  return E_FAIL;
}
cout<<"LISTCell2.Size() = "<<LISTCell2.Size()<<endl;
CATBody* piLineBody = spLineObjBody;
CATBody* piMainFeaturebody = spMainFeaturebody;

cout<<"get piLineBody and piMainfeaturebody successful"<<endl;
CATSoftwareConfiguration* piConfig = new CATSoftwareConfiguration();
CATTopData topData(piConfig);
CATTopData* ptopData = &topData;
CATGeoFactory* piGeomFactory = ::CATCreateCGMContainer() ;
if (NULL == piGeomFactory)
{
  cout<<"Error:::CATCreateCGMContainer()"<<endl;
   return E_FAIL;
}
CATHybIntersect* pHyIntersect =  CATCreateTopIntersect(piGeomFactory,ptopData,piLineBody,piMainFeaturebody);//这句出错,输入对象不能引用
if (NULL == pHyIntersect) return E_FAIL;
  pHyIntersect->Run();
CATBody* piIntersectBody = pHyIntersect->GetResult();
if (piIntersectBody == NULL)
{
cout<<"Error:piIntersectBody == NULL"<<endl;
return E_FAIL;
}
cout<<"Get Intersectbody successful"<<endl;
  return rc;
}
求高手指点

本帖最后由 daiff2008 于 2010-12-17 16:23 编辑
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2010-12-13 21:32:34 | 只看该作者

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

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

x
3
 楼主| 发表于 2010-12-14 10:34:59 | 只看该作者

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

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

x
4
 楼主| 发表于 2010-12-14 14:18:15 | 只看该作者

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

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

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

本版积分规则

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

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

GMT+8, 2024-11-19 23:40 , Processed in 0.026805 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

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