- 积分
- 1665
- 明经币
- 个
- 注册时间
- 2003-3-31
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
楼主 |
发表于 2005-3-29 15:16:00
|
显示全部楼层
代码如下
//删掉扩展字典里面的扩展记录 ads_name ent; ads_point pt; AcDbObject *pObj; AcDbObjectId Id,dictObjId;
if(acedEntSel("\n选择一个实体:",ent,pt)!=RTNORM) return;
acdbGetObjectId(Id,ent); acdbOpenAcDbObject(pObj,Id,AcDb::kForRead); dictObjId=pObj->extensionDictionary(); if(AcDbObjectId::kNull==dictObjId) { acedGetAcadDwgView()->MessageBox("该实体没有扩展字典","错误提示",MB_ICONERROR); pObj->close(); return; }
AcDbDictionary *pDict; acdbOpenAcDbObject((AcDbObject*&)pDict,dictObjId,AcDb::kForRead);
AcDbDictionaryIterator *Iter=pDict->newIterator(); int n=0; for(;!Iter->done();Iter->next()) { CString sName=Iter->name(); acutPrintf("%s ",sName); if(n%4==0) acutPrintf("\n"); n++; } delete Iter; pDict->close(); //关闭一次再打开 //输入关键字索引 然后删掉对应的扩展记 char *result=new char[]; stat=acedGetString(0,"\n选择要删除关键字ESC-退出)",result); if(stat==RTCAN||stat!=RTNORM) { pObj->close(); break; } //acutPrintf("输入的值为:%s\n",result); pObj->upgradeOpen(); AcDbXrecord *pXrec;
pDIct->upgradeOpen(); if(Acad::eOk!=pDict->getAt(result,(AcDbObject * &)pXrec,AcDb::kForWrite)) { acutPrintf("没有找到\n"); pObj->close(); return; } else {
pXrec->erase(); pXrec->close(); pObj->close();
}
其中,形成扩展记录的时候以下格式生成
struct resbuf *head; ads_point testpt; testpt[X]=point_cur.x; testpt[Y]=point_cur.y; testpt[Z]=point_cur.z; head = acutBuildList(AcDb::kDxfText, data,//输入的字符串值 AcDb::kDxfXCoord, testpt,//点的坐标 0); pXrec->setFromRbChain(*head));
//有的时候能够找到,但是执行erase命令时候提示不能为写 |
|