- 积分
- 937
- 明经币
- 个
- 注册时间
- 2004-12-30
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
本帖最后由 作者 于 2005-4-8 12:03:49 编辑
我想为各个层添加扩展字典,来记录层上的一些信息,下面是我的函数(我把层名作为字典的名字) CreateDictionary() { AcDbObjectId pCurLayerId; pCurLayerId=acdbHostApplicationServices()->workingDatabase()->clayer(); AcDbLayerTableRecord* pTRec; acdbOpenObject(pTRec,pCurLayerId,AcDb::kForWrite); pTRec->createExtensionDictionary(); AcDbObjectId dictObjId,xrecObjId; AcDbXrecord *pXrec = new AcDbXrecord; AcDbDictionary* pDict; dictObjId=pTRec->extensionDictionary(); pTRec->close(); acdbOpenObject(pDict,dictObjId,AcDb::kForWrite); pDict->setAt(pCLname,pXrec,xrecObjId); pDict->close(); resbuf* head; head=acutBuildList(AcDb::kDxfText,name,AcDb::kDxfReal,area,AcDb::kDxfReal, RLength,AcDb::kDxfReal,RWidth,AcDb::kDxfInt16,num,RTNONE); pXrec->setFromRbChain(*head); pXrec->close(); acutRelRb(head); }//其中name、area、length、Width、num分别为CString double double double int型 为了验证扩展字典的正确性,我编写了下面的函数进行验证 ReadDictionary(CString name) { AcDbLayerTable *pLayer; AcDbLayerTableRecord *pRec; AcDbObjectId dictObjId; AcDbDictionary *pDict; AcDbXrecord *pXrec;
acdbHostApplicationServices()->workingDatabase() ->getSymbolTable(pLayer,AcDb::kForRead); pLayer->getAt(name,pRec,AcDb::kForRead); pLayer->close(); dictObjId=pRec->extensionDictionary(); pRec->close(); acdbOpenObject(pDict,dictObjId,AcDb::kForRead); pDict->getAt(name,(AcDbObject*&)pXrec,AcDb::kForRead); pDict->close(); struct resbuf* pRbList; pXrec->rbChain(&pRbList); pXrec->close(); pRbList->rbnext;//从第二个数据开始输出
acedPrintf("area=%f\n",pRbList->resval.rreal); pRbList->rbnext; acedPrintf("length=%f\n",pRbList->resval.rreal); pRbList->rbnext; acedPrintf("width=%f\n",pRbList->resval.rreal); pRbList->rbnext; acedPrintf("num=%f\n",pRbList->resval.rint); acutRelRb(pRbList); } 编译运行都没有问题,可就是得不到我输入的结果,请问各位高手,我的程序哪里有问题;还是不可以为层添加扩展词典
|
|