找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1401|回复: 8

[ARX函数]:有没有判断一个闭合曲线在另一个闭合曲线内部的函数?

[复制链接]
发表于 2002-11-20 15:01:34 | 显示全部楼层 |阅读模式

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

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

×
一个闭合曲线内部还有一个闭合曲线,那么有没有这样一个ARX函数,能够判断这个闭合曲线包含在另一个闭合曲线内部?
形如:pCur1.is包含(pCur2);
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2002-11-21 14:25:17 | 显示全部楼层
可以自己写,参考周德培的<<计算几何--算法分析与设计>>,就是其中谈到如何判断的一系列点在一个闭合多边形内部的算法,不过如果你是处理一幅包含很多线条的图形,最好还是进行拓扑处理,可以参考GIS方面的书籍
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-11-21 15:20:03 | 显示全部楼层
自己写比较简单,我想问问有没有现成的ARX提供的函数
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-11-21 16:10:31 | 显示全部楼层



先把你的闭合曲线转成 Region 吧

  1. // is a region in an other?
  2. //算法:判断rgn1与rgn2是否相交,若相交且交集rgn的面积等于rgn1的面积, 那么rgn1在rgn2内
  3. BOOL RgnInRgn(const AcDbRegion* pRegion1,const AcDbRegion* pRegion2)
  4. {
  5.     if (pRegion1==NULL||pRegion2==NULL) return FALSE;
  6.    
  7.     AcDbRegion *pNewRegion1=new AcDbRegion();
  8.     AcDbRegion *pNewRegion2=new AcDbRegion();
  9.     if ((pNewRegion1->copyFrom(pRegion1)!= Acad::eOk)||
  10.         (pNewRegion2->copyFrom(pRegion2)!= Acad::eOk)){
  11.         delete pNewRegion1;
  12.         delete pNewRegion2;
  13.         return FALSE;
  14.     }
  15.    
  16.     BOOL bResult=FALSE;
  17.     if(pNewRegion1->booleanOper(AcDb::kBoolIntersect, pNewRegion2) == Acad::eOk){
  18.         if ((pNewRegion2->isNull()==Adesk::kTrue)&&(pNewRegion1->isNull()!=Adesk::kTrue)){
  19.             double area1,area0;
  20.             pNewRegion1->getArea(area1);
  21.             pRegion1->getArea(area0);
  22.             if (area1==area0)
  23.                 bResult=TRUE;
  24.         }
  25.     }
  26.     delete pNewRegion1;
  27.     delete pNewRegion2;
  28.    
  29.     return bResult;
  30.    
  31. }
复制代码


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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-11-21 16:24:57 | 显示全部楼层
ARX 提供的是底层的函数,具体应用都需要使用这些SDK提供的各类的方法,组合编出需要的程序代码。

你这个问题,可以首先用:

1、从DB实体,得到几何实体模型AcGeCurve3d

2、用AcGeCurve3d::getSamplePoints 得到满足精度的样本点

3、判断这些点是否都在另外一个曲线内,是,即曲线1在另外曲线内。

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-11-21 16:30:24 | 显示全部楼层

Re: 有

最初由 rave 发布
[B]有

先把你的闭合曲线转成 Region 吧

[code] // is a region in an other?
BOOL RgnInRgn(const AcDbRegion* pRegion1,const AcDbRegion* pRegion2)
{
    if (pRegion1==NULL||pRegion2==NULL) return FALS... [/B]


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

使用道具 举报

发表于 2002-11-21 22:38:46 | 显示全部楼层

Re: Re: 有

最初由 XDSoft 发布
[RAVE,是否用REGION方法写了判断一个点是否在曲线上的代码?[/B]

是点在Region内吧, 我没写

我用了brep,  HoboSoft朋友的方法,参见http://www.xdcad.net/forum/showt ... ostid=6375#post6375
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-11-22 11:10:45 | 显示全部楼层
还得将ARX的帮助详细地看一骗,单靠算法来写程序,虽然完全在自己的控制下,但工作量比较大,特别手上有没有这些算法的资料,靠自己想出来的算法经常有缺陷.只是E文学得不太好,看起来较吃力,如果大家能工齐心协力将ARX帮助都翻译成中文,并加上自己的心得,那就再好不过了.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-11-22 14:04:07 | 显示全部楼层
我感觉按以下方法处理就可以
1、判断两个闭合曲线不相交
2、确定一个曲线上的一点在另一个曲线内部(或者Region内部)
如果上面两个条件满足,就说明这个曲线包含在另外一个闭合曲线内部
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-28 11:17 , Processed in 0.265371 second(s), 45 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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