利用
AutoLisp
、
Microsoft VBA
程序语言实现
批量生成断面图及断面电子表格数据
蒋济飞
赵新萍
(广西第二测绘院
广西柳州
545006
)
【摘
要】
本文主要讨论如何利用
AutoCAD
的二次开发语言
AutoLisp
和
Excel
中的
Microsoft VBA
语
言技术,利用地形图上的高程点数据批量生成断面图和断面数据表格。
【关键字】
断面图
AutoLisp Microsoft VBA
1
引言
Visual Basic
作为一个集成的开发环境,能够使
AutoCAD
数据与其它的
Visual Basic
应用程序,如
Microsoft Excel
软件,直接共享,实现无缝连接,交换数据。
在没有专业软件辅助的情况下,绘制纵横断面图是很繁琐的事,需要进行大量的、重复的操作,既劳
神,又容易出错。我们在完成老挝南塔河
1#
水电站进站道路测绘项目中,利用地形图上的高程点数据,通
过
Auto Lisp
、
Visual Basic
编程建立
AutoCAD
与
Excel
的通信,实现数据交换,快速绘制公路纵横断面
及相关成果表,大大的提高了工作效率。
2
应用程序的开发
在实现对地形图上的高程点数据批量生成断面图和断面数据表格处理的程序代码编写过程中,主要分
以下步骤:
(
1
)注记纵、横断面交点的里程和高程并生成纵断面曲线,输出断面数据。
首先我们取得纵断面线折点的坐标集合(
XY-List
)。如果纵断面线图元为
LWPOLYLINE
,则只要依次
取出纵断面线图元数据中群码为
10
的数据即可;如果纵断面线图元为
POLYLINE
,则只要依次取出纵断面
图元之后
SEQEND
之前的所有
VERTEX
图元数据中群码为
10
的数据即可。
取得纵断面线上所有高程点和横断面图元。代码如下:
(
SETQ ALL-DATA
(
SSGET "F" XY-List '
((
-4 . "
)
(
-4 . "
)(
0 . "INSERT"
)(
8 . "GCD"
)(
-4 . "and>"
)
(
-4 . "
)(
0 . "*POLYLINE"
)(
8 . "DM"
)(
-4 . "and>"
)
(
-4 . "or>"
))))
取得高程点和横断面图元数据之后,
对数据进行区分。
如果是
INSERT
图元,
则取得其插入点
XYZ
坐标,
存入纵断面坐标数据表
(
ZDM-XYZ-List
)
中;
如果是线型图元,
则存入横断面图元数据表
(
HDM-Entity-List
)
中。
求得纵、横断面的交点,并生成一个表。
Autolisp
给我们提供了一个求线段交点的函数(
INTERS <
线
段
1
起点
> <
线段
1
终点
> <
线段
2
起点
> <
线段
2
终点
> [
实体相交标记
]
),我们就利用这个函数求得纵断
面与所有横断面交点的坐标表(
JD-XY-LIST
)。代码如下:
(
setq jd-xy-list
(
list
));
_
初始化交点坐标表
(
setq BEI-xy-list XY-List
);
_
生成一个备用的中线二维坐标表
(
setq i 0
)
(
repeat
(
length HDM-Entity-List
)
(
setq dm-entity
(
nth i HDM-Entity-List
));
_
取出第
i+1
个横断面



