基于ObiectARX的通风设计参数组织方法研究.pdf
文章编号 0253- 99932004 05- 0576- 05 基于ObjectARX 的通风设计参数组织方法研究 李龙清, 吴奉亮 西安科技大学 能源学院, 陕西 西安 710054 摘 要 基于通风设计内容的分析, 提出了采用 ObjectARX 开发通风辅助设计软件的必要性, 论 述了其中的关键技术, 包括使用 ObjectARX 中的扩展字典和扩展记录实现井巷特征参数与巷道 线的关联;采用自定义实体的方法实现矿井需风量的计算. 通过编写程序验证了方法的正确性, 并提供了必要的代码. 关键词 ObjectARX;通风设计; 扩展字典; 扩展记录;自定义实体 中图分类号 TD722 文献标识码 A 收稿日期 2004-03-01 基金项目 国家自然科学基金资助项目 50174045 作者简介 李龙清 1957- , 男, 陕西蓝田人, 副教授. Tel 029- 85583698, E- mail lilqxustsncn Study on organization parameters in ventilation design LI Longqing, WU Fengliang Institute of Energy Engineering, Xian University of Science ventilation design; extension dictionary; extension record; custom entity AutoCAD软件因其强大的图形设计和二次开发功能在设计领域得到了广泛的应用, 特别是它的二次开 发产品对提高设计效率起到了明显的作用,比如建筑行业中的 PKPM、天正建筑、天正暖通等[ 1]在建筑设 计中起到很好的辅助计算和辅助绘图作用.煤矿设计中虽然也广泛地使用AutoCAD[ 2], 但还没有成熟的二 次开发产品, 因此开发基于AutoCAD的煤矿设计软件对提高煤矿设计效率必将起到很大作用. 笔者以煤矿 设计中的通风设计为例,对用 ObjectARX 开发通风设计软件的关键技术作一些探讨. 通风设计计算工作量大,重复计算多,其中对矿井需风量的计算原理虽简单,但涉及的参数很多, 而 且参数取值都有严格的要求,设计中需要经常查阅资料,是一项十分烦琐的工作;另外, 风量分配和阻力 计算也是一件比较复杂的工作, 对于简单的通风系统可以根据各用风点风量,通过笔算求出通过巷道的风 量和总阻力, 但复杂的系统一般是通过网络解算来实现的[ 3]. 使用 ObjectARX 对AutoCAD 进行二次开发不 仅可以实现以上功能, 而且可以达到计算可视化的效果,降低软件应用的门槛, 提高设计效率.研究中的 第 29卷第 5 期煤 炭 学 报Vol. 29 No. 5 2004 年10月JOURNAL OF CHINA COAL SOCIETYOct. 2004 关键技术是选择正确的数据组织方法,处理好这两类计算中的参数. 1 通风设计中的计算参数分析 通风设计一般包括 5个方面[4] 确定矿井通风系统; 矿井风量计算和风量分配;∀ 矿井通风阻 力计算;选择通风设备;∃ 概算矿井通风费用. 其中复杂的计算工作主要集中在需风量计算、风量分 配和通风阻力计算中, 相关的参数有两类. 1 矿井需风量计算参数 矿井需风量的计算应按井下同时工作人数和采煤、掘进、硐室及其他实际需风量的总和计算, 然后取 两种情况的最大值.相关的计算参数以计算依据和用风点类型的不同而不同. 2 井巷特征参数 风量分配和通风阻力计算都需要用到井巷特征参数,这些参数包括巷道名称、巷道编号、始末节点 号、支护方式、断面形状、摩擦阻力系数、巷道长度、巷道周长、风量、风阻、风压、风速等[3]. 2 ObjectARX 介绍 当前用于AutoCAD 二次开发的工具主要有 3 种 AutoLisp 语言, VBA 和以面向对象的Visual C 为 开发语言的 ObjectARX.其中 ObjectARX 的功能最强大,它可以共享AutoCAD 的地址和空间,深入到系统 底层, 对AutoCAD 进行直接的函数调用,速度快、图形管理方便, 软件代码的保密性强, ObjectARX 和其 它开发工具最大的不同点在于它是基于面向对象技术的开发工具,在它的类库里包括了所有AutoCAD 的实 体和对象模型[ 5]. 所有软件的本质都是处理数据, 从这一点来看, ObjectARX主要提供了两种机制供软件设计者将他们 的应用程序专有数据与AutoCAD 中的图形实体相关联,第 1种是使用扩展数据或扩展记录和扩展字典; 第 2 种是创建用户的自定义类,产生新的实体类型, 来完成数据的组织. 3 利用自定义类机制构建 用风点必须的计算参数有用风点 的需风量、计算依据等; 为了便于统计矿 井总风量, 可以在此父类中定义一组静态 的成员变量矿井通风系数、井下总人 数、矿井总需风量.当矿井通风系数和井 下总人数改变以及每增加一个用风点、某 个用风点的参数改变后, 可以将当前计算 出的矿井总需风量保存在此变量中,这样 可以实现在改变任何一个用风点的参数 图 3 用风点类 Fig3 Classe of CFLPoint and CCaiMei 时, 都可以看到总风量的变化情况 图 2 . 计算采煤工作面需风量时, 用到的参 数有 工作面瓦斯绝对涌出量、瓦斯涌出 不均匀备用系数、温度、断面、最大炸药 量、工作人数等. 图 3 是按 UML 语言绘制的两种用风 点的类图.dwgOutFields AcDbDwgFiler* p 和 dwgInFields AcDbDwgFiler* p 成员 函数是重载的 AcDbEntity 类中的成员函 数, 其作用是将 用风点 的信息 保存在 DWG 文件中. 4 利用扩展字典和扩展记录连接井巷特征参数 AutoCAD中的每一个实体都可以有一个扩展字典,扩展字典可以容纳任意一套 AcDbObject 类及从 AcDbObject 派生的类的对象[6]. 扩展记录是由 AcDbxrecord 类的实例来表示,以结果缓冲区链表的形式定 义,它是从AcDbObject 类派生来的,因此扩展记录可以被添加到应用实体的扩展字典中.结果缓冲区链表 是ObjectARX 提供的一种数据类型,扩展纪录使用结果缓冲区链表可以使程序员添加任意类型和数量的应 用程序专用数据, 实现应用程序数据随图形实体存放的目的[6]. 所以笔者可以将巷道的特征参数按照扩展 记录的方式组织, 存放在相应的巷道线的扩展字典中. 表 1 所示的井巷特征参数可按下面的程序建立扩展 记录并将其添加到相应的巷道线上. 表 1 井巷特征参数 Table 1 Characteristic parameters of mine workings 巷道 名称 巷道 编号 始节 点号 末结 点号 支护 形式 断面 形状 摩擦阻力系数 /N∋s2∋m- 4 长度 L/ m 周长 U/m 断面积 S/m2 风量 Q /m3∋s- 1 风阻 R/N∋s2∋m- 8 阻力 p / Pa 风速 v/ m ∋s- 1 主斜井112砌碹 半拱004111010882190088 331892 32 回风斜井234锚喷 半拱011057211186501098 092705 81 41 定义特征参数结构体 采用 C 语言的语法格式将井巷的特征参数封装在如下的结构体中. typedef struct { char name [ 256] ,style [ 256] , areastyle [ 256] ; 分别代表巷道的名称,支护样式, 断面形状. 578 煤 炭 学 报 2004年第 29 卷 int num, snum,enum;分别代表巷道的编号, 始节点号,末节点号. double A,L,U, S;分别代表巷道的摩擦阻力系数,长度, 周长,断面积. double Q,R, p , v;分别代表巷道的风量,风阻, 风压,风速. } HdData 42 添加井巷特征参数到实体 使用如下函数可以将 para 表示的井巷特征参数添加到 entId 参数表示的图形实体上. void AddXrecord AcDbObjectId entId, HdData para { / * entId 为一个代表巷道的图形实体,比如一条直线. 函数的功能是将一组井巷特征参数添加到 en tId 表示的实体上. * / 1 打开图形实体. AcDbEntity* pent; if acdbOpenObject pent,entId, AcDb kForWrite AcadeOk return;不能打开实体则返回. 2 得到 pent 所指实体的扩展字典. AcDbDictionary* pdic;用于接收将要得到的扩展字典. AcDbObjectId dicId pent extensionDictionary ;得到扩展字典的 Id 号. if dicId NULL { 如果 dicId 等于 NULL 则说明扩展字典还不存在,下面创建它. pent createExtensionDictionary ; dicId pent extensionDictionary ; } acdbOpenObject pdic,dicId, AcDB kForWrite ;使用 dicId 打开了扩展字典. 3 将特征参数 para 组织成扩展记录. struct resbuf * pHead;声明一结果缓冲区链表. AcDbXrecord* prec new AcDbXrecord;建立一个扩展记录. 将特征参数存入结果缓冲区链表. pHead acutBuildList AcDbkDxfText, name, AcDb kDxfText,style, AcDb kDxfText,areastyle, AcDb kDxfInt32, num, AcDb kDxfInt32,snum, AcDbkDxfInt32, enum, AcDb kDxfReal, A, AcDb kDxf Real,L, AcDb kDxf Real,U, AcDbkDxf Real, S, AcDb kDxfReal,Q, AcDbkDxf Real,R, AcDbkDxf Real, p, AcDb kDxf Real,v, 0 ; prec setFromRbChain * pHead ;将存有特征参数的结果缓冲区链表存入扩展记录当中. AcDbObjectId precId; pdic setAt 井巷特征参数将扩展记录 prec 放入实体的扩展字典中. acutRelRb pHead ;释放结果缓冲区链表. prec close ;关闭扩展记录. pdic close ;关闭扩展字典. pent close ;关闭图形实体. } 基于以上函数,可按如下代码方法将表 1 所示的井巷特征参数添加到 objId1, objId2代表的实体中. AcDbObject objId1, objId2;获取两条代表巷道的线条,将他们的 Id 号分别存入 objId1 和 objId2 中. HdData hd1, hd2;定义两个井巷特征参数结构体变量. 开始给井巷特征参数赋值. strcpy hd1name, 主斜井strcpy hd2name, 回风斜井 579第 5期李龙清等 基于ObjectARX 的通风设计参数组织方法研究 strcpy hd1style, 砌碹 strcpy hd2strle, 锚喷 strcpy hd1areastyle, 半拱 strcpy hd2areastyle, 半拱 hd1num 1;hd2num 2; hd1snum 1; hd2snum 3; hd1enum 2; hd2enum 4;hd1A 0004 1; hd2A 0011; hd1L 110;hd2L 572;hd1U 108; hd2U 111; hd1S 82;hd2S 86;hd1Q 19;hd2Q 50; hd1R 0008 834 0;hd2R 0003 708 4; hd1p 3189; hd2p 927; hd1v 232; hd2v 581; 建立巷道线与特征参数的关联. AddXrecord objId1, hd1 ; AddXrecord objId2,hd2 . 5 结 论 论述了用 ObjectARX来开发通风计算功能时,如何将计算参数与AutoCAD 中的图形建立关联,并以井 巷特征参数和采煤工作面需风量的计算为例, 通过用扩展字典、扩展记录和自定义类的方法, 正确选择了 数据的组织方法. 结果表明,该方法是成功的、可行的.本研究为通风设计软件的开发提供了一种新方 法,使得在AutoCAD 平台上完成通风设计中的复杂计算成为可能.本文只讨论了非图形参数即特征数据的 组织方法, 对于这些参数的显示、计算可以配合 ObjectARX 中的其它方法来解决. 参考文献 [ 1] 张 青, 雷光明, 韩新普. 计算机辅助设计与 AutoCAD 绘图 [ J]. 陕西师范大学学报 自然科学版 , 2003, 31 专 辑 141. [ 2] 纪永春, 杜春红, 于国庆. 在煤矿设计中应用 CAD 的一点体会 [ J] . 煤炭技术, 2000, 19 2 14 16. [ 3] 邢玉忠, 姜铁明, 刘文朝. 矿井通风辅助设计软件的研制 [J]. 太原理工大学学报, 1998, 29 3 268 275. [ 4] 张国枢. 通风安全学 [M]. 徐州 中国矿业大学出版社, 2000. 148 158. [ 5] 邵俊昌, 李旭东. AutoCAD2000 ObjectARX2000开发技术指南 [M]. 北京 电子工业出版社, 2000. 4 7. [ 6] 林 毅, 沈军营, 严秀琪, 等. 几何对象与特征对象的关联方法 [J]. 计算机应用, 2000, 20 3 24 26. 加入台湾华艺 CEPS 中文电子期刊服务声明 本刊已从 2004 年 9 月加入台湾中文电子期刊服务 ∗∗∗ 思博网 CEPS .中文电子期刊服务 ∗∗∗ 思博网 是目前台湾地区最大的期刊全文数据库, 收录了台湾地区 300余种核心期刊的全文;访问地址为 http / / wwwcepscomtw. 自此,读者可通过这一网址检索本刊 2004 年起各期的全文,并在一段时间后,读者还 可以检索 2004 年前本刊历年的全文. 此外,由于本刊被 CEPS 收录,故凡向本刊投稿者, 均视为其文稿刊登后可供思博网 CEPS 收录、 转载并上网发行; 其作者文章著作权使用费与稿酬本刊一次付清,不再另付其它报酬. 请各位继续支持本刊, 谢谢 本刊编辑部 580 煤 炭 学 报 2004年第 29 卷