自动导入管网图的燃气管网水力计算程序开发

摘 要

摘要:介绍了AutoCAD的DXF文件(图形交换文件)数据格式特点,利用DXF文件作为数据接口,为燃气管网水力计算程序开发了管网拓扑结构图自动导入功能。该方法可根据管道属性导入管网

摘要:介绍了AutoCAD的DXF文件(图形交换文件)数据格式特点,利用DXF文件作为数据接口,为燃气管网水力计算程序开发了管网拓扑结构图自动导入功能。该方法可根据管道属性导入管网图,简化管道数据输入过程。通过实例进行了验证。
关键词:燃气管网;水力计算;自动绘图;管网拓扑结构图;图形交换文件
Development of Gas Network Hydraulic Calculation Program with Automatic Import of Network Topology Map
ZHANG Ning,XIE Donglai
AbstractThe data format of AutoCAD drawing exchange file(DXF)is introduced.Using DXF file as data interface,the automatic import function of network topology map is developed for hydraulic calculation program of gas network.The program can import the network topology map according to the pipeline attribute and simplify the data input process.It is verified by a case.
Key wordsgas network;hydraulic calculation;automatic drawing;network topology map;drawing exchange file(DXF)
   随着我国能源结构的调整,越来越多的用户开始使用清洁、高效的管输天然气。燃气管网水力计算是进行管网设计和运行的理论基础,是顺利完成输配任务的保证。计算机应用的普及促使水力计算程序替代了原始的手工平差计算[1]。目前,应用比较直观、方便的程序是通过面向对象的语言(如VC)编写,用户可以在窗口利用鼠标点击绘制管段,输入计算参数,得到结果。但是,当管网规模越来越庞大时,这种输入方法不仅费时、费力,还极易出错,因此有必要在水力计算程序中开发管网拓扑结构图自动导入功能。
1 水力计算程序功能
    目前已有利用Visual C++开发的水力计算程序,可以在可视化界面中由用户利用鼠标点击绘制管网计算图。在管段和节点附近的空间范围内双击鼠标左键,弹出相应对话框,输入管段和节点参数,实现管网和数据的紧密结合。同时程序具有管段删除、截断、改变颜色、流向等编辑功能,方便管网的新建和改建。并利用解节点方程组法对单气源与多气源、高中压与低压、环状与枝状管网进行快速、准确的水力计算,并可将结果自动标注在水力计算图中[2]。本文在此程序基础上开发管网拓扑结构图的自动导入功能。
2 AutoCAD的DXF文件数据格式
2.1 DXF文件简介
    目前,燃气管道图大多用AutoCAD软件绘制,其储存格式有DWG、DWS、DWT、DXF四种。其中前三种文件格式为二进制形式,不便于数据内容的查看,只适合于AutoCAD程序本身的储存使用。DXF是一种ASCⅡ文本文件,它包含对应的DWG文件的全部信息,可以利用文本编辑器来查看其数据内容,通过它可以很方便与第三方软件形成良好的数据互读。
2.2 DXF文件的数据格式
    DXF文件的基本构造形式是由代码和关联值组成的数据对。代码(通常称为组码)表明数值的类型,关联值则表明具体数值的大小。每个组码和关联值在DXF文件中都单独成行。
    DXF文件由多个段组成,每个段以组码“0”和字符串“SECTION”开头,其后是组码“2”和表示段名的字符串(如ENTITIES),段中间用定义其元素的组码和关联值组成,段尾使用组码“0”和字符串“ENDSECT”结束。
    DXF文件段完整结构包括以下7部分:
    HEADER段:包含有关图形的总体信息,它由AutoCAD数据库版本号和一些系统变量组成。
    CLASSES段:包含应用程序定义的类的信息,这些类的实例出现在数据库的BLOCKS、ENTITLES和OBJECTS段中。
    TABLES段:包含应用程序标志表、块参照表、标注样式表、图层表、线型表、文字样式表、用户坐标系表、视图表、视口配置表的定义。
    BLOCKS段:包含构成图形中每个块的块定义。
    ENTITIES段:包含图形中的绘图实体。
    OBJECTS段:包含图形中的非图形对象。除图元、符号表记录以及符号表以外的所有对象都储存在此段。
    THUMBNAILIMAGE段:包含图形的预览图像数据[3~5]
3 可自动导入管网拓扑结构图的计算程序
3.1 DXF文件中管道数据的储存
    实现燃气管网拓扑结构图的自动导入,即通过线段的图层、颜色、线型、线宽等属性信息确定所选择的管道,读取它们的起点与终点坐标,然后在水力计算程序中绘制。其中最为关键的步骤是对管道的起点和终点坐标的准确查找。根据AutoCAD的绘图原则,线段都是绘制于某一图层上,当图层中线段的颜色、线型、线宽等属性信息与图层自身预定义的图形属性相同(通常称为随图层)时,线段的上述属性数据没有在用于储存图形对象信息的ENTITIES段的AcDbEntity子段中表达,而是作为图层的一般属性数据储存在图层所在的TABLES段。这时如果根据线段属性数据对管道进行查找时,就需要首先在TABLES段中找到图层自身预定义的线段属性的组码和关联值,如果所需查找的管段颜色、线型、线宽的数据和图层自身预定义的图形属性相符合,再在AcDbEntity段中找到此线段的起点和终点坐标;当图层中线段的颜色、线型、线宽等属性信息与图层自身预定义的属性信息不相同时,线段属性数据的组码和关联值就储存在AcDbEntity段中,可直接在此段中查找。根据管道属性查找坐标时,为防止有效数据的遗漏,需要逐行读取储存的数据,根据线段属性数据的储存方式的不同,定位于TABLES或AcDbEntity段,再找到相应管道的起点和终点坐标。
