利用VBA程序语言绘制铁路纵断面图Word格式文档下载.doc
- 文档编号:15306024
- 上传时间:2022-10-29
- 格式:DOC
- 页数:6
- 大小:43KB
利用VBA程序语言绘制铁路纵断面图Word格式文档下载.doc
《利用VBA程序语言绘制铁路纵断面图Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《利用VBA程序语言绘制铁路纵断面图Word格式文档下载.doc(6页珍藏版)》请在冰豆网上搜索。
Excel表格中的桩号、地面高程等信息读取出来,在AutoCAD文件里以文字、线条的方式写出来,就可绘出中桩地面线。
2、VBA简介
Visual
Basic
for
Application(VBA)是Microsoft面向最终用户的应用软件编程语言。
它最早出现于Microsoft的Excel和Project中,如今VBA已成为VB和所有Office产品的组件。
常用的绘图软件AutoCAD也已支持VBA作为二次开发工具。
VBA最大特点和最大优点是利用面向对象(OOP)的ActiveX
Automation技术,使语言的引擎在技术上与开发环境分离。
它的功能在很大程度上依赖于它的客户显露的Automation接口。
同时,由于VBA是基于ActiveX
Automation技术,它可以使用任何Automation技术的应用程序共同工作。
基于AutoCAD的VBA应用程序就是高级程序语言的计算功能与AutoCAD的绘图功能结合,使用VBA程序语句来控制对AutoCAD图形的操作。
VBA作为一个集成的开发环境,它提供了高质量的用户化编程能力,能够使AutoCAD数据与其它的VBA应用程序,如Microsoft
Excel软件,直接共享,实现无缝连接,交换数据非常方便。
3、工作机理分析
在Microsoft
Excel中,与表对应的对象是工作表(Sheet或Worksheet),与每一个表格方格对应的对象是单元格区域(range),它可以仅包括一个单元格(cell),也可以由多个单元格合并而成。
工作表对象中的cells属性,在单元格的选择方面可以达到与range相同的效果,它是以行(row)和列(gol)作为参数的,对于行和列的选择可以采用变量的形式。
在本例中,可设定工作表(Worksheet)的每一行第一列(cells(i,1))为中桩桩号,每一行第二列(cells(i,2))为对应的地面高程。
在AutoCAD中,没有与表对应的对象,但可以根据表中前后桩号定义水平距离,根据地面高程定义垂直距离,将表中数据理解为线条与文字对象的集合。
这样,通过读取Microsoft
Excel文件中的最小对象—单元格区域(cells(i,j))的主要信息,利用VBA建立AutoCAD与Excel的通信,然后在AutoCAD文件里指定的图层、位置画线条,书写文字。
通过循环,遍历所有单元格区域(cells(i,j)),边读边写,最终完成纵断面地面线的绘制及桩号、地面高程的书写。
4、具体实现方法
4.1
在AutoCAD中创建Excel应用程序
要编写存取Excel的应用程序,必须通过VBA将Excel中的对象能够让用户使用,这就需要参考
Excel对象的数据库。
其步骤如下:
4.1.1
打开AutoCAD的VBA编辑器(命令:
VBAIDE);
4.1.2
选择“工具”\“引用”项,在弹出的“引用”对话框的“可使用的引用”列表框内,选择“Microsoft
Excel
8.0
Object
Library”项;
4.1.3
单击“确定”按钮;
4.1.4
接下来使用下列代码可创建完整的应用程序对象实例:
Dim
As
Excel.Application
'
激活要与之通信的Excel应用程序
On
Error
Resume
Next
Set
=
GetObject(,
"
Excel.Application"
)
If
Err
<
>
0
Then
CreateObject("
End
If
4.2
读入坐标点画地面线
4.2.1
设定工作表(Worksheet)的每一行第一列(cells(i,1))为中桩桩号,每一行第二列(cells(i,2))为对应的地面高程。
由于公路路线纵断面图水平方向比例为1:
2000,垂直方向比例为1:
200,故读入时,y坐标应乘以10倍。
4.2.2
以(0,0,0)为原点,以桩号里程为x坐标,以10倍所对应的地面高程为y坐标,0为z坐标,定义某一桩号对应的地面点坐标;
然后循环读取各里程桩号数据信息,定义各桩号所对应的地面点坐标;
最后以直线段连接各地面点坐标,则为地面线。
4.2.3
下述代码可读入Excel数据信息画地面线
i
Integer
lineobj
AcadLine
sPnt(0
To
2)
Double
ePnt(0
‘读入坐标画地面线
Worksheets("
sheet1"
).Activate
3
‘由第三行起
Do
Until
cells(i,
1).Value
cells(i
+
1,
1)
Exit
Do
sPnt(0)
1).Value
sPnt
(1)
10
*
2).Value
sPnt
(2)
ePnt(0)
ePnt
(1)
ePnt
(2)
ThisDrawing.ModelSpace.AddLine(sPnt,
ePnt)
1
Loop
4.3
桩号及高程的写入
4.3.1
定义文字的插入位置
以桩号里程为x坐标,0为y坐标,0为z坐标,确定文字的插入点。
4.3.2
以单行文字形式创建桩号及高程文字,定义文字的格式、字体、高度、倾斜角度。
插入后的文字应逆时针旋转90度。
4.4
辅助网格线的绘制
4.4.1
辅助网格线能较为直观地表示桩号及地面高程的对应关系,有助于纵坡设计;
4.4.2
以桩号里程为x坐标,0为y坐标,0为z坐标,确定网格线第一点;
以桩号里程为x坐标,10倍所对应的地面高程为y坐标,0为z坐标,确定网格线第二点;
两点连线,则为网格线。
5
实例
5.1
运行AutoCAD2000程序;
5.2
5.3
创建成下面的过程及代码,并运行之:
Sub
ZDM()
ExcelSheet
Object
ExcelWorkbook
klineobj
kPnt(0
hPnt(0
ksPnt(0
kePnt(0
dmPnt(0
textObj
AcadText
txtStr
String
insPnt
Variant
txtHeight
layObj
AcadLayer
newLayer
ThisDrawing.Layers.Add("
标注"
地面线"
网格线"
atTxtobj
AcadTextStyle
ThisDrawing.ActiveTextStyle
atTxtobj.fontFile
c:
\windows\fonts\simfang.ttf"
创建Excel应用程序
打开Excel表
ExcelName
InputBox("
路径:
Excel.Workbooks.Open
ExcelName
表格不可见
Excel.Visible
False
3
ThisDrawing.Layers("
ThisDrawing.ActiveLayer
newLayer
newLayer.Color
acWhite
Then
lineobj.Delete
画辅助网格线及插入数据
画辅助网格线
ksPnt(0)
1).Value:
ksPnt
(1)
0:
ksPnt
(2)
kePnt(0)
kePnt
(1)
2).Value:
k
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 利用 VBA 程序语言 绘制 铁路 纵断面