- UID
- 25991
- 积分
- 0
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2003-1-16
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2003-1-18 15:00:18
|
显示全部楼层
我定义了一个类Select中的成员函数:
void Select::SelectObject(CArray <AcDbEntity*,AcDbEntity*&> ObjectCArray)
{
long nNewSize = 0,nGrowBy = -1;
char *fname = NULL;
struct resbuf *rb;
//请选择要打开的文件名
rb = acutNewRb(RTSTR);
int stat = acedGetFileD("请选择要打开的文件名", NULL,"dwg", 0, rb);
fname = (char*)acad_malloc(strlen(rb->resval.rstring) + 1);
strcpy(fname, rb->resval.rstring);
acutRelRb(rb);
AcDbDatabase *pDb = new AcDbDatabase(Adesk::kFalse);
pDb->readDwgFile(fname);
//建立存储选择体数组
ObjectCArray.SetSize(nNewSize,nGrowBy);
//寻找选择体
AcDbBlockTable *pBlkTbl;
pDb->getSymbolTable(pBlkTbl, AcDb::kForRead);
AcDbBlockTableRecord *pBlkTblRcd;
pBlkTbl->getAt(ACDB_MODEL_SPACE, pBlkTblRcd,AcDb::kForRead);
pBlkTbl->close();
AcDbBlockTableRecordIterator *pBlkTblRcdItr;
pBlkTblRcd->newIterator(pBlkTblRcdItr);
AcDbEntity *pEnt;
for (pBlkTblRcdItr->start(); !pBlkTblRcdItr->done();
pBlkTblRcdItr->step())//寻找AcDbEntity从Table头一步一步地查到Table尾
{
pBlkTblRcdItr->getEntity(pEnt,
AcDb::kForRead);
//存储选择体入数组
ObjectCArray.Add(pEnt);
pEnt->close();
}
pBlkTblRcd->close();
delete pBlkTblRcdItr;
delete pDb;
}
然后再在conmmand文件中调用:
{
long nNewSize = 0,nGrowBy = -1;
CArray <AcDbEntity*,AcDbEntity*&> ObjectCArray;
ObjectCArray.SetSize(nNewSize,nGrowBy);
Select p;
p.SelectObject(ObjectCArray);
}
结果出现error C2664: 'SelectObject' : cannot convert parameter 1 from 'class CArray<class AcDbEntity *,class AcDbEntity * &>' to 'class CArray<class AcDbEntity *,class AcDbEntity * &>'的错误 |
|