乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 49|回复: 2

如何判断块表中的实体在一个矩形范围内?

[复制链接]

3

主题

12

帖子

1

银币

初来乍到

Rank: 1

铜币
24
发表于 2002-11-21 20:08:00 | 显示全部楼层 |阅读模式
如题,有没有好的办法,遍历块表中的所有实体对象,将处于某一矩形的所有实体做成外部块。
该怎么实现?
回复

使用道具 举报

14

主题

230

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
286
发表于 2002-11-22 11:35:00 | 显示全部楼层
该函数的完整语法:
virtual Acad::ErrorStatus AcDbEntity::getGeomExtents(AcDbExtents& extents) const;
其中AcDbExtents是ARX为该函数专门设计的类,具体使用在以下代码中介绍。
如果,你要选择的实体是完全在规定的矩形区域内部,可以参考以下代码示例(你提出的另一个问题,若不需要与用户交互,是无须使用AcAp类库,你说的方法应该可行。)
AcDbEntity *pEnt;
AcDbExtents *extents;
AcGePoint3d min,max;  //这两个参考用于从extents指针中取出内容
for(pBlkTblItr->start();!pBlkTblItr->done();pBlkTblItr->step())
//pBlkTblItr是你使用的块表记录浏览器指针
{
  pBlkTblItr->getEntity(pEnt,AcDb::kForRead);
  if(Acad::eInvalidExtents!=pEnt->getGeomExtents(extents))   /*getGeomExtents()函数在AcDbEntity层次不返回extents对象,因此,若你使用了自定义实体,且在类派生中未重载该函数,将不能得到extents指针,函数返回Acad::eInvalidExtents。*/
    {
       min=extents->minPoint();
       max=extents->maxPoint();
     }
     ....../*在这添加代码,实体pEnt处于以min为左下角,max为右上角的矩形区域中,将此矩形与你规定的矩形进行简单比较,就可判断实体是否满足你的要求,并作进一步处理。若你要选择的实体是类似CAD的交叉窗口选择,以上代码会有缺陷,曲线可能不与规定的矩形区域相交但它的extents区域可能满足条件,此时要利用boudingBoxIntersectWith()函数计算矩形区域与实体的交点来判断。*/
}
回复

使用道具 举报

3

主题

12

帖子

1

银币

初来乍到

Rank: 1

铜币
24
发表于 2002-11-22 19:12:00 | 显示全部楼层
谢谢leayeafu,在你详细的指导下,终于完成了基本功能了,只是用acdbCurDwg()->insert(...);方法插入的图形怎么不是图块?如何把它们转换为图块呢,咳,ARX,要学的东西太多了。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 07:06 , Processed in 0.145143 second(s), 58 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表