ObjectARX 写扩展数据 和 查看扩展数据
来源:互联网 发布:佛教通史知无涯 编辑:程序博客网 时间:2024/04/30 14:59
<pre class="cpp" name="code">////添加扩展数据======================static void TESTaddxdatacmd(){ads_name en;ads_point pt;////选择要添加扩展数据的对象if(acedEntSel(_T("\n选择要添加扩展数据的实体"),en,pt) != RTNORM){return;}AcDbObjectId entId;Acad::ErrorStatus es = acdbGetObjectId(entId,en);////扩展数据的内容struct resbuf* pRb;////注册应用程序名称acdbRegApp(_T("XData"));CString strAppName(_T("XData"));;CString str(_T("hello"));////创建结果缓冲区链表pRb = acutBuildList(AcDb::kDxfRegAppName,strAppName,AcDb::kDxfXdAsciiString,str,AcDb::kDxfXdInteger32,2,AcDb::kDxfXdReal,3.14,AcDb::kDxfXdWorldXCoord,pt,RTNONE);////为选择的实体添加扩展数据AcDbEntity* pEnt;acdbOpenAcDbEntity(pEnt,entId,AcDb::kForWrite);struct resbuf* pTemp;pTemp = pEnt->xData(_T("XData"));if(pTemp != NULL){////如果已经包含扩展数据,不再重复添加acutRelRb(pTemp);acutPrintf(_T("它已经包含了扩展数据"));}else{pEnt->setXData(pRb);acutPrintf(_T("\n扩展数据已赋值"));}pEnt->close();acutRelRb(pRb);}//查看扩展数据==================static void TESTviewxdatacmd(){////提示用户选择要查看的扩展数据对象ads_name en;ads_point pt;if(acedEntSel(_T("\n选择要查看的扩展数据实体"),en,pt) != RTNORM){return;}AcDbObjectId entId;Acad::ErrorStatus es = acdbGetObjectId(entId,en);////打开图形对象,查看是否包含扩展数据AcDbEntity* pEnt;acdbOpenAcDbEntity(pEnt,entId,AcDb::kForRead);struct resbuf* pRb;pRb = pEnt->xData(_T("XData"));pEnt->close();if(pRb != NULL){////在命令行显示所有的扩展数据struct resbuf* pTemp;pTemp = pRb;////首先要跳过应用程序名称pTemp = pTemp->rbnext;acutPrintf(_T("\n字符串类型的扩展数据是:%s"),pTemp->resval.rstring);pTemp = pTemp->rbnext;acutPrintf(_T("\n整数类型的扩展数据是:%d"),pTemp->resval.rint);pTemp = pTemp->rbnext;acutPrintf(_T("\n实数类型的扩展数据是:%.2f"),pTemp->resval.rreal);pTemp = pTemp->rbnext;acutPrintf(_T("\n点坐标类型的扩展数据是:%.2f,%.2f,%.2f"),pTemp->resval.rpoint[X],pTemp->resval.rpoint[Y],pTemp->resval.rpoint[Z]);acutRelRb(pRb);}else{acutPrintf(_T("\n该实体不包含任何的扩展数据"));}}//添加扩展字典======================static void TESTaddrcdcmd(){ads_name en;ads_point pt;if(acedEntSel(_T("\n选择要添加扩展记录的实体"),en,pt) != RTNORM){return;}AcDbObjectId entId;////要添加扩展记录实体IDAcad::ErrorStatus es = acdbGetObjectId(entId,en);AcDbXrecord* pXrec = new AcDbXrecord;//= new AcDbxRecord;AcDbObject* pObj;AcDbObjectId dictObjId,xRecObjId;AcDbDictionary* pDict;////要在扩展记录中保存的字符串struct resbuf* pRb;/////向实体中添加扩展字典acdbOpenObject(pObj,entId,AcDb::kForWrite);pObj->createExtensionDictionary();dictObjId = pObj->extensionDictionary();pObj->close();////向扩展字典中添加一条记录acdbOpenObject(pDict,dictObjId,AcDb::kForWrite);pDict->setAt(_T("XRecord"),pXrec,xRecObjId);pDict->close();////设置扩展记录的内容pRb = acutBuildList(AcDb::kDxfText,_T("\n直线"),AcDb::kDxfInt32,12,AcDb::kDxfReal,3.14,AcDb::kDxfXCoord,pt,RTNONE);pXrec->setFromRbChain(*pRb);pXrec->close();acutRelRb(pRb);}//查看扩展字典==============static void TESTviewrcdcmd(){////提示用户选择要查看扩展记录的图形对象ads_name en;ads_point pt;if(acedEntSel(_T("\n选择要查看扩展记录的实体"),en,pt) != RTNORM)return;AcDbObjectId entId;Acad::ErrorStatus es = acdbGetObjectId(entId,en);////打开图形对象,获得实体扩展字典的OBJIDAcDbEntity* pEnt;acdbOpenAcDbEntity(pEnt,entId,AcDb::kForRead);AcDbObjectId dictObjId = pEnt->extensionDictionary();pEnt->close();////查看实体是否包含扩展字典if(dictObjId == AcDbObjectId::kNull){acutPrintf(_T("\n所选择的实体不包含扩展字典"));return;}////打开扩展字典,获得与关键字'XRECORD'关联的扩展记录AcDbDictionary* pDict;AcDbXrecord* pXrec;acdbOpenObject(pDict,dictObjId,AcDb::kForRead);pDict->getAt(_T("XRecord"),(AcDbObject* &)pXrec,AcDb::kForRead);pDict->close();////获得扩展记录的数据链表并关闭扩展数据对象struct resbuf* pRb;pXrec->rbChain(&pRb);pXrec->close();if(pRb != NULL){////在命令行显示所有的扩展数据struct resbuf* pTemp;pTemp = pRb;acutPrintf(_T("\n字符串类型的扩展数据是:%s"),pTemp->resval.rstring);pTemp = pTemp->rbnext;acutPrintf(_T("\n整数类型的扩展数据是:%d"),pTemp->resval.rint);pTemp = pTemp->rbnext;acutPrintf(_T("\n实数类型的扩展数据是:%.2f"),pTemp->resval.rreal);pTemp = pTemp->rbnext;acutPrintf(_T("\n点坐标类型的扩展数据是:%.2f,%.2f,%.2f"),pTemp->resval.rpoint[X],pTemp->resval.rpoint[Y],pTemp->resval.rpoint[Z]);acutRelRb(pRb);}else{acutPrintf(_T("\n没有找到它的扩展数据"));}}
0 0
- ObjectARX 写扩展数据 和 查看扩展数据
- ObjectARX 添加图块坐标扩展数据
- 扩展数据
- ObjectARX学习笔记(十九)--如何设置扩展字典的数据AcDbDictionary
- vs 查看调试器中的数据和 SOS.dll(SOS 调试扩展)
- 扩展AS3的数据范围和精度
- 添加和获取XData扩展数据
- python oracle扩展安装和数据连接
- Oracle 表空间扩展和数据迁移
- 添加扩展数据XDATA
- 扩展元数据
- 数据扩展 添加字段
- 扩展模块数据迁移
- 爬虫数据扩展
- SQL2005CLR函数扩展-数据导出
- SQL2005CLR函数扩展-数据导出
- 可扩展数据架构浅析
- SQL2005CLR函数扩展-数据导出
- java 小游戏人机猜拳 关键代码
- Face Alignment at 3000 FPS via Regressing Local Binary Features
- hibernate几种映射关系的笔记
- HDU 1074 Doing Homework
- mysql 安装 最后一步 execute 未响应
- ObjectARX 写扩展数据 和 查看扩展数据
- linux debian 下获取当Home路径的方法
- 下拉刷新自定义的接口和方法
- 全新的适配方式AutoLayout
- oracle12c创建用户和表空间出现的问题
- 解决git提交敏感信息(回退git版本库到某一个commit)
- Git与GitHub使用
- 最广为使用的Java库
- jvisualvm 监控JVM内存的工具