Files
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

115 lines
1.9 KiB
C++

//-----------------------------------------------------------------------------+
// Copyright (C), 1998-2007, Beijing Tangent Software Co. Ltd.
// = FileName : TAcDbBlockTable 类
// = Version : ver2.0
// = Author : wlw
// = CreateDate : 2002-09-09
// = Description: TAcDbBlockTable 定义
// = Maintainers:
//
//-----------------------------------------------------------------------------+
#include "StdAfx.h"
#include "TAcDbBlockTable.h"
TAcDbBlockTable::TAcDbBlockTable(const TCHAR *blkName)
: TAcDbSymbolTable(_T("BLOCK"), blkName)
{
if (TAcDbSymbolTable::operator !())
{
return;
}
GetData(10, base);
GetData(-2, ent);
}
TAcDbBlockTable::~TAcDbBlockTable()
{
}
int TAcDbBlockTable::EntNext()
{
ads_name e;
ent>e;
ent.FreeGroups();
if (ads_entnext(e, ent) != RTNORM)
{
ent.name[0] = ent.name[1] = 0L;
return RTERROR;
}
return RTNORM;
}
int TAcDbBlockTable::GetExtend(ads_point low, ads_point up, ads_matrix tranMat)
{
if (!(*this))
{
return RTERROR;
}
TADSGePoint3d lowPt, upPt;
int rc = ent.GetExtend(lowPt, upPt, tranMat);
if (rc == RTERROR)
{
return RTERROR;
}
int findExtend = rc == RTNORM ? 1 : 0;
TEntitySet subEnt = ent;
while(1)
{
ads_name entNext;
if (ads_entnext(subEnt, entNext) != RTNORM)
{
break;
}
subEnt = entNext;
subEnt.FreeGroups();
TCString eType;
subEnt.GetData(0, eType);
if (subEnt.Is(_T("ENDBLK")))
{
break;
}
TADSGePoint3d pt1, pt2;
rc = subEnt.GetExtend(pt1, pt2, tranMat);
if (rc == RTERROR)
{
return RTERROR;
}
else if (rc == RTNONE)
{
continue;
}
if (!findExtend)
{
lowPt = pt1;
upPt = pt2;
findExtend = 1;
}
else
{
lowPt = Min(lowPt, pt1);
upPt = Max(upPt, pt2);
}
}
if (findExtend)
{
lowPt > low;
upPt > up;
return RTNORM;
}
return RTNONE;
}