分享

基于Visual LISP的地铁轨道综合图辅助设计程序开发

 GXF360 2017-06-24
基于Visual LISP的地铁轨道综合图辅助设计程序开发

基于Visual LISP的地铁轨道综合图辅助设计程序开发

吴凯伟,石玮荃

(中铁工程设计咨询集团有限公司,北京 100055)

摘 要:为了满足地铁轨道综合图设计的要求,依据轨道基础理论,基于Visual LISP集成开发环境下利用AutoLISP语言对AutoCAD进行二次开发,编制地铁轨道综合图辅助设计程序,实现地铁轨道综合图中线路平面、线路纵断面、断链、轨面高程、轨道结构类型、轨道附属设备等信息的自动处理以及元素的自动绘制功能。应用结果表明:程序运行稳定、操作简单、成果准确,大大提高了轨道综合图的设计效率。

关键词:Visual LISP; AutoCAD二次开发;地铁;轨道;综合图

1 概述

城市轨道交通工程中轨道综合图是轨道工程施工的指导性文件,图中包含大量的工程信息[1]。若人工手动绘制轨道综合图,既要进行繁琐和重复的参数计算,又要进行大量的几何图形绘制,不仅耗时费力,而且较容易出错。因此利用辅助设计程序完成轨道综合图的绘制是十分必要的。

目前,不同设计单位在轨道综合图编制过程中借助不同类型的程序进行辅助设计,有的采用自编程序,有的采用商业软件。由于自编程序均不对外公开,而商业软件在轨道综合图辅助设计中存在较大的局限性,例如无法实现轨道类型和轨道附属设备的绘制等。因此急需开发出一个功能较为完善的轨道综合图辅助设计程序。

目前支持AutoCAD二次开发环境的主要有:AutoLISP/Visual LISP、VBA、ObjectARX、ActiveX Automation及块和形定义等[2]。本文利用AutoLISP语言进行二次开发。

AutoLISP语言是在普通LISP语言基础上,扩充了许多适用于AutoCAD应用的特殊功能而形成的一种以解释方式运行于AutoCAD内部的程序设计语言,继承了LISP语言擅长处理各种结构的数据表的特点[3]。LISP语言语法简单、功能函数强大、撰写环境多样、对作业平台兼容性强等特点[4]

Visual LISP作为AutoLISP开发AutoCAD程序及扩展AutoCAD功能专用的集成交互式开发环境,使编写、修改代码以及测试和调试程序更加容易[5]

本程序基于Visual LISP集成交互式开发环境采用AutoLISP语言对AutoCAD进行二次开发,以线路平面、线路纵断面、曲线超高、轨道结构类型、轨道附属设备等数据作为输入,对数据进行断链处理、综合计算后,得到各个加密基标处的轨面高程,进而完成轨道综合图的绘制。

2 需求分析

为满足轨道工程施工的需求,轨道综合图应包含线路平面、线路纵断面、断链、曲线超高、轨面高程、轨道结构类型、轨道附属设备、百米标里程和加密基标里程等数据,不同线别以及同一线别中各个数据在图中需相对独立且布局合理。

3 系统设计思路

轨道综合图需要许多基础数据作为输入资料,主要包含线路及行车专业接口资料和轨道专业设计参数,用户依据这些基础数据进行相应计算后,进行图纸的绘制。

因此,本程序按照获取数据、数据处理及绘制图形3个模块开展设计。

3.1 获取数据

通过线路平纵断面图获取线路平纵断面原始数据及断链数据,再对线路平纵断面原始数据进行断链处理后得到最终的线路平纵断面数据。

鉴于线路平面图借助不同的商业软件辅助设计生成,因此线路平面数据的存储格式存在差异,为保证程序兼容不同商业软件设计生成的线路平面图,在Visual LISP中直接访问图形数据库,再依次获取以链表形式存储的图元(Entity),并将各图元组码值(Group Code Value)中的有效数据提取出来,再以表(LIST)的格式存储于文本文件中。至此,线路平面原始数据提取完成。

上述提取完成的线路平面原始数据尚未考虑断链因素,因此在Visual LISP中将原始数据从原始数据文件中读取,再将断链依次插入相应的段落中,最后将经断链处理后的平面数据以表(LIST)的格式存储于文本文件中。至此,线路平面最终数据生成完毕。

同理,线路纵断面数据以同样方式生成。

