天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 197|回复: 0

[每日一码] 求Line和Su**ce的交点

[复制链接]
  • TA的每日心情
    开心
    9 小时前
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    113

    主题

    11

    回帖

    1369

    积分

    管理员

    积分
    1369
    QQ
    发表于 2024-2-23 22:42:17 | 显示全部楼层 |阅读模式
    下面是示例代码,求端点是(0 0 0) (0 0 1)的LINE和Su**ce的交点。

    注意:include和lib文件在  ObjectARX SDK\\utils\brep 目录下。
    1. static AcGePoint3dArray Intersect(AcDbSu**ce* pSu**ce,AcGeLine3d line)
    2. {
    3.     AcGePoint3dArray returnPtArray;
    4.   AcDbBody* pBody = new AcDbBody();
    5.   // 2013
    6.   // Acad::ErrorStatus es = pBody->setASMBody(pSu**ce->ASMBodyCopy());
    7.   //before 20123
    8.    Acad::ErrorStatus es = pBody->setBody(pSu**ce->body());
    9.    //build AcBrBrep
    10.    AcBrBrep* pBrep = new AcBrBrep();
    11.    //
    12.   if(AcBr::eOk == pBrep->set(*pBody))
    13.   {
    14.     AcBrBrepFaceTraverser* pFaceTrav = new AcBrBrepFaceTraverser;
    15.     if(AcBr::eOk == pFaceTrav->setBrep(*pBrep))
    16.    {
    17.        for(pFaceTrav->restart();!pFaceTrav->done();pFaceTrav->next())
    18.        {
    19.         AcB**ce face;
    20.         if(AcBr::eOk == pFaceTrav->getFace(face))
    21.         {
    22.           double area = 0.0f;
    23.          face.getSu**ceArea(area);
    24.          acutPrintf(L"\nSu**ce Area: %f", area);
    25.         //*****whole su**ce of the Brep face******        
    26.         //AcGeNurbSu**ce nurbSu**ce;
    27.         //face.getSu**ceAsNurb(nurbSu**ce);
    28.         //AcGeCurveSurfInt curveSI;
    29.         ////input the curve and line
    30.         //curveSI.set(line,nurbSu**ce);
    31.         ////get the count of intersect points
    32.         //int count = curveSI.numIntPoints(err采用1);
    33.         //    if(err采用1 == AcGe::kXXOk && count >0 )
    34.         //    {      
    35.         //        AcGeIntersectError err采用2;
    36.         //        for(int index = 0 ;index < count; index ++)
    37.         //        {
    38.         //           AcGePoint3d pt =
    39.         //             curveSI.intPoint(index,err采用2);      
    40.         //            returnPtArray.append(pt);
    41.         //        }      
    42.         //      
    43.         //    }
    44.         //**********
    45.         //****real su**ce of the orignal AcDbSu**ce      
    46.           AcGeExternalBoundedSu**ce** nurbs = NULL;
    47.           Adesk::UInt32 numNurbs = 0;
    48.           face.getSu**ceAsTrimmedNurbs(numNurbs,nurbs);
    49.           //*****
    50.         for (Adesk::UInt32 i = 0; i < numNurbs; i++)
    51.         {
    52.             AcGeCurveSurfInt curveSI;
    53.             AcGeIntersectError  err采用1 = AcGe::kXXOk;         
    54.              //input the curve and line
    55.             curveSI.set(line,*nurbs<i>);
    56.             //get the count of intersect points
    57.             int count = curveSI.numIntPoints(err采用1);
    58.             if(err采用1 == AcGe::kXXOk && count >0 )
    59.             {
    60.                 AcGeIntersectError err采用2;
    61.                 for(int index = 0 ;index < count; index ++)
    62.                 {
    63.                     AcGePoint3d pt =
    64.                         curveSI.intPoint(index,err采用2);      
    65.                     returnPtArray.append(pt);
    66.                 }      
    67.             }
    68.             delete nurbs<i>;
    69.         }
    70.         // your responsibility to delete the
    71.        // array of su**ces
    72.         delete[] nurbs;
    73.       }
    74.     }
    75.   }
    76.   delete pFaceTrav;
    77.   }
    78.   delete pBrep;
    79.   return returnPtArray;
    80. }
    复制代码

     

     

     

     

    [每日一码] 求Line和Su**ce的交点
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

    GMT+8, 2024-11-3 21:20 , Processed in 0.190385 second(s), 29 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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