Visual Basic和AutoCAD在水文图线绘制中的应用

2021-07-13 04:36许杰
科技创新导报 2021年36期
关键词:水文

作者简介:许杰(1989—),男,本科,工程师,主要从事水文测验整编及测量工作。

摘  要:水文图形标准化要求较高,样式很多,包括断面图、水位流量关系线图,以及每月的水位过程、流量过程等图形。传统手工绘制节点较多,工作量大且容易出错,水文图线的自动绘制及图形存储是水文工作中的难点。本文利用Visual Basic编制界面友好、操作方便的图线自动绘制程序程序,将绘制图形的参数自动转换成AutoCAD中所需的坐标数据组和格式,在AutoCAD相应的模板中批量展点和识别,从而快速地绘制出水文各类图形,提高工作效率和准确率,实现水文绘图工作无纸化。

关键词:Visual Basic  AutoCAD  水文  图形绘制

中图分类号:P25

DOI:10.16660/j.cnki.1674-098X.2201-5640-2097

Abstract: The standardization requirements of hydrological graphics are high, and there are many styles, including section diagram, water level and flow relationship diagram, monthly water level process, flow process and other graphics. The traditional manual drawing has many nodes, heavy workload and easy to make mistakes. The automatic drawing and graphic storage of hydrological map line are the difficulties in hydrological work. In this paper, Visual Basic is used to compile an automatic drawing program with friendly interface and convenient operation. The parameters of drawing graphics are automatically converted into the coordinate data group and format required in AutoCAD, and the points are displayed and identified in batch in the corresponding template of AutoCAD, so as to quickly draw various hydrological graphics and improve work efficiency and accuracy, Realize paperless hydrological mapping.

Key Words: Visual Basic; AutoCAD ; Hydrology; Graphic drawing

随着计算机技术的发展,水文数据已进入现代化信息管理时代,雨量、水位、流量等均可通过软件进行整汇编,大大减轻了工作量。但是大断面、水位过程线、水位流量关系线等水文图线却仍以手工绘制为主,并作为原始档案进行存贮。采用手工绘制,费工费时,点绘过程中极易出错,在每年的各级资料审查过程中,审核工作量巨大,而且档案存贮、查询及应用极不方便[1]。

AutoCAD是由美国Autodesk(欧特克)公司开发的自动计算机辅助设计软件,可以使用它来创建、浏览、管理、打印、输出、共享及准确应用富含信息的设计图形。利用AutoCAD强大的绘图功能,逐渐用高效率、高精度的CAD绘图技术替代传统的水文绘图工作优势明显[2]。由于水文图形样式很多,水文图形数据与CAD绘图坐标比例的转换较为繁琐,利用Visual Basic编制绘图程序,可以大大简化数据转换工作。下文以绘制实测大断面图为例,说明Visual Basic和CAD绘制水文图形的方法[3]。

1 绘制底图

在AutoCAD中,所有绘制的对象物体都是绘制在各自图层上,在图层之上可以分别存放各种不同的绘图信息,并且可以极其便捷地对这些图层进行编辑、删除并且不影响其他图层数据。故为了便于图形标准化绘制、管理及保存,需在CAD中建立不同图层,绘制厘米格纸作为底图,同时根据拟绘制图形的要求进行标注[4]。

1.1 图层设置

根据实际需要设置五十分线、五分线、厘米线、网格线、轴线等若干图层,同时根据年份测次设置不同断面图层,便于管理和修改。各土层线型采用默认,线宽及颜色设置如下。

五十线:线宽0.30mm,颜色134(索引),RGB(0,153,153)。

五分线:线宽0.13mm,颜色4(索引),RGB(0,255,255)。

厘米线:线宽0.20mm,颜色132(索引),RGB(0,204,204)。

网格线:线宽0.05mm,颜色4(索引),RGB(0,255,255)。

軸线:线宽0.05mm,颜色255(索引),RGB(255,255,255)。