3.2 数据处理基本原理

上述生成的线路纵断面数据中,以线路坡段为单元存放数据,由于需要给出各加密基标处的轨面高程,同时在竖曲线范围内需要考虑修正值,因此需要对数据进行处理。同理,上述生成的线路平面数据中,以线为单元存放数据,也需要给出各加密基标处的曲线超高,因此同样需要对数据进行处理。

在Visual LISP中分别在平纵断面数据文件和曲线超高数据文件中读取数据,以表类型(LIST)存储于内存中,依次以线路坡段或线为单元对数据进行处理,计算出各加密基标处的轨面高程或曲线超高。

3.2.1 竖曲线纵距计算

线路纵断面图中,在变坡点位置,一般只给出未考虑竖曲线时的设计高程。因此在轨道综合图中,轨面高程需考虑竖曲线修正值。

竖曲线纵距y计算公式如下[6,7]

式中 x——切线上计算点至竖曲线起点的距离,m; y——竖曲线纵距,m。

3.2.2 轨面高程计算

根据《地下铁道工程施工及验收规范(2003年版)》(GB 50299—1999)[8]的要求,直线上每120 m、曲线上每60 m和曲线起止点、缓圆点、圆缓点、道岔起止点等各设置1个控制基标,直线上每6 m、曲线上每5 m各设置1个加密基标[9]。为方便现场测量和施工,考虑在直线和曲线上均按每5 m设置1个加密基标,在每个基标处,进行轨道形位的放样。因此,轨道综合图中以5 m为间距,绘制出每个控制点处的轨面高程。

n个坡段上任意位置的轨面高程H计算公式如下

式中 H1H2、…、Hn——第n个坡段的终点高程,m;

S1S2、…、Sn——第n个坡段的终点里程,m

G1、G2、…、Gn——第n个坡段的坡度;

L1、L2、…、Ln——第n个坡段的长度,m

H、S——第n个坡段上任意位置的高程和里程;

y——第n个坡段上竖曲线范围内的纵距,竖曲线范围外为0。

计算得到的H为线路中心线的轨面高程,在平面曲线地段,根据对应的超高值计算出内外股钢轨的轨面高程。

3.2.3 曲线超高计算

平面曲线地段,按规范要求设置超高[10]。因此轨道综合图中需给出每个加密基标处的曲线超高值。

缓和曲线上任意位置的超高H计算公式如下

式中 Hm——圆曲线上的超高值,mm;

S0——直缓点或缓直点的里程,m

S1——缓圆点或圆缓点的里程,m

S——缓和曲线上任意位置的里程,m

3.3 绘制图形

轨道综合图包含2条线路(左右线或出入线)的设计高程、设计坡度、断链、曲线超高、竖曲线、钢轨顶面里程、钢轨顶面高程、轨道类型、横穿设备、百米标和平面等多栏。各栏均可由本程序完成绘制。

由于程序执行过程中存在大量的数据读写及图形绘制操作,为提高程序的执行速度[3],AutoLISP源代码文件(.lsp)将被编译成可执行机器代码文件(.fas)后提供给用户使用。

首先在新建AutoCAD空白文档加载程序后输入线路起终点里程,按程序设定好的图框各栏高度绘制铺轨图表格边框,然后依次读取生成好的数据文件,程序将按不同图元组码规则进行组码,进而在文档中快速生成相应的图形,最后完成图形的绘制。以轨面高程为例,在上述计算出各加密基标处的轨面高程后,以轨面高程值、坐标及文字样式等DXF形式的组码值完成文字(TEXT)组码,进而在AutoCAD文档中完成轨面高程的绘制。

4 程序详细设计

鉴于图纸绘制所需要的基础数据较多,且不同线别、不同类型数据之间均相对独立,例如左右线线路平纵断面、曲线超高、轨道结构类型及轨道附属设备等数据,可将这些数据分别存储在数据文件中,以提高数据之间的独立性;轨道综合图中各项内容也相对独立,在图纸绘制过程中可依次进行,因此可将图形绘制划分为多个功能模块,各个模块调用独立数据文件绘制图形(包括图框、平面示意、坡段、竖曲线、断链、曲线超高、轨面高程、轨道结构类型及轨道附属设备等)。

4.1 数据存储

轨道综合图辅助设计程序的基础数据文件及用途如表1所示。数据以表(LIST)的格式存储于文本文件中。以线路纵断面数据为例,其存储格式如表2所示。

