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

iCAx开思网

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

CAA中关于intersect特征的一个问题

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

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

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

x
各位高手:
      最近遇到一个问题,感觉十分茫然,如下图1,我用好多平面和PartBpdy进行求交,结果是一些交叉特征,每个交叉特征形状一样,尺寸不一样(单个交叉的形状如图2),我想得到每个交叉的和外面的圆弧相连的那条曲线的长度,现在长度是得到了,可是结果不对,那条线的长度竟然在每个交叉处的长度都一样,请问为什么?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 赞一下!赞一下!
2
发表于 2005-8-15 21:22:28 | 只看该作者
图2,求红色曲线的长度
3
发表于 2005-8-15 21:30:10 | 只看该作者
我先得到每个交叉特征的Body,然后得到每个交叉的所有的CATCurve,然后区分出了交叉上的我要求的那条曲线,得到了它的长度,不知道为什么长度总是一样,得到的错误的结果如下:
第3列为各个交叉上的那条线的长度
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
90.000000  6.000000  68.940042
请高手指点
:)
4
发表于 2005-8-15 21:31:37 | 只看该作者
图2 ,刚发的看不到。
5
发表于 2005-8-15 22:03:19 | 只看该作者
以下是得到一个交叉所有的曲线的函数,其中GetAliasOfFeature()显示参数的别名,GetBodyFromFeature()得到特征的CATBody_var,都是自己写的,List是输出参数,存放得到的所有的曲线。
  
void ChildCmd1::GetAllCurvesInFeature(CATISpecObject_var& spIntersect,CATLISTV(CATBaseUnknown_var)& List)
{
  CATLISTP(CATCell) LISTCell;
  if(NULL_var!=spIntersect)
  {  
   GetAliasOfFeature(spIntersect);
   CATBody_var spBodyOfIntersect=NULL_var;  
   spBodyOfIntersect=GetBodyFromFeature(spIntersect);
  if(NULL_var!=spBodyOfIntersect)
  {
   spBodyOfIntersect->GetAllCells(LISTCell, 1);  
   for(int index = 1; index <= LISTCell.Size(); index++ )
   {   
    CATCell_var spCell=LISTCell[index];  
     if(spCell!=NULL_var)
     {
    //  cout<<endl<<"spCell!=NULL_var"<<endl;
    CATEdge_var spEdge=spCell;  
    if(spEdge!=NULL_var)
    {
     //cout<<endl<<"spEdge!=NULL_var"<<endl;
     CATEdgeCurve* pEdgeCurve=spEdge->GetCurve();
     CATCurve* pCurve=pEdgeCurve->GetRefCurve();
      if(pCurve!=NULL)
      {
      // cout<<endl<<"pCurve!=NULL"<<endl;
      CATCurve_var spTheCurve=pCurve;    
      if(NULL_var!=spTheCurve)  
      {
        //cout<<endl<<"NULL_var!=spTheCurve in Findcurve()"<<endl;
      List.Append(spTheCurve);
       spCell=NULL_var;
       spEdge=NULL_var;
       pEdgeCurve=NULL;
       pCurve=NULL;
       spTheCurve = NULL_var;  
      }   
      }
            
    }
     }
        
   }//for end  
      
  }
  spBodyOfIntersect=NULL_var;     
  }
  LISTCell.RemoveAll();
}
6
发表于 2005-8-16 14:13:11 | 只看该作者
高手来看看吧
7
发表于 2005-8-16 15:53:49 | 只看该作者
代码不全,这些看不出问题
  
CATBody_var spBodyOfIntersect=NULL_var;  
spBodyOfIntersect=GetBodyFromFeature(spIntersect);  
  
建议检查看 spBodyOfIntersect  和  spIntersect
8
发表于 2005-8-16 16:25:29 | 只看该作者
你要用CATEdge的求长度函数,不能用curve,要不把curve弄出来,出错而且麻烦
9
发表于 2005-8-16 17:32:41 | 只看该作者
wndcool wrote:
你要用CATEdge的求长度函数,不能用curve,要不把curve弄出来,出错而且麻烦

  
就是感觉CATEdgeCurve的GetRefCurve()用的可能有问题,不知道什么是reference curve
10
发表于 2005-8-16 18:02:52 | 只看该作者
对,用了CATEdge的CalcLength();
长度对了,可是上面的用法为什么不对呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

GMT+8, 2024-12-24 07:16 , Processed in 0.026018 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

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