1.2 确定坐标原点

绘制好底图之后,利用“ucs”命令指定坐标原点。具体方法是:直接输入“ucs”回车,“N”回车,然后在屏幕上点击底图左下角点即可。

1.3 绘制厘米格纸

选择“5厘米”图层,勾选“正交”,选择“工具”菜单-“画直线”-“线段”,然后输入“0,0,0”回车,再输入“75”回车,这样得到一个长度为75cm的水平直线。右键重复直线,选择直线左端点鼠标稍向上移输入“50”回车。使用偏移或者阵列命令绘制图线,其他间距的网格线用同样的方法便可简单完成,将不同层的方格网制成后,在同一窗口打开就得到了一张完整的底图。

1.4 确定比例、绘制坐标轴、图例等

按照水文整编规范要求确定起点距、高程的比例和曲线位置,结合总体图线布局合理、美观,然后选择“坐标轴”图层,在合适位置繪制坐标轴,利用文字工具进行比例标注。在同一窗口打开各图层就得到了一张完整的底图。

2 程序设计与实现

利用Visual Basic简易的操作界面和强大的数据处理功能将起点距、高程等数据进行处理,并根据设定的坐标比例和断面在图纸上的位置进行比例换算,从而得到CAD软件能够识别的数组[5]。

2.1 程序界面

程序主要由数据转换、信息录入和图形展示3个部分组成。“数据转换”中录入需绘制的断面数据,包括起点距和高程,同时能显示转换后的CAD坐标数据。信息录入包括断面信息、图形尺寸、参数录入和说明4项,其中“断面信息”包括断面图的测站和日期、测次,方便断面图数据中数据库中的保存和提取;“图形尺寸”根据水文常用图纸分为35cm×50cm和50cm×75cm,可在绘图时进行选择;“参数录入”包括拟绘制图形的原点坐标和坐标比例尺;“说明”则是对4项录入参数的解释说明,方便操作者理解。图形展示则可以在断面数据和转换参数录入后生成断面图,可以直观地展示断面绘制的成果,同时也方便参数的调整。程序运行界面如图1所示。

2.2 转换原理

数据的处理要以CAD图纸中原点坐标的定位为基础,根据绘制的断面样式,选择确定转换参数“原点坐标”和“比例尺”。

“原点坐标”分为起点距和高程两部分,为设置米厘格纸坐标轴原点的图上坐标,如上图原点坐标为(-5,-1)。

“比例尺”也分为起点距和高程两部分,为设置米厘格纸中5cm(一大格)代表的图上起点距(或高程)的长度,如上图起点距和高程的比例尺分别为5和1。

在CAD底图绘制中,原点坐标为(0,0),CAD底图中50为图上5cm,将断面图数据转换成CAD绘图数据,即图形坐标(起点距,高程)转换为CAD坐标(X,Y)。假设断面图零点位置坐标为(A0,B0),起点距和高程比例尺分别为m、n,断面起点距、高程数据为(A,B),转换成CAD坐标为(X,Y),则:

X=(A×(50/m))-(A0×(50/m))

Y=(B×(50/n))-(B0×(50/n))

2.3 代码实现

程序主要包括绘图、转换CAD数据和保存数据3个模块,具体示例如下。

2.3.1 绘图模块

录入断面数据和转换参数后,点击“绘图”按钮,即可在图形展示界面查看图形绘制成果,主要使用的是MSChart控件,图形设置为二维散点图,主要代码为(以50×75为例):

'设置图形的外观及网格

MSChart1.ChartType = VtChChartType2dXY

With MSChart1

.Plot.SeriesCollection(1).Pen.Width = 40

.Plot.SeriesCollection(1).Pen.Style = VtPenStyleSolid

.Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 15

.Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 10

.Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 5

.Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 5

End With

'绘制图形

MyData(i, 0) = Val(Flex1.TextMatrix(i + 1, 1))