3.2 自动导入管网图功能的实现方法
    在程序自动导入之前,首先要对绘制管道的AutoCAD文件进行前期处理。程序的查找范围为图1所示导入管网简图命令对话框中的管段属性下拉列表中列出的图层的名称(导入管网图层1、导入管网图层2)、线段的颜色(红色、蓝色、白色)、线型(直线、虚线、点划线)、线宽(0.mm、0.6mm1、0.9mm)。如果需要导入管道的属性信息不在上述可选范围内,需要在AutoCAD中对管道属性进行前期修改,使得需要查找的管道属性在上述可选范围之内。然后把通用的DWG文件另存为DXF文件。
 

    在燃气水管网力计算程序中打开导入管网简图命令对话框,选择导入线段的图层、颜色、线型、线宽等属性信息。其中图层作为线段存在的基础,为必选项;其他3项可以根据进一步由管道属性精确查找的需要选择其中1项。
    图2为管道的起点和终点坐标的查询流程图。程序首先打开储存管网信息的DXF文件,调用VC的ReadString命令逐行读取管网数据。当查询到储存线段信息的AcDbEntity段,找到线段的图层名组码,如果组码的关联值与导入管网简图命令对话框的选定值相同,接着判断此图层中线段是否全部导入,如果全部导入,定位于AcDbEntity段下的AcDbLine子段,读取线段的起点和终点坐标;如果还需要根据图层中线段的属性信息进一步进行筛选,则首先需要判断是根据线段的颜色、线型、线宽3个属性中哪个属性进行选择。例如选择的是颜色属性,首先判断线段的颜色是否随图层设置,如果随图层设置,在TABLES段中,寻找图层名的组码,确定组码的关联值与选定值相同的图层,接着寻找此图层名下线段的颜色的组码,如果组码的关联值与选定值相同,在AcDbLine段中找到此线段,然后读取起点和终点坐标;如果线段的颜色不随图层设置,则直接在AcDbLine段中根据管道颜色找到该线段的起点和终点坐标即可[6~7]
  所有查询到的与导入管网简图命令对话框相关的管道的起、终点坐标储存在一个文件中,燃气管网水力计算程序读取此文件中数据,利用VC的MoveTo( )函数定位于管道的起点,LineTo( )函数绘制直线连接到端点,同时在线段的中点绘制从起点指向终点的流向三角形。
3.3 管道长度的测量
    如果管道在AutoCAD图中按照实际长度绘制,程序可以根据管道的起点和终点坐标利用直角三角形的勾股定理自动计算管道的长度。当实际管长与绘制管长的比例系数不为1时,可在图1所示对话框中输入相应的比例系数转化得到,管长作为计算参数自动输入程序中供水力计算使用。
3.4 节点自动编号
由于水力计算节点方程组求解的需要,程序对节点自动进行编号。首先对第一条管段起点编号1,终点编号2。在进行此后管段节点编号时,计算当前管段前所有节点的最大编号,当前管段与之前管段的节点坐标依次进行比较,如果两者相同,说明两点重合,节点编号为坐标相同点的编号;如果不相同,节点编号为当前节点编号的最大值加1[8]
4 自动导入管网图实例
    图3为AutoCAD的DWG格式燃气管网图,实线为现有燃气管道,虚线为需要扩建的管道。在导入管网图之前,首先在AutoCAD程序中把管道所在的图层名改为“导入管网图层1”,然后用“Drawing”文件名把管网图另存为DXF格式的文件,保存在电脑“桌面”。打开水力计算应用程序,点击选单栏中的“导入管网”选项,打开如图1所示对话框,在“选择图层”下拉选项中选取“导入管网图层1”,然后点击“确定”,则程序会按照电脑“桌面”上名为“Drawing”的DXF文件中“导入管网图层1”图层下的管道坐标自动绘制管网。全部管道导入计算程序并对管
    道节点自动编号的示意图见图4。若只需要选择性地导入图3中实线管道,打开图1所示对话框,在选择图层“导入管网图层1”时,还需要选择“线型”按钮,并相应选取“实线”选项,管道选择性导入计算程序并对管道节点自动编号的示意图见图5。
 

5 结语
    利用AutoCAD的DXF数据格式为燃气管网水力计算程序开发了管道的自动导入功能,该方法能够准确、迅速地把管网拓扑结构图移植到计算程序中,并自动计算管段长度,可以大大减轻输入工作量,对于大型、特大型管网,效果更加明显。
参考文献:
[1] 姜东琪,杜建梅,崔建华,等.燃气管网水力计算及水力计算图的绘制[J].煤气与热力,2001,21(5):453-455.
[2] 张宁,解东来,田贯三,等.多气源燃气管网水力计算程序的开发[J].煤气与热力,2009,29(6):B05-B08.
[3] 梁雪春,宋德明.AutoCAD二次开发技术指南[M].北京:清华大学出版社,2001.
[4] 余承飞,方勇.AutoCAD二次开发技术[M].北京:人民邮电出版社,1999.
[5] 王子茹,任清波.基于VC++的DXF数据文件接口的研究[J].厦门理工学院学报,2007,15(1):26-30.
[6] 刘天立.基于DXF实现C语言与AutoCAD接口[J].哈尔滨理工大学学报,2001,6(4):60-62.
[7] 刘传亮,陆建德.AutoCAD DXF文件格式与二次开发图形软件编程[J].微机发展,2004,14(9):101-104.
[8] 左丽丽,吴长春.燃气管网水力计算节点及管段编号的探讨[J].煤气与热力,2005,25(3):36-39.
 
(本文作者:张宁 解东来 华南理工大学 化学与化工学院 广东广州 510641)