iCAx开思工具箱

标题: CAA中创建交线的问题 [打印本页]

作者: cupcake    时间: 2005-5-29 16:09
标题: CAA中创建交线的问题
各位高手:
      我用CATIGSMFactory::CreateIntersect()创建一个投影曲线和另外一个曲线的11个点处的法线的交点,但是由于某些法线和投影曲线不一定相交(虽然它们在同一个平面上,可是投影曲线不够长),我在程序中用了一个for循环来完成相交:
for(int j=0;j<=10;j++)
{
//create intersection of lines and curve  
    CATISpecObject_var spInterectionOfLineAndCurve=NULL_var;
    ListForIntersect.Append(spProjection);
    ListForIntersect.Append(spLineNormalToCurve);
    spInterectionOfLineAndCurve=CAAGsiObjTool.CreateIntersect(ListForIntersect,FALSE);
}
因此这11个点处肯定有几个地方spProjection和spLineNormalToCurve没有交点,我想在这里怎么处理这种情况,因为不处理的话就会出现更新错误,如下图
作者: cms_nuaa    时间: 2005-5-29 18:35
判断得到的spInterectionOfLineAndCurve是否为空,若为空则删除节点。
我的想法,未验证,呵呵。
作者: acoka    时间: 2005-5-29 20:37
你可以对你建的intersectionFeature进行更新,用CATTry截获错误信息
作者: cupcake    时间: 2005-5-29 22:16
好的,谢谢两位,我试试看。
:)
作者: cupcake    时间: 2005-5-30 11:41
截获了后怎么处理啊?是不是要删除这个节点,怎样删除一个节点呢?
作者: cupcake    时间: 2005-5-30 12:06
我试过了,在没有交点的地方(图中有感叹号的地方),spInterectionOfLineAndCurve也不是空的(!=NULL_var),用异常的方法acoka兄能不能说在具体些?
CATTry()
{
spInterectionOfLineAndCurve->UpDate();
然后呢?
}
作者: cupcake    时间: 2005-5-30 13:41
现在知道了怎么删除一个点,可是还是不知道怎么判断那些交点有问题,在程序中判断spInterectionOfLineAndCurve是否为空的方法好像行不通,用spInterectionOfLineAndCurve->Update();直接放在程序里不行,出错,提示更新错误,好像只有用异常处理了。
作者: acoka    时间: 2005-5-30 15:21
方法1:
        CATCatch( CATError, pError ){
          if(!!pFirstError){
            更新出错;
        }
        CATEndTry;
  
方法2:
更新后求spInterectionOfLineAndCurve的body,
  
方法3:
更新后看 spInterectionOfLineAndCurve->IsUpToDate()
作者: cupcake    时间: 2005-5-31 19:54
对于方法1,是不是当出错的时候给用户一个提示信息,然后程序就中止了?
方法2没有理解。
方法3能否说具体些,能不能做到cms_nuaa 说的把有问题的节点删除掉?那些节点不是NULL_var。
作者: acoka    时间: 2005-5-31 23:14
CATCatch( CATError, pError ){
          if(!!pError){
            pError->Release();
            pError = NULL;
            CATError::ClearLastError();
            这里删除点;
        }
        CATEndTry;  
  
2求Body,如果没有交差,Body应该为NULL,
  
3不推荐使用,因为它只能告诉你这个feature还没有更新而已,
作者: cupcake    时间: 2005-6-1 13:52
谢谢acoka兄,用了方法1,证明行得通。
:)




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3