MyData(i, 1) = Val(Flex1.TextMatrix(i + 1, 2))

MSChart1.ChartData = MyData

3.3.2 转换模块

将断面数据转换成CAD绘图数据,并在数据转换表格中显示,主要代码如下:

Flex1.TextMatrix(o, 3) = Format(Flex1.TextMatrix(o, 1) * (50 / Val(Txt10.Text)) - Val(Txt3.Text) * (50 / Val(Txt10.Text)), "0.0")

Flex1.TextMatrix(o, 4) = Format(Flex1.TextMatrix(o, 2) * (50 / Val(Txt11.Text)) - Val(Txt4.Text) * (50 / Val(Txt11.Text)), "0.00")

3.2.3 保存模块

经数据转换后,得到的是CAD坐标数据,而CAD展图需要的数据为dat文本数据,主要格式为(序号,,X,Y,Z),本功能根据上述转换的CAD坐标数据生成能供CAD读取的dat文本文件,主要代码为:

'将表格中的序号、X、Y三列数据存入数组

For i = 2 To d + 1

a(i) = Flex1.TextMatrix(i, 0)

x(i) = Flex1.TextMatrix(i, 3)

y(i) = Flex1.TextMatrix(i, 4)

Next i

'将数组数据以固定格式存入dat文件中

Open App.Path & "CAD展点.dat" For Output As #1

Print #1, a(2) & ","; "l"; ","; x(2) & ","; y(2) & "," & "0"

For i = 3 To d + 1

Print #1, a(i) & ","; "+"; ","; x(i) & ","; y(i) & "," & "0"

Next i

Close

4 图形绘制与输出

利用软件将断面数据经转换生成dat数据后,只需打开前述绘制的底图,点击“绘图处理”“简码识别”,再选中生成的dat数据,断面图便完成了绘制,只需要将绘制的断面图线编入之前新建的图层即可。

AutoCAD不仅允许将所绘图形以不同样式通过绘图仪或打印机输出,还能够将不同格式的图形导入AutoCAD或将AutoCAD图形以其他格式输出,如JPG格式、PDF格式等,如图2所示。因此,当图形绘制完成之后可以使用多种方法将其输出[6],可以将图形打印在图纸上,也可以创建成JPG或PDF文件以供其他应用程序使用。

5 结语

利用Visual Basic和CAD进行数据转换并绘制图形,还可用于水流线、水位过程等水文图形的绘制。本程序采用良好的人机交互界面,利用了VB和CAD的良好耦合性,大大提升了在站整编的工作效率,减少了差错率和工作量,能够提供美观、整洁的成果,并提高成果的递送、保存、查询、对照等便捷实用性。利用VB和AutoCAD绘制水文图形在本队已得到了较广泛的应用,并取得了良好的效果。

参考文献

[1] 王静,岳成鲲,杨钊,等.山东黄河水文曲线系统的开发及应用[J].人民黄河,2018,40(4):5-8.

[2] 陳浩,岁秀珍,虞献军,等.利用ObjectARX.NET技术的地下管线成图及属性管理软件的实现及应用[J].测绘地理信息,2021,46(6):150-153.

[3] 赵祥岍,于洋,陈定超.基于VB的AutoCAD自动绘图技术在隧道工程中的应用[J].山西建筑,2019,45(11):193-194.

[4]司萌,余霞,李登峰,等.基于VB的电机冲片图形自动绘制技术[J].机械设计与制造,2019(9):176-180.

[5]程相琛,郭进平,李角群,等.基于Auto CAD的三维巷道可视化建模及应用[J].采矿技术,2021,21(6):150-154.

[6]徐利丽,邬京虹,夏栋.建筑CAD与建筑工程制图的融合——评《建筑CAD》[J].建筑结构,2021,51(13):153.

猜你喜欢
水文
继往开来 守正创新——河北省水文工程地质勘查院
水文
水文水资源管理
水文