AutoCAD-VBA技术在杭州萧山机场T3航站楼金属吊顶工程中的初步应用Word.doc

上传人:rrsccc 文档编号:9156618 上传时间:2021-02-05 格式:DOC 页数:18 大小:1.72MB
返回 下载 相关 举报
AutoCAD-VBA技术在杭州萧山机场T3航站楼金属吊顶工程中的初步应用Word.doc_第1页
第1页 / 共18页
AutoCAD-VBA技术在杭州萧山机场T3航站楼金属吊顶工程中的初步应用Word.doc_第2页
第2页 / 共18页
AutoCAD-VBA技术在杭州萧山机场T3航站楼金属吊顶工程中的初步应用Word.doc_第3页
第3页 / 共18页
AutoCAD-VBA技术在杭州萧山机场T3航站楼金属吊顶工程中的初步应用Word.doc_第4页
第4页 / 共18页
AutoCAD-VBA技术在杭州萧山机场T3航站楼金属吊顶工程中的初步应用Word.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《AutoCAD-VBA技术在杭州萧山机场T3航站楼金属吊顶工程中的初步应用Word.doc》由会员分享,可在线阅读,更多相关《AutoCAD-VBA技术在杭州萧山机场T3航站楼金属吊顶工程中的初步应用Word.doc(18页珍藏版)》请在三一文库上搜索。

1、AutoCAD-VBA技术在杭州萧山机场T3航站楼金属吊顶工程中的初步应用亨特道格拉斯(中国)投资有限公司 吕志路摘要:AutoCAD软件是当前建筑装饰工程中应用最广泛的CAD(计算机辅助设计)软件。AutoCAD-VBA技术是应用Microsoft VBA编程环境,对AutoCAD进行二次开发的编程技术。本文介绍了在萧山机场T3航站楼金属吊顶工程中,如何运用AutoCAD-VBA技术,解决大规模曲面吊顶AutoCAD模型空间点坐标数据提取和金属吊顶单元面板数据(面板加工尺寸数据)生成等工程问题。通过该技术的应用,减少了大量的从吊顶三维曲面模型到实际金属面板加工工艺尺寸的转化时间和人工成本,也

2、杜绝了如果采用人工转化的出错可能。关键词:AutoCAD-VBA AutoCAD二次开发 金属吊顶 一、AutoCAD-VBA技术基本介绍AutoCAD-VBA的编程环境是Microsoft VBA ,Microsoft VBA是一个面向对象的编程环境,其编程的核心语言是Visual Basic语言(VB语言),可提供类似 Visual Basic的丰富开发功能。AutoCAD-VBA和 AutoCAD 在同一进程空间中运行,所以AutoCAD-VBA可以与AutoCAD人工操作界面进行交互操作,进一步发挥和扩展AutoCAD的原有功能。由于Microsoft公司的办公软件Excel也提供了M

3、icrosoft VBA的操作接口,所以还可以运用AutoCAD-VBA技术进行AutoCAD与Excel进行信息的互通(提取AutoCAD软件中的模型数据,储存到Excel文件中,反之也可以)。AutoCAD中集成了Microsoft VBA的编程环境,进入编程环境可以运用以下两种方法:1. AutoCAD命令行输入:vbaide2. 菜单路径:【工具】【宏】【Visual Basic 编辑器】本文将不具体讲述编程环境的操作和使用,如果有需要可以查看AutoCAD的Help文件。二、杭州萧山机场T3航站楼金属吊顶工程基本介绍该吊顶工程是大型的异形曲面(双曲面)金属吊顶,总面积超过5万平面。吊

4、顶单元组块为平面三角形,单个组块面积在1平米左右,每个三角形组块的边长都不一致。通过5万多块尺寸不一的空间三角形的拼接,就拟合出一个超大型的空间波浪形曲面。萧山机场吊顶效果图三、工程中遇到的难题吊顶原始模型是AutoCAD文件中大量的空间点。这些空间点连线形成的三角形就形成三角形板块的分格线(这还不是金属板块的真实边线和真实尺寸),由于工程安装需要和考虑环境温度变化等因素,板块与板块之间必须留有一定的缝隙,所以空间点连接形成的三角形还必须进行边的偏移处理(偏缝处理)才能得到真实的金属面板尺寸模型。最后提取真实模型的边长尺寸,制成Excel加工清单表格,才能最终用到工厂的生成加工中去。吊顶三角面

