找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3041|回复: 3

[讨论]:AcGeInterval类的用途

[复制链接]
发表于 2009-2-9 10:57:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
我看了所有关于这个AcGeInterval类的贴子,也做了大量的代码测试怎么越来越感觉AcGeInterval类仅仅只是进行了简单的
数据比较来做并~合~差运算,它只是对重合的AcGeCurve对象进行的运算吗,如果是那么这个类的存在就没那么重要了。

论坛上的以前关于这个类的讨论都是无果而终的.

热烈期待晓东能够跟贴
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2009-2-10 12:39:15 | 显示全部楼层
不太常用。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2014-6-9 16:54:01 | 显示全部楼层
本帖最后由 牢固 于 2014-6-9 16:57 编辑

AcGeInterval类难道是AutoCAD公司和我们开了一个玩笑?
  1. static void XLRXAPI_IntVal(void)
  2. {
  3.   Acad::ErrorStatus es;
  4.   ads_name e1,e2;
  5.   ads_point p1,p2;
  6.   AcDbEntity *pEnt1,*pEnt2;
  7.   AcDbObjectId Id1,Id2;
  8.   AcDbCurve *pDbCurve1,*pDbCurve2;
  9.   AcGeCurve2d *pGeCurve1,*pGeCurve2;
  10.   AcGeInterval GeIntVal1,GeIntVal2,GeIntVal3;
  11.   double lower1,upper1,lower2,upper2,lower3,upper3;
  12.   int rc = acedEntSel(_T("\n第一条曲线:"),e1,p1);
  13.   if (rc != RTNORM)
  14.   {
  15.     return;
  16.   }
  17.   acdbGetObjectId(Id1,e1);
  18.   es = acdbOpenObject(pEnt1,Id1,AcDb::kForRead);
  19.   if (es != Acad::eOk)
  20.   {
  21.     return;
  22.   }
  23.   if (!pEnt1->isKindOf(AcDbCurve::desc()))
  24.   {
  25.     pEnt1->close();
  26.     return;
  27.   }
  28.   pDbCurve1 = AcDbCurve::cast(pEnt1);
  29.   rc = acedEntSel(_T("\n第二条曲线:"),e2,p2);
  30.   if (rc != RTNORM)
  31.   {
  32.     return;
  33.   }
  34.   acdbGetObjectId(Id2,e2);
  35.   es = acdbOpenObject(pEnt2,Id2,AcDb::kForRead);
  36.   if (es != Acad::eOk)
  37.   {
  38.     pEnt1->close();
  39.     return;
  40.   }
  41.   if (!pEnt2->isKindOf(AcDbCurve::desc()))
  42.   {
  43.     pEnt1->close();
  44.     pEnt2->close();
  45.     return;
  46.   }
  47.   pDbCurve2 = AcDbCurve::cast(pEnt2);
  48.   es = CCurve::AcDbCurveToAcGeCurve(pGeCurve1,pDbCurve1);
  49.   if (es != Acad::eOk)
  50.   {
  51.     pEnt1->close();
  52.     pEnt2->close();
  53.     return;
  54.   }
  55.   CCurve::AcDbCurveToAcGeCurve(pGeCurve2,pDbCurve2);
  56.   if (es != Acad::eOk)
  57.   {
  58.     delete pGeCurve1;
  59.     pEnt1->close();
  60.     pEnt2->close();
  61.     return;
  62.   }
  63.   AcDbCurve *pC1,*pC2;
  64.   if (Acad::eOk == CCurve::AcGeCurveToAcDbCurve(pC1,pGeCurve1))
  65.   {
  66.     pC1->setColorIndex(1);
  67.     CCreateEnt::PostToSpace(pC1);
  68.   }
  69.   if (Acad::eOk == CCurve::AcGeCurveToAcDbCurve(pC2,pGeCurve2)){
  70.     pC2->setColorIndex(2);
  71.     CCreateEnt::PostToSpace(pC2);
  72.   }
  73.   pGeCurve1->getInterval(GeIntVal1);
  74.   GeIntVal1.getBounds(lower1,upper1);
  75.   pGeCurve2->getInterval(GeIntVal2);
  76.   GeIntVal2.getBounds(lower2,upper2);
  77.   acutPrintf(_T("\n曲线1:lower = %0.3f, upper = %0.3f length = %0.3f 曲线2:lower = %0.3f, upper = %0.3f length = %0.3f "),
  78.     lower1,upper1,GeIntVal1.length(),lower2,upper2,GeIntVal2.length());
  79.   if (GeIntVal1.isDisjoint(GeIntVal2))
  80.   {
  81.     acutPrintf(_T("\n两曲线不相交!"));
  82.     pEnt1->close();
  83.     pEnt2->close();
  84.     delete pGeCurve1;
  85.     delete pGeCurve2;
  86.     return;
  87.   }
  88.   if (GeIntVal1.intersectWith(GeIntVal2,GeIntVal3))
  89.   {
  90.     GeIntVal3.getBounds(lower3,upper3);
  91.     acutPrintf(_T("\n相交后曲线:lower = %0.3f, upper = %0.3f  length = %0.3f "),GeIntVal3.lowerBound(),GeIntVal3.upperBound(),GeIntVal3.length());
  92.   }
  93.   
  94.   pEnt1->close();
  95.   pEnt2->close();
  96.   delete pGeCurve1;
  97.   delete pGeCurve2;
  98.   return;
  99. }


命令: intval
第一条曲线:
第二条曲线:
曲线1:lower = 0.000, upper = 1321.959 length = 1321.959 曲线2:lower = 0.000, upper
= 1042.697 length = 1042.697
相交后曲线:lower = 0.000, upper = 1042.697  length = 1042.697
命令:
没有效果!

点评

解决了吗?应该如何使用?  详情 回复 发表于 2021-7-29 10:18
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 112个

财富等级: 日进斗金

发表于 2021-7-29 10:18:29 | 显示全部楼层
牢固 发表于 2014-6-9 16:54
AcGeInterval类难道是AutoCAD公司和我们开了一个玩笑?

解决了吗?应该如何使用?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-23 01:48 , Processed in 0.416418 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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