Autolisp语言二次开发AutoCAD与市政道路常用图的快速绘制的研究

2018-08-18 05:46高会刚
城市道桥与防洪 2018年8期
关键词:环境变量设计图横断面

高会刚

(上海市城市建设设计研究总院(集团)有限公司,上海市200125)

0 引言

市政道路常用图中的《路面结构图》、《侧缘石安装大样图》、《路面搭接设计图》及《道路横断面设计图》,目前大多由设计人员手工绘图。且前三个设计图关联程度较高,路面结构的调整往往涉及到三张图纸的全部改动。另在市政片区路网建设前期工作中,路网道路分主干路、次干路、支路,纵横交错,不同的片区功能要求,不同的道路等级,甚至不同的走向道路,对道路横断面有不同要求,因而道路横断面方案的对比研究成为关键问题。快速专业绘制多个横断面与建设方沟通研究成为决定项目可行性的重要过程,也是一个设计院专业水平的综合体现。

基于上述现实情况及目前专业软件的空缺功能,本文主要通过对程序及子程序中的主要功能的使用方法的演示,来介绍如何利用Autolisp语言,对AutoCAD进行二次开发编程,将上述图纸所需的参数以对话框形式呈现于设计者,而将繁琐耗时的绘图留给计算机来完成的实现路线,以供同行参考。

1 程序总体规划

1.1 编程语言与环境

目前设计公司的主要设计绘图软件为AutoCAD。而Autolisp语言作为AutoCAD的内嵌语言,具有语法简单、快速编译、调用AutoCAD内部命令方便、debug便捷,以及编译界面友好等特点。故选择Autolisp为编程语言,在AutoCAD环境下进行二次开发。

1.2 程序总体流程规划

程序提供参数输入集成对话框,设计者完成参数输入修改后,选择所需绘制图纸,点击确定,计算机完成绘图,参见图1。

1.3 程序及所需主要子程序分析

1.3.1 对话框程序

此程序主要实现提供友好的交互界面(见图1(step·1)参数输入),方便设计者输入相关参数。此程序需要以下子程序:

(1)参数输入对话框子程序:可由DCL(对话框控制语言)进行编译,该语言同样集成在AutoCAD中,语法较Autolisp更为简单。

(2)显示SLD图像子程序:主要解决横断面图的SLD图显示,为设计者提供必要的参考。

(3)参数与环境变量初始化子程序:主要解决AutoCAD的DCL对话框默认无记忆功能的问题。

图1 程序流程图

(4)对称断面控制输入子程序:主要解决横断面图对称时参数的输入,先显断面右侧输入对话框,并令右侧数据与左侧数据一致。

(5)将环境变量赋值与对话框子程序:主要解决将对应的环境变量的值赋与对话框的相对应参数。

1.3.2 对话框参数取值程序

将DCL对话框中的参数转换提取为后续绘制程序所需的格式。

1.3.3 路面结构图绘制程序

此程序需要完成的步骤为依据层名称与厚度绘制每一层的box、厚度的标注、层名的注释文本、不同结构层的填充,见图2。

图2 路面结构图(单位:cm)

1.3.4 侧缘石安装大样图绘制程序

此程序需要完成的步骤为依据路面结构参数、侧缘石参数,依次绘制出侧缘石安装细部并标注尺寸宽度、路面结构层的绘制与注释,见图3。

图3 侧石安装细部图(单位:cm)

1.3.5 路面搭接设计图绘制程序

此程序需要完成的步骤为依据路面结构参数完成路面搭接绘图、路面结构层的绘制与注释,见图4。

图4 路面搭接设计图(单位:cm)

1.3.6 道路横断面图绘制程序

此程序需要完成的为依据绿化带宽度、侧分带宽度、人行道宽度与横坡坡度、非机动车道宽度与横坡坡度、车行道宽度与横坡坡度,中央分隔带宽度、侧缘石的规格尺寸及外露高度等参数,绘制道路横断面图,并标注路幅宽度及文本注释,见图5。

图5 道路横断面图(单位:m)

1.3.7 其他子程序

这里需要说明的是程序绘图按照cm为单位1:1进行绘图,通过布局视口布置,标准A3按比例出图。根据上海市城市建设设计研究总院的制图要求,需用指定的字体,字高,因而字体高度、标注样式的全局比例等需要根据不同的图定制。

2 程序编译

2.1 公用子程序分析

在“程序及所需主要子程序分析”一节中,可以看到关于路面结构绘制的子程序在路面结构图、侧缘石安装大样图、路面搭接设计图中都会使用。人们可以在编译中,对路面结构图绘制程序增加控制box宽度参数、层名注释位置参数,并将此子程序的编译实现最大化的利用。

