模具知识|AutoCAD非图形特征的存取和应用

   日期:2016-08-22     来源:建材之家    作者:模具之家    浏览:44    评论:0    
核心提示:一、引言 在进行产品设计时,很多时候只是设计出了产品的几何特征和属性,在图纸中很少涉及到其它非图形特征属性,如零件的材料、生产数量、拓扑关系等。这些非图形特征往往通过标注来实现,但在图纸本身的数据库中并没有保存这些有用的非图形特征信息。随着计算机技术的发展,尤其是网络和数据库的发展和成熟,图纸数据库中若不包含必要的非图形特征信息,就很难实现零件之间的关联及信息的相互利用,很难充分实现信

模具知识|数控铣床安全操作规程

推荐简介:1、 上班必须按要求穿工作服,否则不许进入车间。   2、 禁止带手套操作机床,若长发要戴帽子或发网。   3、 所有实验步骤须在实训教师指导下进行,未经指导教师同意,不许开动机床。  4、 机床开动期间严禁离开工作岗位做与操作无关的事情。   5、 严禁在车间内嬉红戏、打闹。机床开动时,严禁在机床间穿梭。   6、 未经指导教师确认程序正确前,不许动操作箱上已设置好的“机床锁住”状态键。  7......
模具之家讯:一、引言

在进行产品设计时,很多时候只是设计出了产品的几何特征和属性,在图纸中很少涉及到其它非图形特征属性,如零件的材料、生产数量、拓扑关系等。这些非图形特征往往通过标注来实现,但在图纸本身的数据库中并没有保存这些有用的非图形特征信息。随着计算机技术的发展,尤其是网络和数据库的发展和成熟,图纸数据库中若不包含必要的非图形特征信息,就很难实现零件之间的关联及信息的相互利用,很难充分实现信息的共享。

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组码的范围是1~369,其中的数据没有任何限制,可以被任何其它对象所拥有。我们可以通过以下方法来实现对非图形特征信息的存储和提取。

(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 appName[40];//应用程序名

char daihao[40];//电缆代号

char mingcheng[40];//电缆名称

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 appName[40];//应用程序名

char daihao[40];//电缆代号

char mingcheng[40];//电缆名称

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->resval.rreal; //获取关联参数fl

acutRelRb(pRbList);

3. 其他应用

前面介绍了如何利用扩展实体数据和扩展记录对象来存储和提取非图形特征,除此以外,还有更多的应用。例如,在CAPP中自动提取零件的一些特征参数供工艺设计用,可减少重复的工作,提高整个设计过程的效率。

四、结束语

本文介绍了在AutoCAD中通过二次开发程序来实现非图形特征信息的存储和提取,这些方法可以大大提高图纸数据库中的信息含量,从而为后续的产品设计和开发工作提供基础,大大提高设计效率。

模具之家为您提供最全面的塑胶,塑料,模具,模具设计,塑胶模具品牌的装修知识点和各种塑胶模具的导购与在线购买服务,拥有最便宜的塑胶模具价格和最优质的售后服务,敬请登陆模具之家:http://muju.jc68.com/
广告
 
打赏
 
更多>文章标签:塑料 ;相关产品:
更多>同类头条资讯
0相关评论

推荐图文更多...
点击排行更多...
模具商圈内事更多...
最新视频更多...
推荐产品更多...
建材风水 | 木板之家 | 电工之家 | 壁纸之家 | 净化之家 | 安防之家 | 水暖之家 | 洁具之家 | 窗帘头条 | 家饰之窗 | 老姚之家 | 灯饰之家 | 电气之家 | 全景头条 | 陶瓷之家 | 照明之家 | 防水之家 | 防盗之家 | 博一建材 | 卫浴之家 | 区快洞察 | 郑州建材 | 驻马店建材 | 周口建材 | 信阳建材 | 商丘建材 | 南阳建材 | 三门峡建材 | 漯河建材 | 许昌建材 | 濮阳建材 | 焦作建材 | 新乡建材 | 鹤壁建材 | 安阳建材 | 平顶山建材 | 洛阳建材 | 开封建材 | 武汉建材 | 神农架建材 | 天门建材 |
建材 | 720全景 | 企业之家 | 移动社区 | 关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图 | 排名推广 | 广告服务 | 积分换礼 | RSS订阅 | sitemap |
(c)2015-2017 BO-YI.COM SYSTEM All Rights Reserved
Powered by 模具头条