找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1702|回复: 3

[求助] 哪位高手能帮我解析一下下面的代码?

[复制链接]
发表于 2013-9-28 19:32:07 | 显示全部楼层 |阅读模式

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

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

×
[table=95%]
区域在区域内

// Function name : RgnInRgn
// Description : is Region1 in Region2?
// Return type : bool
// Argument : const AcDbRegion* pRegion1
// Argument : const AcDbRegion* pRegion2
bool RgnInRgn(const AcDbRegion* pRegion1,const AcDbRegion* pRegion2)
{
if (pRegion1==NULL||pRegion2==NULL) return false;

AcDbObjectPointer< AcDbRegion > spRegion1;
AcDbObjectPointer< AcDbRegion > spRegion2;
if (spRegion1.create()!=Acad::eOk)
{
  acdbFail("\n内存不足");
  return false;
}
if (spRegion2.create()!=Acad::eOk)
{
  acdbFail("\n内存不足");
  return false;
}


if ((spRegion1->copyFrom(pRegion1)!= Acad::eOk)||
  (spRegion2->copyFrom(pRegion2)!= Acad::eOk))
{
  acdbFail("\n无法复制对象");
  return false;
}

bool bResult=false;
if(spRegion1->booleanOper(AcDb::kBoolIntersect, spRegion2.object()) == Acad::eOk)
{
  if ((spRegion2->isNull()==Adesk::kTrue)&&(spRegion1->isNull()!=Adesk::kTrue)){
   double area1,area0;
   spRegion1->getArea(area1);
   pRegion1->getArea(area0);

   if ((area0 - area1) < AcGeContext::gTol.equalPoint())
     bResult=true;
  }
}

return bResult;
}
[/td][/tr]
[/table]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2013-9-28 19:34:33 | 显示全部楼层
bool RgnInRgn(const AcDbRegion* pRegion1,const AcDbRegion* pRegion2)
        {
                if (pRegion1==NULL||pRegion2==NULL) return false;
               
                AcDbObjectPointer <AcDbRegion> spRegion1;
                AcDbObjectPointer<AcDbRegion> spRegion2;
                if (spRegion1.create()!=Acad::eOk)
                {
                        acdbFail("\n内存不足");
                        return false;
                }
                if (spRegion2.create()!=Acad::eOk)
                {
                        acdbFail("\n内存不足");
                        return false;
                }
               
               
                if ((spRegion1->copyFrom(pRegion1)!= Acad::eOk)||
                        (spRegion2->copyFrom(pRegion2)!= Acad::eOk))
                {
                        acdbFail("\n无法复制对象");
                        return false;
                }
               
                bool bResult=false;
                if(spRegion1->booleanOper(AcDb::kBoolIntersect, spRegion2.object()) == Acad::eOk)
                {
                        if ((spRegion2->isNull()==Adesk::kTrue)&&(spRegion1->isNull()!=Adesk::kTrue)){
                                double area1,area0;
                                spRegion1->getArea(area1);
                                pRegion1->getArea(area0);
                               
                                if ((area0 - area1) < AcGeContext::gTol.equalPoint())
                                        bResult=true;
                        }
                }
               
                return bResult;
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-9-28 20:26:15 来自手机 | 显示全部楼层
面域和面域关系,两者求交集, 交集面积为 0,两者相离,交集面积小于原面积和,相交;交集面积等于面域2面积,相包

点评

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

使用道具 举报

 楼主| 发表于 2013-9-28 22:08:23 | 显示全部楼层
Free-Lancer 发表于 2013-9-28 20:26
面域和面域关系,两者求交集, 交集面积为 0,两者相离,交集面积小于原面积和,相交;交集面积等于面域2面 ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 02:56 , Processed in 0.242940 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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