时间:2022-09-09 07:20:40
【摘要】测量业内人员都要涉及到绘图,尤其是三维施工,由于物理点过多,批量绘图尤其显得重要,我们可以有两种方法来实现对物理点的绘图,一是用脚本,也就是用autocad能够识别的由AutoCAD命令及参数组成的文本,此方法需要非常了解AutoCAD命令及参数的格式,不能够错一点,但对于大量的数据却不好组织。另一个方法就是用AutoCAD自带的VBA内置程序进行编程处理,这种方法的好处是程序一旦编制完成,数据的整理就变得很简单。
【关键词】AutoCAD 圆 线 多段线
1 前言
测量AutoCAD图的制作并不复杂,无非是数据量大一些,所绘制的对象不是很多。一般对三维来说,只要能够用程序绘制出圆、线和文本,就可以绘制测量所需要的任何图形。下面,我们将给出这三种图形绘制的子程序,然后,我们再讨论如何调用这些程序。
2 圆的绘制
2.1 程序代码
Sub Myself_AddCircle(x As Double,y As Double,h As Double,r As Double,ObjColor As Integer)
Dim circleObj As AcadCircle
Dim centerPoint(0 To 2) As Double Dim radius As Double
centerPoint(0) = x: centerPoint(1) = y: centerPoint(2) = h radius = r
Set circleObj = ThisDrawing. ModelSpace.AddCircle(centerPoint,radius)
circleObj.color = ObjColor
End Sub
2.2 程序说明
这个子程序需要5个变量,分别为x、y、h、r、objcolor,x、y、h是圆所需要的原点三维坐标,也就是东、北、高程。r为半径,objcolor是颜色,请注意数据类型都是双精度。
程序主体首先设置一个对象circleObj,其对象类型为AcadCircle。
然后定义三个数组变量centerPoint,其实指的就是原点三维坐标最后定义半径变量数据类型radius。
Set circleObj = ThisDrawing.ModelSpace. AddCircle(centerPoint,radius)这句就是告诉程序开始绘制圆,circleObj.color = ObjColor给出了绘制圆的颜色。
3 线line命令的运用
线的粗细由线宽控制,线的宽度不随着图形的大小变化,如果图形变得很小,整个图像将看不清楚。
Sub Myself_Line(x1 As Double,y1 As Double,h1 As Double,x2 As Double,y2 As Double,h2 As Double)
Dim aline As AcadLine
Dim startPoint(0 To 2) As Double
Dim endPoint(0 To 2) As Double
startPoint(0) = x1
startPoint(1) = y1
startPoint(2) = h1
endPoint(0) = x2
endPoint(1) = y2
endPoint(2) = h2
Set aline = ThisDrawing.ModelSpace. AddLine(startPoint,endPoint)
aline.Update
End Sub
这个子程序需要6个变量,分别为x1、y1、h1、x2、y2、h2,x1、y1、h1是直线一端所需要的原点三维坐标,也就是东、北、高程,x2、y2、h2是直线一端所需要的原点三维坐标,请注意数据类型都是双精度。
4 子程序的调用
下面我们给出具体调用的办法,假如我们绘制炮点需要用一个x来表示,我们就需要用两条相交45度的角的线段来绘制。首先我们已经知道x中点的坐标,这就要求我们求取四个顶点的坐标,其实另外四个点在同一个圆上,我们只要知道这个x图形的半径就可以求取另外四个点的坐标,下面我们给出具体程序。
x1 = Station_x + x的半径
y1 = Station_y + x的半径
h1 = Station_h
x2 = Station_x - x的半径
y2 = Station_y - x的半径
h2 = Station_h
Call Myself_PLine(x1,y1,h1,x2,y2,h2,r)
x1 = Station_x - x的半径
y1 = Station_y + x的半径
h1 = Station_h
x2 = Station_x + x的半径
y2 = Station_y - x的半径
h2 = Station_h
Call Myself_PLine(x1,y1,h1,x2,y2,h2,r)
以上程序中,所有带Station的都是x图形中心的坐标。Call 语句就是调用上面子程序的调用命令,括号内的参数变量一定要和上面子程序的变量类型一致。
5 结束语
以上我们给出了AutoCAD用程序绘制圆、线和文本的具体方法,有了这些子程序,我们绘制所有形状的物理点分布图基本都可以达到。再通过子程序调用,就可以成批的调用物理点坐标,也就可以很轻松地绘制物理点分布图。
参考文献
[1] 胡建平,虞祖培.测绘通报,2008,(5):65-67
[2] 张帆.AutoCAD VBA二次开发教程[M].北京:清华大学出版社,2006