明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 261|回复: 0

绘制曲线两种矩形包围盒(aabb, obb)

  [复制链接]
发表于 2025-5-23 14:13:48 | 显示全部楼层 |阅读模式


  1.   static void TaoDemoGetMinRectangle()
  2.   {
  3.     AcDbObjectIdArray polyIdArray;
  4.     if(CPromptSelectEx::PromptSelectEnts(L"\n请拾取曲线:", AcDbCurve::desc(), polyIdArray, true))
  5.     {
  6.       AcDbCurve* pCurve = NULL;
  7.       AcGeCurve3d * pGeCurve = NULL;
  8.       AcGePoint3d base;
  9.       AcGeVector3d dir1, dir2, dir3;
  10.       AcGePoint3dArray ptArray;
  11.       ptArray.setLogicalLength(4);
  12.       for (const auto& id : polyIdArray)
  13.       {
  14.         if (Acad::eOk == acdbOpenObject(pCurve, id, AcDb::kForRead))
  15.         {
  16.          
  17.           if(Acad::eOk == pCurve->getAcGeCurve(pGeCurve))
  18.           {
  19.             auto obb = pGeCurve->boundBlock();

  20.             obb.get(base, dir1, dir2, dir3);
  21.             ptArray[0] = base;
  22.             ptArray[1] = base + dir1;
  23.             ptArray[2] = base + dir2 + dir1;
  24.             ptArray[3] = base + dir2;
  25.             CDbPolylineEx::Add3dPolyline(ptArray, AcDb::k3dSimplePoly, true, 1);

  26.             auto aabb = pGeCurve->orthoBoundBlock();

  27.             aabb.get(base, dir1, dir2, dir3);
  28.             ptArray[0] = base;
  29.             ptArray[1] = base + dir1;
  30.             ptArray[2] = base + dir2 + dir1;
  31.             ptArray[3] = base + dir2;
  32.             CDbPolylineEx::Add3dPolyline(ptArray, AcDb::k3dSimplePoly, true, 2);

  33.           }

  34.           pCurve->close();
  35.         }
  36.       }
  37.     }
  38.   }

回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-31 01:28 , Processed in 0.192637 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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