对于各个公共子程序的分析会在下节“主要子程序的编译”中详细分析。通过拆解各个设计图的绘制子程序的研究分析,编译公共子程序,提高程序的适用性。

2.2 主要子程序的编译

根据程序的整体交互流程及子程序的功能,将程序的子程序分为录入部分(即参数的输入);提取部分(即从对话框将使用者的输入值统一提取);绘制部分(即利用提取的参数值进行绘图)。

2.2.1 录入部分

2.2.1.1 参数输入对话框子程序

参数输入对话框子程序主要利用的为DCL语言 , 主 要 通 过 对 column、row、boxed_column 及boxed_row等排列函数的组合运用,完成集成对话框,为使用者提供友好的输入界面。

2.2.1.2 显示SLD幻灯子程序

在“参数输入对话框子程序”中,人们使用了image函数。需要说明的是image函数仅仅是在对话框中布置了一个图像的位置及大小,需要将图像显示出来则需要配合子程序,即显示SLD幻灯子程序,见图6。

图6 CAD界面

2.2.1.3 参数与环境变量初始化子程序

AutoCAD的DCL对话框默认无记忆功能,因此需要解决对话框的记忆问题,可以通过不同方法来实现。这里是介绍利用AutoCAD环境变量的方法来实现对话框记忆功能。因AutoCAD本身的问题,环境变量超过一定数量后不能与对话框函数同时进行,否则会报错崩溃,该程序需要输入77个参数,故增加此子程序。

通过if语句,生成环境变量并预设初始值。

2.2.1.4 对称断面控制输入子程序

道路横断面一般为对称断面,为方便参数输入,增加对称控制。此子程序系主要配合DCL中的toggle函数,根据toggle的key值判断是否对称输入。

2.2.1.5 环境变量赋值与对话框子程序

主要负责提取环境变量并赋值给对话框内的相应参数。

至此,程序所需的参数录入部分的主要程序已完成。

2.2.2 提取部分-对话框参数取值程序

DCL对话框中的参数的类型为字符串,另该程序以cm为单位,比例1:1绘图,因此对话框参数取值程序需要解决从对话框将字符串转换、判断参数输入是否有误、根据对话框输入参数时的单位进行转换及将新的参数值储存于相应的环境变量内。

2.2.3 绘制部分

2.2.3.1 标注子程序

此子程序含有三个参数分别为Gpt(标注位置)、Gpta(标注起点)、Gptb(标注终点)。通过entmake函数可以利用图元定义数据表方便快捷地创建CAD对象。其中,(50.1.5708)为垂直标注,无此项为水平标注。

2.2.3.2 box绘制子程序

此子程序需根据层的名称及厚度绘制对应的路面结构图。为保证绘图效率及准确性,对于层名及厚度的数据使用list格式:((第1层名称4)(第2 层名称 6)(第 3 层名称 8)...)。

2.2.3.3 侧缘石绘制子程序

侧石、缘石及平石的参数类似,即长×宽×高,外露高度,倒角半径。因此子程序的参数可以为长、宽、高、外露高度,程序的主要解决点在于控制绘制起始点为侧缘平与路面的交点处,通过几何关系完成其余代码。

2.2.3.4 侧石安装细部图绘制子程序

此子程序主要解决的问题为根据侧石、平石、垫层厚度及相应的路面结构层厚的几何关系绘图。

2.2.3.5 道路横断面图绘制子程序

不同的道路断面,组成部分也不尽相同,程序的难点在于如何解决这个问题。在这里,笔者提供的解决方案为提供统一模板(如图(step·1)参数输入中的横断面示意图),通过设置相应的部分的宽度来控制是否绘制。

3 结论

本文通过对市政道路常用图纸的绘制程序的具体分析与介绍,其研究结论如下:

(1)《路面结构图》、《侧缘石安装大样图》、《路面搭接设计图》及《道路横断面设计图》通过编程可以实现计算机绘图,效率提升。

(2)设计图中的标注样式、字体样式、字体高度、注释文本的行间距等均在程序内设置,图面整齐。

(3)横断面图中涉及到的车、人、树、灯杆等素材,可根据设计公司的要求自行定制,形成自有特色的体系图。

(4)程序中关于填充样式的子程序目前还不能解决全部种类的自动填充,需进一步学习研究。

猜你喜欢
环境变量设计图横断面
太庙历史文化展设计图、非洲木雕展设计图
从桌面右键菜单调用环境变量选项
彻底弄懂Windows 10环境变量
设计图失窃案
市政道路横断面设计要点分析
西夏的“炮”设计图
广州市健康体检人群种植修复情况的横断面研究
基于三阶段DEA—Malmquist模型的中国省域城镇化效率测度及其收敛分析
2014年某院医院感染横断面调查
中医院医院感染横断面调查分析