5、板分格模型图(左:俯视图 右:轴测图)分格线与真实面板边线示意图总的来说,如果进行人工处理,从吊顶原始模型到Excel加工清单必须经过以下过程:原始模型空间点连线空间三角形分格模型分格模型边线偏移处理真实金属面板尺寸模型手工提取真实金属面板尺寸数据制成Excel加工清单表格整个工程有5万多块三角形面板需要经过上面的过程处理,这将是十分繁重的工作,需要大量的时间和人力。并且在转换过程中有大量的模型操作和数据操作,人工处理很容易产生差错。产生差错后,很难在最后现场安装前检查出来。这些都给工程带来很大的时间和经济风险。如何在尽可能少的人力和时间投入下,保证所有面板能按照正确尺寸加工,减少工程的时间和

6、经济风险就是我们遇到的最大困难。四、问题分析和解决方案分析前面的问题,发现虽然要处理的板块数量十分巨大,但是处理的步骤是一致的。对于这种数据相对简单,流程统一的批量化处理,计算机程序最擅长的。我们只要运用合适的计算机语言,把中间的转换过程打包成“黑箱程序”,就能避免前面的各种风险,也可以节省大量的人力和时间。 真实金属面板尺寸模型简化后的过程:原始模型空间点输入黑箱程序 Excel加工清单表格过程中唯一要求人工操作的是选择原始模型空间的三个点,最终输出真实金属面板尺寸模型和Excel加工清单表格都由程序完成。满足上述“黑箱程序”程序的语言,首先要能与AutoCAD进行交互操作,而且能与Exce

7、l进行通讯,把最终模型尺寸信息储存在Excel文件中。这样,大量的模型操作和数据操作都由程序完成,杜绝了人工出错的可能。AutoCAD进行二次开发技术主要有一下几种技术:LISP技术(运用Visual Lisp语言)、AutoCAD-VBA技术、ARX技术(运用C+语言)。Visual Lisp语言的前生是AutoLisp,是Autodesk公司最早推出的能对AutoCAD进行二次开发的编程语言,由于技术推广和使用的时间较久,该方面的技术人员和技术积累也较多。但是Visual Lisp局限性较大,除了能灵活操作和控制AutoCAD,不能很好的与其他程序(如Word、Excel等)进行通讯。C+

8、语言功能十分强大,能满足本工程的要求,但是由于它的语法规则严格,计算机专业知识、技能要求高,基本都是专业的计算机人员在使用,不适合普通的建筑工程技术人员学习、使用。AutoCAD-VBA使用的语言Microsoft VBA语法简单。语句容易从表面意思理解,容易被非计算机程序专业人员掌握,而且能与Excel表格程序进行很好通讯,所以本工程采用了AutoCAD-VBA技术。五、真实模型的几何推导我们运用计算机语言与AutoCAD、Excel进行交互。但是,从空间三角形分格模型到真实金属面板尺寸模型必须预先进行几何推导,再把推导写成计算机语言的形式。就几何上来说,我们已知三角形单元的原始模型空间点和

9、点间的连线(分格线),如下图:已知P01、P02、P03点空间点坐标需要求解的是真实金属面板尺寸模型,如下图:即求解P11、P12、P13的空间坐标和L11、L12、L13的长度。图中Off为偏缝(偏移)距离,本工程为2.5mm。推导过程:已知P01x、y、z、P02x、y、z和P03x、y、z可得三角形边长L01、L02、L03L01=(P01x-P02x)2+(P01y-P02y)2+(P01z-P02z)20.5L02=(P02x-P03x)2+(P02y-P03y)2+(P02z-P03z)20.5L03=(P03x-P01x)2+(P03y-P01y)2+(P03z-P01z)20.

10、5有三角形三边长度,可得三角形角度a1、a2、a3a1=Arc cos(L012+ L032- L022)/(2*L01*L03)a2=Arc cos(L022+ L012- L032)/(2*L02*L01)a3=Arc cos(L032+ L022- L012)/(2*L03*L02)接下来推导P11、P12、P13点坐标P11x、y、z= P01x、y、z+v1x、y、z+v2 x、y、zv1x、y、z、v2 x、y、z为空间向量其中:v1x =Off/sin(a1)*(P02x-P01x)/L01v1y =Off/sin(a1)*(P02y-P01y)/L01v1z =Off/sin(

11、a1)*(P02z-P01z)/L01v2x =Off/sin(a1)*(P03x-P01x)/L03v2y =Off/sin(a1)*(P03y-P01y)/L03v2z =Off/sin(a1)*(P03z-P01z)/L03所以P11的三维坐标分别为:P11x= P01x+ Off/sin(a1)*(P02x-P01x)/L01+ Off/sin(a1)*(P03x-P01x)/L03P11y= P01y+ Off/sin(a1)*(P02y-P01y)/L01+ Off/sin(a1)*(P03y-P01y)/L03P11z= P01z+ Off/sin(a1)*(P02z-P01z)

