




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
AutoCAD中非图形特征的存取方法及应用AutoCAD中非图形特征的存取方法及应用 一、引言 在进行产品设计时,很多时候只是设计出了产品的几何特征和属性,在图纸中很少涉及到其它非图形特征属性,如零件的材料、生产数量、拓扑关系等。 这些非图形特征往往通过标注来实现,但在图纸本身的数据库中并没有保存这些有用的非图形特征信息。随着计算机技术的发展,尤其是网络和数据库的发展和成 熟,图纸数据库中若不包含必要的非图形特征信息,就很难实现零件之间的关联及信息的相互利用,很难充分实现信息的共享。 AutoCAD 2000 以其强大的功能及对二次开发的支持和开放性,成为众多设计人员采用的工作平台和二次开发平台。它不仅能存储所生成图形的几何信息和其它相关信息,而且还允 许用户建立自己的“非图形特征信息”,以便在图形文件中提供必要的较完整的产品数据,实现零件信息的自动统计,不同零部件的关联设计,自动提取所需零件及 图纸的相关特征参数等,为后续开发和生产提供保障。 二、 非图形特征的存储和提取方法 在AutoCAD中,图形是指存储在数据库中的对象的集合。基本的数据库对象包括实体、符号表和字典。实体是一种指定类型的数据库对象,它在 AutoCAD中有图形表示,如直线、圆、曲线和文字等;符号表和字典是用来存储数据库对象的容器对象。ObjectARX 使用户的应用程序能够访问这些数据库对象,另外,用户也可以为指定的应用程序创建新的数据库对象。 在通常的设计中,图纸中只包含了各种图形实体及实体的基本属性,如线型、图层和可见性等,一般都不包括基本属性以外的非图形特征属性,如实体的 材料、加工方法等。我们可以利用扩展数据(Xdata)和扩展记录对象(Xrecord)来存储其非图形特征参数,为关联设计和CAPP等提供必要的信 息。 1.扩展实体数据(Xdata) ObjectARX、Visual Lisp等应用程序都可以创建扩展实体数据(Xdata),扩展实体数据可以附在任何对象上,AutoCAD 只负责维护这些信息,但并不使用这些信息。一个实体的扩展数据由应用程序所建立,跟随在该实体的正常定义数据之后,包含一个或多个1001组。每一组均以 一个互不相同的应用程序名开头,扩展数据的组码在1000至1071之间,不同组码对应不同类型的信息。可用以下方法为指定对象附加扩展实体数据,获取指 定对象的扩展实体数据。 (1)为指定对象附加扩展实体数据 Acad:ErrorStatus AcDbObject:setXData(const resbuf* xdata); 其中,xdata 为结果缓冲区链表,包含要添加的信息。 (2)获取指定对象的扩展实体数据 Acad:ErrorStatus AcDbObject:XData(const char* regappName); 其中,regappName 欲获取信息所属的应用程序名。 2.扩展实体词典和扩展实体记录 词典用以存储用户自己定义的各类符号表及其他大量数据。扩展实体记录就是一个Resbuf链表。该链表是一个数据组的列表,链表中每一节点都包 含一个DXF组码及相关数据。扩展实体记录的DXF组码的范围是1369,其中的数据没有任何限制,可以被任何其它对象所拥有。我们可以通过以下方法来 实现对非图形特征信息的存储和提取。 (1)创建词典对象 Acad:ErrorStatus createExtensionDictionary(); (2)添加对象到扩展数据词典 Acad:ErrorStatus; setAt(char* Key,AcDbObject* obj,AcDbObjectId& retobjId); 其中,Key为加入到词典的新对象的索引关键字; obj为加入到词典的新对象指针; retobjId为加入到词典的新对象Id。 (3)检索指定关键字的扩展数据词典记录 Acad:ErrorStatus getAt(const char* entryName,AcDbObject*&entryObj,AcDb:OpenMode mode) const; 其中,entryName为指定检索的关键字; entryObj为返回的检索到的对象指针; mode为对象打开的方式。 (4)添加数据到扩展数据记录 Acad:ErrorStatusAcDbXrecord:setFromRb Chain(resbuf& pRb,AcDbDatabase*pDb=NULL); 其中,pRb为包含特征信息的结果缓冲区链表。 (5)获取扩展实体记录的内容 Acad:ErrorStatusAcDbXrecord:rbChain(resbuf*ppRb,AcDbDatabase*pAuxDb=NULL); 其中,ppRb为结果缓冲区结构指针。 三、非图形特征存储提取方法的应用 以上介绍了通过扩展实体数据和扩展实体记录对象来存储和提取非图形特征的方法。下面通过3个实例来介绍其应用。 1.利用扩展实体数据保存和提取实体非图形特征 在工厂电气布线中,需要对电缆设定代号、名称、产地等非几何特征,以便于对电缆等材料进行自动统计等后续工作。 (1)为电缆实体设定非图形特征 char appName40;/应用程序名 char daihao40;/电缆代号 char mingcheng40;/电缆名称 ads_real length;/电缆长度 struct resbuf *pRb,*pTemp; /通过对话框等方式对daihao,mingcheng,length赋初值 strcpy(appName,“diqibuxian”); acdbRegApp(appName);/以appName登记图形中一个应用程序名 pRb = acutNewRb(AcDb:kDxfRegAppName);/分配结果缓冲器 pTemp = pRb; pTemp-resval.rstring= (char*)malloc(strlen(appName)+1); strcpy(pTemp-resval.rstring, appName);/将数据存入结果缓冲器链表 pTemp-rbnext=acutNewRb(AcDb:kDxfXdAsciiString); pTemp=pTemp-rbnext; pTemp-resval.rstring= (char*)malloc(strlen(daihao)+1); strcpy(pTemp-resval.rstring, daihao); /将代号存入结果缓冲器链表 pTemp-rbnext=acutNewRb(AcDb:kDxfxdLong); pTemp=pTemp-rbnext; pTemp-resval.rreal=length; AcdbObject *pObj;/通过一定的方式获取需要添加数据的对象 pObj-SetXData(pRb);/为对象添加扩展实体数据 pObj-close(); acutRelRb(pRb); (2)获取指定对象的扩展实体数据 AcDbObject* pObj; char appName40;/应用程序名 char daihao40;/电缆代号 char mingcheng40;/电缆名称 ads_real length;/电缆长度 struct resbuf *pRb; strcpy(appName,“dianqibuxian”); pRb=pObj-xData(appName);/获取应用名appName指定的扩展数据 if(pRb!=NULL) int n=0; for(;pRb!=NULL;pRb=pRb-rbnext) if(pRb-restype=1000) n+; if(n=1) strcpy(daihao,pRb-resval.rstring);/得到电缆代号 if(n=2) strcpy(mingcheng,pRb-resval.rstring);/得到电缆名称 if(pRb-restype=1040) length=pRb-resval.rreal; acutRelRb(pRb); 2.利用扩展记录对象实现关联设计 在参数化设计过程中,零件甲中的某些参数与零件乙的设计有关联。我们设计零件乙时就需要从零件甲的图纸数据库中获取所需的参数,实现关联设计。 (1) 在零件甲的图纸空间中保存关联参数 ads_real bl,fl;/零件甲与零件乙相关联的参数 AcDbDictionary *pNamedobj, *pDict; acdbHostApplicationServices()-workingDatabase() -getNamedObjectsDictionary(pNamedobj, AcDb:kForWrite); /获取当前数据库中的命名对象字典 pNamedobj-setAt(Guanliansheji, pDict, DictId); pNamedobj-close(); AcDbXrecord *pXrec = new AcDbXrecord; AcDbObjectId xrecObjId; pDict-setAt(XREC1, pXrec, xrecObjId); pDict-close(); struct resbuf *pHead; pHead = acutBuildList(AcDb:kDxfReal, bl,AcDb:kDxfReal,fl,0); /设置包含参数bl,fl的结果缓冲器链表 pXrec-setFromRbChain(*pHead);/给扩展记录对象附加信息 acutRelRb(pHead); pXrec-close(); (2) 在设计零件乙的过程中,从零件甲的图形文件中获取所需的相关参数 AcDbDatabase* pDb = new AcDbDatabase(false, true); pDb-readDwgFile(fname);/fname为零件甲的图形文件名 AcDbDictionary *pNamedobj; pDb-getNamedObjectsDictionary(pNamedobj, AcDb:kForRead); AcDbDictionary *pDict; pNamedobj-getAt(Guanliansheji, (AcDbObject*&)pDict, AcDb:kForRead);/获取名为Guanliansheji的数据词典 pNamedobj-close(); AcDbXrecord *pXrec; pDict-getAt(XREC1, (AcDbObject*&) pXrec,AcDb:kForRead); /获取关键字为XREC1的扩展记录对象 pDict-close(); struct resbuf *pRbList; pXrec-rbChain(&pRbList);/获取包含特征信息的结果缓冲器链表 pXrec-close(); bl=pRbList-resval.rreal;/获取关联参数bl pRbList=pRbList-rbnext; fl=pRbList-res
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 田径裁判二级考试题库及答案
- 慈溪中考语文试题及答案
- 托育大赛题库及答案
- 社区康复站管理办法
- cpi规格品管理办法
- 财富卡业务管理办法
- 2025年智能楼宇照明项目发展计划
- 粮油厂消防管理办法
- 仓储安全备案管理办法
- 街道土地流转管理办法
- 全院poct管理制度
- 政府机构的数字化转型及其领导力要求
- 2025重庆市綦江区东溪镇社区工作者考试真题
- 2023分布式能源自动发电控制与自动电压控制系统测试技术规范
- 《智慧供应链管理》课件
- 《体重管理》课件
- 湖北省技能高考(学前教育)专业知识考试必刷题及答案(含往年真题)
- 2025年新教材道德与法治三年级上册第一单元《做学习的主人》教案设计
- 2025年下半年广东省珠海市金湾区招聘合同制职员63人(第三批)易考易错模拟试题(共500题)试卷后附参考答案
- 《蔚来汽车的SWOT分析》课件
- 2025-2030中国建筑工程质量检测行业市场发展分析及竞争格局与投资前景研究报告
评论
0/150
提交评论