| 摘要:本文阐述了监理在工程计量中,通过编制一个简单的Visul Basic程序,将横断面数据转换成绘制横断面图的脚本文件,在AutoCAD中调用该脚本文件,从而实现自动绘制横断面图的方法。论文关键词:横断面,脚本文件,数据文件格式,程序
 1、  横断面数据的输入 1.1数据的采集 数据的采集是断面测量的第一步,是断面测量的基础。其常规方法有:经纬仪视距法、钢尺量距水准测定高程法和全站仪测量,但经纬仪视距法比后面两种方法测量精度较低。全站仪是测量断面最理想的工具,它不仅可以测量角度、距离、坐标,带内存的全站仪还可以进行数据存储、通讯,而且精度高、效率高。 1.2数据文件的格式 数据文件是计算机编程绘图的依据,它的格式是根据程序需要设计为便于计算机工作 的一组数据块。无论采取哪种测量方法,其最终编辑成数据文件的格式是固定的。本文阐述的程序所需要的数据文件格式与横断面数据成果表对照如下: 横断面数据成果表 *.txt数据文件格式 桩号 距中距离 高程 -20.5,84.5 -10,84.3 0,80 8.2,75.6 e        (表示这一条结束) 0,80      (表示中桩位置) 0+000    (表示桩号) ……      (下一条同上) 0+000 -20.5 84.5 -10 84.3 0 80 8.2 75.6 横断面数据如果是全站仪采集并存储,则可编一个简单的转换程序把从全站仪传输到电脑中的数据转换成上面数据文件的格式。 2、  脚本文件的生成 编程思路:对横断面数据文件进行“读”操作,获得绘制横断面的数据。根据这些数据对脚本文件进行“写”操作,先画横断面线,再对横断面线进行高程标注、尺寸标注、中桩位置标注以及桩号注记,然后对下一条横断面数据进行操作。源程序代码如下: Private Sub Command3_Click() Open Text1.Text For Input As #1(打开横断面数据文件,以顺序读出其中数据) Open Text2.Text For Output As #2(打开脚本文件,以顺序写入数据) Dim ch As Integer Dim zhuanghao As String, n As Integer, m As Integer Dim juli As String, gaocheng As Single, min As Single, i As Integer, j As Integer, position As Integer Dim array1(1 To 500) As Single, array2(1 To 500) As Single(以上为定义变量) Let i = 1 Print #2, 'pline' Do Until EOF(1) Input #1, juli, gaocheng If juli <> 'e' And juli <> 'E' Then array1(i) = Val(juli) array2(i) = gaocheng i = i + 1 Write #2, Val(juli), gaocheng (以上判断一条横断面数据是否结束,如没结束,则对脚本文件继续进行写操作) ElseIf  juli = 'e' Or juli = 'E' Then position = Seek(1) Seek #1, position - 1(设置读出数据文件的位置) min = array2(1) For j = 2 To i - 1 If min > array2(j) Then min = array2(j) Else min = min End If Next j (以上通过for...to循环语句,获得这条横断面数据高程的最小值) Input #1, juli, gaocheng Input #1, zhuanghao Write #2, Print #2, 'line' Write #2, Val(juli), gaocheng + 2 Print #2, '@0,4' Write #2, Print #2, 'text' Write #2, Val(juli) + 0.2, gaocheng + 4.5 Write #2, 0.6 Write #2, 0 Print #2, '中' Print #2, 'text' Write #2, Val(juli) + 0.2, gaocheng + 3.5 Write #2, 0.6 Write #2, 0 Print #2, '桩'(以上标注中桩位置) Print #2, 'text' Write #2, Val(juli) - 0.5, min - 7 Write #2, 0.6 Write #2, 0 Print #2, zhuanghao Print #2, 'line' Write #2, Val(juli) - 0.5, min - 7.2 Print #2, '@2.5,0' Write #2, Print #2, 'line' Write #2, Val(juli) - 0.5, min - 7.4 Print #2, '@2.5,0' Write #2, (以上注记桩号) For j = 1 To i - 1 Print #2, 'pline' Write #2, array1(j), array2(j) Print #2, '@-0.4,0.693' Print #2, '@0.8,0' Print #2, 'Close' Print #2, 'text' Write #2, array1(j) + 0.45, array2(j) + 0.793 Write #2, 0.5 Write #2, 0 Write #2, array2(j) Next j(以上标注横断面线各拐点高程) Print #2, '_dimaligned' If array1(1) <> array2(2) Then Write #2, array1(1), min - 2 Write #2, array1(2), min - 2 Print #2, '@0,-2.5' n = 2 Else Write #2, array1(1), min - 2 Write #2, array1(3), min - 2 Print #2,  1/2    1 2 下一页 尾页 |