12、/L01+ Off/sin(a1)*(P03z-P01z)/L03同理,可得P12、P13的三维坐标P12x= P02x+ Off/sin(a2)*(P03x-P02x)/L02+ Off/sin(a2)*(P01x-P02x)/L01P12y= P02y+ Off/sin(a1)*(P03y-P02y)/L02+ Off/sin(a2)*(P01y-P02y)/L01P12z= P02z+ Off/sin(a2)*(P03z-P02z)/L02+ Off/sin(a2)*(P01z-P02z)/L01P13x= P03x+ Off/sin(a3)*(P01x-P03x)/L03+ Off/s

13、in(a3)*(P02x-P03x)/L02P13y= P03y+ Off/sin(a3)*(P01y-P03y)/L03+ Off/sin(a3)*(P02y-P03y)/L02P13z= P03z+ Off/sin(a3)*(P01z-P03z)/L03+ Off/sin(a3)*(P02z-P03z)/L02最后得到L11、L12、L13长度尺寸L11=(P11x-P12x)2+(P11y-P12y)2+(P11z-P12z)20.5L12=(P12x-P13x)2+(P12y-P13y)2+(P12z-P13z)20.5L13=(P13x-P11x)2+(P13y-P11y)2+(P1

14、3z-P11z)20.5到此,整个几何推导完毕,真实面板的空间点坐标和面板边长都已经得到求解。六、本工程“黑箱程序”Option ExplicitPublic Sub Angle_Panel()Dim P01 As Variant 定义P01空间点坐标变量Dim P02 As Variant 定义P02空间点坐标变量Dim P03 As Variant 定义P03空间点坐标变量Repeat:On Error GoTo EXT 程序错误处理P01 = ThisDrawing.Utility.GetPoint_(, vbCrLf & 请输入三个点坐标,第一点: ) 从模型中得到第一点坐标P02 =

