------李广亚
随着电脑技术的飞速发展,目前大多数企业都采用AutoCAD制图、绘图,在工程施工领域也是采用AutoCAD进行二维工程绘图。GPS的应用使的施工现场坐标的采集非常方便,通常便于直观,监理、业主会要求将GPS采集的坐标绘制在CAD图上。对于一个熟悉CAD的人来说,将10几个坐标数据手工录入坐标绘制到CAD中是比较容易的,但如果是几十个点,上百个点,甚至几百个点,对于一个施工技术员来说一个一个坐标的手工录入,就成了一个比较有难度的工作,主要因为手工录入会比较繁琐、耗费时间长还特别容易出错。在这方面如何能提高技术人员的工作效率?基于此,我们采用AtuoCAD中的VBA技术,进二次开发,可以方便的将大量的坐标自动绘制到CAD图中。下面通过一个简单事例来说明AtuoCAD中VBA技术的二次开发自动绘图程序的过程:
事件介绍:2012年业主在场区开挖一不规则多边形鱼塘,要求我单位将鱼塘进行测量并标注在总平面图上。
1、 数据采集:
使用GPS现场进行数据采集,在鱼塘周边从一点开始,顺时针方向进行,在不规则鱼塘的所有角点拐点均采集坐标,并保存在GPS中。
2、
导出坐标:
将GPS中采集的坐标导出到文本文档,如下图:
3、
数据处理:
将导入的坐标使用EXCEl文档打开并编辑处理,高程全设为0,表单重命名为“SJ”,保存EXCEl文档到D盘,文档名称为“GPS导入坐标绘图”如下图:
4、
VBA跨平台技术二次开发:
(1)、打开AutoCAD,选择工具->宏->VBA编辑器,打开VBA编辑器。在VBA编缉器中插入用户窗体,在窗体上插入按钮组件,如图:
(2)、双击按钮,打开代码编辑窗口,编缉代码如下:
Private Sub CommandButton1_Click()
Dim xlapp As Excel.Application Dim xlbook As Excel.workbook Dim xlsheet As Excel.worksheet
Set xlapp = CreateObject(\"excel.application\")
Set xlbook = xlapp.workbooks.Open(\"D:\\GPS导入坐标绘图.xls\") '打开的EXCEL路径
xlapp.Visible = False
Set xlsheet = xlbook.worksheets(\"sj\") '打开EXCEL中的sj工作表 i = xlsheet.Cells(1, 2) 'i为线条线数
For p = 0 To i - 2 Step 1 p = p
k1 = xlsheet.Cells(3 + p, 3) '将表格第3行第3列内数值赋值给K1,X坐标值
h1 = xlsheet.Cells(3 + p, 2) k3 = xlsheet.Cells(3 + p, 4) k2 = xlsheet.Cells(4 + p, 3) h2 = xlsheet.Cells(4 + p, 2) h3 = xlsheet.Cells(4 + p, 4) Dim 点 As AcadLine Dim 起点(2) As Double Dim 端点(2) As Double
起点(0) = k1 '将K1值贱赋值给起点数组内第一个值,即起点X坐标。 起点(1) = h1 起点(2) = k3 端点(0) = k2 端点(1) = h2 端点(2) = h3
Set 点 = ThisDrawing.ModelSpace.AddLine(起点, 端点) Next 'for语结束 xlbook.Close xlapp.Quit
Set xlapp = Nothing End Sub '结束
(3)、代码编辑完成后,点击运行后,如下图,点击自动绘图按钮:
自动绘制出鱼塘平面图如下:
(4)、保存VBA文件:在VBA编辑器中点击保存按钮,将所编写的VBA程序文件进行保存,保存名称为:GPS导入坐标绘图,如下图:
(5)下次需要使用时只需在CAD的VBA编辑器中打开,不用重复编写程序文件。 总结:
本次事例中只有12个坐标,自动绘图对几十个坐标、上百个坐标、甚至上千个坐标都能顺间完成。
15个坐标的手工录入时间约为30分钟,点越多,录入时间会越长,一个人静下心来,300个点的手工录入两天时间才能完成,而且会产生很多错误。1000个点的手工录入要一周时间才能完成。本次使用VBA编写的代码程序节约了大量的人工时间,方便、快速、大大提高了技术人员的工作效率。
因篇幅问题不能全部显示,请点此查看更多更全内容
怀疑对方AI换脸可以让对方摁鼻子 真人摁下去鼻子会变形
女子野生动物园下车狼悄悄靠近 后车司机按喇叭提醒
睡前玩8分钟手机身体兴奋1小时 还可能让你“变丑”
惊蛰为啥吃梨?倒春寒来不来就看惊蛰
男子高速犯困开智能驾驶出事故 60万刚买的奔驰严重损毁