表1 基础数据文件

序号数据文件说明1Plane_B.dat存储断链处理前的线路平面数据2Plane_A.dat存储断链处理后的线路平面数据3Profile_B.dat存储断链处理前的线路纵断面数据4Profile_A.dat存储断链处理后的线路纵断面数据5BrokenChain.dat存储线路断链数据6Station.dat存储车站数据7Turnout.dat存储道岔数据8Superelevation.dat存储曲线超高数据9Accessory.dat存储轨道附属设备数据10TrackStructure.xls存储轨道结构类型数据

表2 线路纵断面数据存储格式

序号起点里程终点里程坡长/m坡度/‰断链里程断链值/m1DK11+500000DK11+751000251-572DK11+751000DK12+6000008494945DK11+994439-55613DK12+600000DK12+8000002000

4.2 模块划分

轨道综合图辅助设计程序的主要程序模块及功能如表3所示。

表3 主要程序模块

序号模块名命令说明1GetPlanGPL获取线路平面数据2GetProfileGPR获取线路纵断面数据3InsertChainPlanICPL平面数据断链处理4InsertChainProfileICPR纵断面数据断链处理5DrawFrameDF绘制表格边框6DrawPlanDPL绘制线路平面7DrawProfileDPR绘制线路纵断面8DrawChainDC绘制断链9DrawStationDST绘制车站布置10DrawTurnoutDT绘制道岔布置11DrawSuperelevationDS绘制曲线超高12DrawRailLevelDRL绘制轨面高程13DrawTrackTypeDTT绘制轨道结构类型14DrawAccessoryDA绘制轨道附属设备

4.3 图形绘制实现

轨道综合图包含的线路平面、线路纵断面、断链、曲线超高、轨面高程、轨道结构类型、轨道附属设备、百米标里程和加密基标里程等数据,应根据不同线别分别绘制且布局合理。结合既有线路的设计及工程应用经验,轨道综合图按左右线或出入线上下分别布置,其各栏相对位置和高度一致。绘制完成的轨道综合图布局示意如图1所示。

图1 轨道综合图布局示意

在新建AutoCAD空白文档依次读取生成好的数据文件,程序将按不同图元组码规则进行组码,进而在文档中快速生成相应的图形,最后完成图形的绘制。

绘制图形的程序流程如图2所示。

图2 图形绘制程序流程

5 程序编码[11]

5.1 Dat文件操作方法[12,13]

下面以Dat文件操作为例,列出写入和读取数据的实现代码。

5.1.1 文件写入

