十五年专注于
液压缸筒生产

全国咨询热线:
400-086-9833

   热门关键词修理 加工 活塞杆 缸筒 不锈钢

无标题文档

天圆液压产品中心

当前位置:主页 > 行业资讯 >

CAD二次开发技液压缸术在扩展实体数据中的应用

时间:2016-08-21 09:19来源:天圆网站 作者:天圆液压 点击:
AutoCAD作为国际上最流行的CAD绘图软件在国内的应用日益广泛。自R13.0版本以后,Autodesk公司推出了新的面向对象的软件接口,采用面向对象的编程方法为广大用户提供了更强的二次开发功能。借助ARX扩展实体数据,用户可以很方便地在图形实体中按不同的需求

AutoCAD作为国际上最流行的CAD绘图软件在国内的应用日益广泛。自R13.0版本以后,Autodesk公司推出了新的面向对象的软件接口,采用面向对象的编程方法为广大用户提供了更强的二次开发功能。借助ARX扩展实体数据,用户可以很方便地在图形实体中按不同的需求分门别类地存取不同的非图形数据,如设计人员关心产品的材料属性、重量、荷载初始值;而财务人员则关心产品的成本、价格等。众所周知,利用“块”属性可以存取非图形数据,而且这也是在AutoCAD R13.0版本以前用户能够在图形中存取非图形数据的唯一方法,但现在通过ARX扩展实体数据,非图形数据的存取将变得更加灵活、方便。事实上,AutoCAD 2000正是利用图形中位于“ACADASE”图层的POLYLINE扩展数据来保存图形实体与外部数据库之间的连接关系。

运用扩展数据技术很好地解决了程序开发时公用区的数据传递时需要更新的问题,很好和安全地保存了数据而无需再行初始化。

1 扩展实体数据在板片空间结构程序开发中的应用

在板片空间结构方面用AutoCAD ARX进行二次开发时,要涉及到三类问题:前处理、计算过程和后处理。在这三类问题的解决中,数据的读取、存储、更新至为重要。

如在用AutoCAD ARX进行板片空间结构的程序开发时,总体上计算程序中需要建立专门的材料数据库,而一般的计算过程中用到材料的类型往往只有几种或十几种,因此,如果计算时调用完全的材料库则会浪费计算资源而且没有必要。但是因为考虑到各种情况,必须建立材料数据库,那么这个材料数据库需要满足两个条件:一是既与计算调用程序保持联系,使计算程序在调用时能够从材料数据库中得到数值,同时又要使计算程序所能用到的数据只是材料数据库中的一部分,具有相对的独立性。

那么,在选择了材料类型的同时,就从总材料库中获得了有关数据。但是如何保留这些数据,等待后续计算的开展呢?由于整个程序都是模块化设计,各个模块之间的数据是独立的,在本模块运行结束后,内存中的数据就消失了,不可能修改一个材料数据后,就保存一个数据文件。如何实现材料数据的保存就成了一个至关重要的问题。

在传统的编程里,不同模块之间的数据传递是用公用区来实现的,但是公用区也是在内存中的,一个程序一旦运行,就必须完成运行后才能结束。有时一次不能完成全部过程,下一次开机时又必须重新开始。而且由于材料内容和数目具有不确定性,这个问题显然不能用这个方法来解决。

ARX为解决这一问题提供了有力的工具,它可以将获得的外部数据直接添加到图块上,放人图形数据库中。这样,即使在重新开机后仍可获得先前数据。利用扩展实体数据的最大好处首先在于它能够按不同的应用类型分组,其次在于它直接与图形实体关联,存取非常灵活方便。实现添加对象指定位数据的机制有4种,分别是:(1)扩展数据(Xdata);(2)Xrecord;(3)任何对象的扩展字典;(4)可以包含数据的任何定制对象。因为扩展数据较为简洁,应用起来较方便,选择它可以解决上述的问题。

在做前处理时,先以一定的格式通过扩展数据来初始化模型在运算时需要材料属性。到运算时再从预先编好的材料文件库中读写材料的值,然后将运算后的结果用扩展数据存储在后处理中所需要的参数中。如通过后处理绘出模型的应力图,就是通过ARX绘图命令调用在计算过程中存储在扩展数据的应力值再乘以适当的放大或缩小比例的数据而得到。

2 扩展实体数据的结构

扩展数据(Xdata)由ARX,A DS或AutoLSP编写的应用程序创建,并且可以被添加到所有对象。Xdata由一个应用程序使用的resbuf链表组成。数据使用DXF组码的1000到1007之间的范围。扩展 数 据 由一个应用程序创建,并且可以被添加到所有对象,不仅包括实体对象,也包括符号表对象等。它由一个应用程序使用的resbuf组成。AutoCAD维护此信息但是不使用它,这是AutoCAD中所预留,专用于二次开发的数据信息。这部分信息在DXF组码中对应为1000到1071之间。要求数据总量小于16K,数据类型被限制为现有的DXF组码和类型。这些类型包括:实数、整数、三维点等。

添加扩展数据可以把各种属性数据以实体扩展数据的形式添加到图块上。在建立扩展数据之前。应在ARX应用程序中登记扩展数据所需的应用名称,应用名称存储在实体的扩展数据中,同时也存储在ARX的符号表中。用户调用acdbRegApp()函数,即可完成登记操作。然后调用AcDdObject类成员函数setXData()为指定实体对象附加扩展数据,该函数可将各种数据写人结果缓冲区,以结果缓冲区链表的方式添加到实体的常规数据之后,保存图块实体,其扩展数据就可以保存在AutoCAD的图块文件中。链表数据结构如1图所示。

    图1链表结构

调用AcdbObjict类成员函数xData()可以获取某指定应用名称的扩展数据。若函数返回的结果缓冲区指针为非空(若为空,表示扩展数据不存在),则该指针所指向的结果缓冲区链表就是该应用名称的扩展数据,组码1001后包含的第一项为应用名称,其后就是扩展数据项。此时,扩展数据是以结果缓冲区链表的形式驻留在内存中,通过内存拷贝将扩展数据取出。这样,就可以对其进行输出、编辑修改等操作。

3 扩展实体数据程序

下面用一段程序来演示扩展数据的使用:


因为扩展数据具有不同的类型,所以通过扩展数据可以为不同类型的变量赋值,通过循环结构可以不断更新不同变量的初始值,从而可以计算具有不同材料属性情况下,计算模型的结果。

4 结束语

通过扩展实体数据技术,在用AutoCAD ARX编程时使得非实体数据的存取变得方便可行。但是扩展数据技术也有缺点,一方面就是所能存储的量比较有限,只有16K;另一方面,运用扩展数据要特别小心指针的使用,因为AutoCAD ARX与AutoCAD共享存储空间,如果指针使用错误,会导致AutoCAD运行时发生崩溃。对于前者,可以采用扩展字典,这样可以使存储空间达到2GB。至于后者,在使用指针时保持高度警惕,另外要及时关闭对象和释放扩展空间的存储空间。可以用PObj->close()和acutRelRb(PRb)语句来关闭对象和释放扩展数据的存储空间。

(责任编辑:admin)
分享按钮
------分隔线----------------------------