|
发表于 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()函数计算矩形区域与实体的交点来判断。*/
} |
|