(defun WriteFile (Sections@ / FileName%

FileDes* Item#)

(setq FileName% (getfiled 'Please enter the file

name: \n' '' 'dat' 1))

(setq FileDes* (open FileName% 'w'))

(foreach Item# Sections@

(write-line Item# FileDes*)

);foreach

(close FileDes*)

);defun

5.1.2 文件读取

(defun ReadFile (Sections@ / FileName%

FileDes* LineValue%

SectionsTemp#)

(setq FileName% (getfiled 'Please cloose the

data file:\n' '' 'dat' 0))

(setq FileDes* (open FileName% 'r'))

(setq Sections@ nil)

(while (setq LineValue% (read-line FileDes%))

(setq SectionsTemp# (read LineValue%))

(setq Sections@ (cons SectionsTemp#

Sections@))

);while

(setq Sections@ (reverse Sections@))

(close FileDes%)

);defun

5.2 Excel文件操作方法[14,15]

下面以Excel文件操作为例,列出读取数据的实现代码。

(defun GetCellValueAsList( / FileName%

SheetName% RangeStr% App$

WorkBooks$ WorkBook$ Sheets$

Sheet$ Range$ Value^ Value@

ConvertValue@)

(vl-load-com)

(setq App$ (vlax-get-or-create-object

'Excel.Application'))

(setq WorkBooks$ (vlax-get-property

App$ 'WorkBooks'))

(setq WorkBook$ (vlax-invoke-method

WorkBooks$ 'open' FileName%))

(setq Sheets$ (vlax-get-property

WorkBook$ 'Sheets'))

(setq Sheet$ (vlax-get-property Sheets$ 'Item'

SheetName%))

(setq Range$ (vlax-get-property Sheet$ 'Range'

RangeStr))

(setq Value^ (vlax-get-property Range$ 'Value))

(setq Value@ (vlax-safearray->list

(vlax-variant-value Value^)))

(setq ConvertValue@ (vlxls-variant->list

Value@))

(vlax-invoke-method WorkBook$ 'Close'

:vlax-true)

(vlax-invoke-method AppObj$ 'Quit')

(vlax-release-object AppObj$)

ConvertValue@

);dufun

6 结语

基于Visual LISP集成交互式开发环境利用AutoLISP语言对AutoCAD进行二次开发,阐述了轨道综合图辅助设计程序开发的主要思路及流程。

本程序在Visual LISP中直接访问线路图图形数据库,以获取线路平纵断面有效数据,并存储于文本文件中,再对原始数据文件进行插入断链处理后,形成最终的线路平纵断面数据,存储于文本文件中。

AutoLISP源代码文件被编译成可执行机器代码文件后提供给用户使用。用户在加载程序后输入线路基础参数,自动完成表格边框的绘制,然后依次读取数据文件,程序将按不同图元组码规则进行组码,进而生成相应的图形,最后完成图形的绘制。

本程序已经在北京、广州、南京等城市轨道交通中应用,得到了实际工程的检验,大大提高了轨道综合图绘制的准确性和高效性,取得了良好的效果。

参考文献:

[1] 刘大园,姚力,巫江.基于AutoCAD.NET的地铁铺轨综合设计图软件开发[J].铁路计算机应用,2013,22(11):36-39.

[2] 黄秀琴.基于Visual Lisp的AutoCAD2000的二次开发研究[J].常州工学院学报,2002,15(4):4-7.

[3] 赵景亮,李志刚. AutoCAD 2004与AutoLISP二次开发技术[M].北京:清华大学出版社,2004.

[4] 郭秀娟,于全通,范小鸥. AutoLISP语言程序设计[M].北京:化学工业出版社,2008.

[5] 李学志. Visual LISP程序设计[M].北京:清华大学出版社,2010.

[6] 易思蓉.铁道工程[M].北京:中国铁道出版社,2011.

[7] 李成辉.铁路铁道[M].北京:中国铁道出版社,2010.

[8] 中华人民共和国住房和城乡建设部.GB50299—1999地下铁道工程施工及验收规范(2003年版)[S].北京:中国计划出版社,2004.

[9] 中华人民共和国住房和城乡建设部.GB50308—2008城市轨道交通工程测量规范[S].北京:中国建筑工业出版社,2008.

[10]中华人民共和国住房和城乡建设部.GB50157—2013地铁设计规范[S].北京:中国建筑工业出版社,2014.

[11]二代龙震工作室. AutoCAD LISP/VLISP函数库查询辞典[M].北京:中国铁道出版社,2003.

[12]刘喜平.基于AutoLISP的AutoCAD二次开发技术[J].机械制造与自动化,2011(4):128-129.

[13]陈伯雄,冯伟. Visual LISP程序设计:技巧与范例[M].北京:人民邮电出版社,2002.

[14]周乐来,马婧. AutoCAD 2008 Visual LISP二次开发入门到精通[M].北京:机械工业出版社,2008.

[15]梁雪春. AutoLISP实用教程[M].北京:人民邮电出版社,1998.

Aided Design Program Development for Metro Track Comprehensive Drawing Based on Visual LISP

WU Kai-wei, SHI Wei-quan

(China Railway Engineering Consulting Group Co., Ltd., Beijing 10055, China)

Abstract:In order to meet the requirements of the design of metro track comprehensive drawing, AutoLISP language is used for the secondary development of AutoCAD based on the basic theory of track structure under Visual LISP integrated development environment so that the computerized program is developed to fulfill information auto-processing and element auto-drawing with respect to railway line plane, railway line profile, chain breaking, rail surface elevation, track structure and track auxiliary equipment. The practical results show that the program is simple, stable, accurate and effective in the design of track comprehensive drawing.

Key words:Visual LISP; AutoCAD secondary development; Metro; Track; Comprehensive drawing

收稿日期:2016-09-25;

修回日期:2016-10-19

作者简介:吴凯伟(1986—),男,工程师,2011年毕业于西南交通大学,工学硕士,E-mail:wukaiwei2004@163.com。

文章编号:1004-2954(2017)05-0027-05

中图分类号:U239.5;U213.2

文献标识码:A

DOI:10.13238/j.issn.1004-2954.2017.05.006

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多