15、 ThisDrawing.Utility.GetPoint_(, vbCrLf & 第二点: ) 从模型中得到第二点坐标P03 = ThisDrawing.Utility.GetPoint_(, vbCrLf & 第三点: ) 从模型中得到第三点坐标Dim L01 As Double 定义L01长度变量Dim L02 As Double 定义L02长度变量Dim L03 As Double 定义L03长度变量L01 = (P01(0) - P02(0) 2 + (P01(1) - P02(1) 2_ + (P01(2) - P02(2) 2) 0.5L02 = (P02(0) - P03(0)

16、 2 + (P02(1) - P03(1) 2 _+ (P02(2) - P03(2) 2) 0.5L03 = (P03(0) - P01(0) 2 + (P03(1) - P01(1) 2 _+ (P03(2) - P01(2) 2) 0.5Dim a1 As Double 定义a1角度变量Dim a2 As Double 定义a2角度变量Dim a3 As Double 定义a3角度变量Dim x1 As Double 中间变量Dim x2 As Double 中间变量Dim x3 As Double 中间变量x1 = (L01 2 + L03 2 - L02 2) / (2 * L01

17、* L03)x2 = (L02 2 + L01 2 - L03 2) / (2 * L02 * L01)x3 = (L03 2 + L02 2 - L01 2) / (2 * L03 * L02)由于VB没提供Arccos() 函数,我们应用VB的Atn(反正切)转化a1 = Abs(Atn(1 - x1 2) 0.5 / x1)a2 = Abs(Atn(1 - x2 2) 0.5 / x2)a3 = Abs(Atn(1 - x3 2) 0.5 / x3)Dim P11(0 To 2) As Double 定义P11空间点坐标变量Dim P12(0 To 2) As Double 定义P12空

18、间点坐标变量Dim P13(0 To 2) As Double 定义P13空间点坐标变量Dim Off As Double 定义偏移距离Off = 2.5P11(0) = P01(0) + Off / Sin(a1) * (P02(0) - P01(0) / L01 _ + Off / Sin(a1) * (P03(0) - P01(0) / L03P11(1) = P01(1) + Off / Sin(a1) * (P02(1) - P01(1) / L01 _ + Off / Sin(a1) * (P03(1) - P01(1) / L03P11(2) = P01(2) + Off / S

19、in(a1) * (P02(2) - P01(2) / L01 _ + Off / Sin(a1) * (P03(2) - P01(2) / L03 P12(0) = P02(0) + Off / Sin(a2) * (P03(0) - P02(0) / L02 _ + Off / Sin(a2) * (P01(0) - P02(0) / L01P12(1) = P02(1) + Off / Sin(a2) * (P03(1) - P02(1) / L02 _ + Off / Sin(a2) * (P01(1) - P02(1) / L01P12(2) = P02(2) + Off / Sin

20、(a2) * (P03(2) - P02(2) / L02 _ + Off / Sin(a2) * (P01(2) - P02(2) / L01 P13(0) = P03(0) + Off / Sin(a3) * (P01(0) - P03(0) / L03 _ + Off / Sin(a3) * (P02(0) - P03(0) / L02P13(1) = P03(1) + Off / Sin(a3) * (P01(1) - P03(1) / L03 _ + Off / Sin(a3) * (P02(1) - P03(1) / L02P13(2) = P03(2) + Off / Sin(a

21、3) * (P01(2) - P03(2) / L03 _ + Off / Sin(a3) * (P02(2) - P03(2) / L02生成真实面板边线ThisDrawing.ModelSpace.AddLine P11, P12ThisDrawing.ModelSpace.AddLine P12, P13ThisDrawing.ModelSpace.AddLine P13, P11Dim L11 As Double 定义真实面板边长L11变量Dim L12 As Double 定义真实面板边长L12变量Dim L13 As Double 定义真实面板边长L13变量L11 = (P11(0

22、) - P12(0) 2 + (P11(1) - P12(1) 2_ + (P11(2) - P12(2) 2) 0.5L12 = (P12(0) - P13(0) 2 + (P12(1) - P13(1) 2 _+ (P12(2) - P13(2) 2) 0.5L13 = (P13(0) - P11(0) 2 + (P13(1) - P11(1) 2_ + (P13(2) - P11(2) 2) 0.5L11、L12、L13尺寸输入到Excel中Dim XLApp As ObjectOn Error Resume NextIf XLApp Is Nothing Then Set XLApp

23、= GetObject(, Excel.Application) If Err 0 Then Err.Clear Set XLApp = CreateObject(Excel.Application) If Err 0 Then ThisDrawing.Utility.Prompt 不能连接Excel + vbCrLf Exit Sub End If End If XLApp.workbooks.add Dim XlWorksheet As Object Set XlWorksheet = XLApp.ActiveWorkbook.Worksheets.add XlWorksheet.Name

24、 = 面板尺寸XlWorksheet.ActivateXLApp.ActiveSheet.Cells(1, 1) = 编号XLApp.ActiveSheet.Cells(1, 2) = L11XLApp.ActiveSheet.Cells(1, 3) = L12XLApp.ActiveSheet.Cells(1, 4) = L13End IfErr.ClearDim i As IntegerXLApp.ActiveSheet.Cells(i + 2, 1) = 面板 & (i + 1)XLApp.ActiveSheet.Cells(i + 2, 2) = L11XLApp.ActiveShee

25、t.Cells(i + 2, 3) = L12XLApp.ActiveSheet.Cells(i + 2, 4) = L13i = i + 1GoTo RepeatEXT:On Error Resume Next XLApp.Visible = TrueSet XLApp = NothingSet XlWorksheet = NothingEnd Sub运行后,Excel文件如下图七、AutoCAD-VBA的使用总结当前工程中,经常会遇到类似萧山机场T3航站楼吊顶工程的问题,工程处理的模型数据量大,时间紧张、设计人员力量又不是十分充裕。充分利用CAD软件和软件支持的二次开发技术,往往能很好的解

26、决问题。本文中的AutoCAD-VBA技术是一种相对来说容易被工程技术人员掌握的CAD软件二次开发技术,而且该技术的功能也十分强大,适合在工程技术人员中推广使用。参考文献: 1Autodesk,ActiveX 和 VBA 开发人员手册2Autodesk,ActiveX and VBA Reference3 Microsoft,Visual Basic 参考4 曾洪飞,张帆,卢择临 编著,AutoCAD VBA & VB.NET开发基础与实例教程中国电力出版社,2008年5 (美)marioncottingham著,autocad vba从入门到精通电子工业出版社 ,2001年 (注:素材和资料部分来自网络,供参考。请预览后才下载,期待你的好评与关注!)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1