AutoCAD 二次开发:获取填充边界
bool CAcUiSelDialog::OpenDwgFile(const ACHAR* fileName)
{
Acad::ErrorStatus es;
AcGeVector3d normal;
bool bAssociative;
AcDbHatch::HatchPatternType patternType;
const ACHAR *patternName;
AcDbHatch::HatchStyle hatchStyle;
AcDbDatabase *pDb = new AcDbDatabase(Adesk::kFalse);
es=pDb->readDwgFile(_T("D:\\***.dwg"));
if (Acad::eOk!=es)
{
acedAlert(_T("临时数据库打开失败"));
delete pDb;
return false;
}
AcDbBlockTable *pBlkTbl;
es=pDb->getSymbolTable(pBlkTbl, AcDb::kForRead);
if (Acad::eOk!=es)
{
acedAlert(_T("获取块表错误!"));
delete pDb;
pBlkTbl->close();
return false;
}
AcDbBlockTableRecord *pBlkTblRcd;
es=pBlkTbl->getAt(ACDB_MODEL_SPACE, pBlkTblRcd,AcDb::kForRead);
if (Acad::eOk!=es)
{
delete pDb;
pBlkTbl->close();
pBlkTblRcd->close();
acedAlert(_T("获取块表记录错误!"));
return false;
}
pBlkTbl->close();
CString hClass;
AcDbBlockTableRecordIterator *pBlkTblRcdItr;
pBlkTblRcd->newIterator(pBlkTblRcdItr);
AcGePoint3d *pPt3D = new AcGePoint3d();
if (NULL == pPt3D)
{
pBlkTblRcd->close();
delete pDb;
delete pBlkTblRcdItr;
return false;
}
for (pBlkTblRcdItr