




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中级职称论文第 PAGE 17 页 共 NUMPAGES 17 页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的
3、原有功能。由于Microsoft公司的办公软件Excel也提供了Microsoft VBA的操作接口,所以还可以运用AutoCAD-VBA技术进行AutoCAD与Excel进行信息的互通(提取AutoCAD软件中的模型数据,储存到Excel文件中,反之也可以)。AutoCAD中集成了Microsoft VBA的编程环境,进入编程环境可以运用以下两种方法:AutoCAD命令行输入:vbaide菜单路径:【工具】【宏】【Visual Basic 编辑器】本文将不具体讲述编程环境的操作和使用,如果有需要可以查看AutoCAD的Help文件。二、杭州萧山机场T3航站楼金属吊顶工程基本介绍该吊顶工程是大
4、型的异形曲面(双曲面)金属吊顶,总面积超过5万平面。吊顶单元组块为平面三角形,单个组块面积在1平米左右,每个三角形组块的边长都不一致。通过5万多块尺寸不一的空间三角形的拼接,就拟合出一个超大型的空间波浪形曲面。萧山机场吊顶效果图三、工程中遇到的难题吊顶原始模型是AutoCAD文件中大量的空间点。这些空间点连线形成的三角形就形成三角形板块的分格线(这还不是金属板块的真实边线和真实尺寸),由于工程安装需要和考虑环境温度变化等因素,板块与板块之间必须留有一定的缝隙,所以空间点连接形成的三角形还必须进行边的偏移处理(偏缝处理)才能得到真实的金属面板尺寸模型。最后提取真实模型的边长尺寸,制成Excel加
5、工清单表格,才能最终用到工厂的生成加工中去。吊顶三角面板分格模型图(左:俯视图 右:轴测图)分格线与真实面板边线示意图总的来说,如果进行人工处理,从吊顶原始模型到Excel加工清单必须经过以下过程:原始模型空间点连线空间三角形分格模型分格模型边线偏移处理真实金属面板尺寸模型手工提取真实金属面板尺寸数据制成Excel加工清单表格整个工程有5万多块三角形面板需要经过上面的过程处理,这将是十分繁重的工作,需要大量的时间和人力。并且在转换过程中有大量的模型操作和数据操作,人工处理很容易产生差错。产生差错后,很难在最后现场安装前检查出来。这些都给工程带来很大的时间和经济风险。如何在尽可能少的人力和时间投
6、入下,保证所有面板能按照正确尺寸加工,减少工程的时间和经济风险就是我们遇到的最大困难。四、问题分析和解决方案分析前面的问题,发现虽然要处理的板块数量十分巨大,但是处理的步骤是一致的。对于这种数据相对简单,流程统一的批量化处理,计算机程序最擅长的。我们只要运用合适的计算机语言,把中间的转换过程打包成“黑箱程序”,就能避免前面的各种风险,也可以节省大量的人力和时间。 真实金属面板尺寸模型简化后的过程:原始模型空间点输入黑箱程序 Excel加工清单表格过程中唯一要求人工操作的是选择原始模型空间的三个点,最终输出真实金属面板尺寸模型和Excel加工清单表格都由程序完成。满足上述“黑箱程序”程序的语言,
7、首先要能与AutoCAD进行交互操作,而且能与Excel进行通讯,把最终模型尺寸信息储存在Excel文件中。这样,大量的模型操作和数据操作都由程序完成,杜绝了人工出错的可能。AutoCAD进行二次开发技术主要有一下几种技术:LISP技术(运用Visual Lisp语言)、AutoCAD-VBA技术、ARX技术(运用C+语言)。Visual Lisp语言的前生是AutoLisp,是Autodesk公司最早推出的能对AutoCAD进行二次开发的编程语言,由于技术推广和使用的时间较久,该方面的技术人员和技术积累也较多。但是Visual Lisp局限性较大,除了能灵活操作和控制AutoCAD,不能很好
8、的与其他程序(如Word、Excel等)进行通讯。C+语言功能十分强大,能满足本工程的要求,但是由于它的语法规则严格,计算机专业知识、技能要求高,基本都是专业的计算机人员在使用,不适合普通的建筑工程技术人员学习、使用。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+
10、(P03y-P01y)2+(P03z-P01z)20.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)*(
11、P02y-P01y)/L01v1z =Off/sin(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= P0
12、1z+ Off/sin(a1)*(P02z-P01z)/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
13、(a3)*(P01x-P03x)/L03+ Off/sin(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=(P
14、13x-P11x)2+(P13y-P11y)2+(P13z-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 程序错误处理_(, vbCrLf & 请输入三个点坐标,第一点: ) 从模型中得到第一点坐标_(, vbCrLf &
15、 第二点: ) 从模型中得到第二点坐标_(, 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) 2 + (P02(1) - P03(1) 2 _+ (P02(2) - P03(2) 2) 0.5L03 = (P03(0) - P01(0) 2
16、+ (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 * L03)x2 = (L02 2 + L01 2 - L03 2) / (2 * L02 * L01)x3 = (L03 2 + L02 2 - L
17、01 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空间点坐标变量Dim P13(0 To 2) As Double 定义P13空间点坐标变量Dim Off As Double 定义偏移距离Off = 2
18、.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 / Sin(a1) * (P02(2) - P01(2) / L01 _ + Off / Sin(a1) * (P03(2) - P01(2) / L03
19、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(a2) * (P03(2) - P02(2) / L02 _ + Off / Sin(a2) * (P01(2) - P02(2) / L01 P1
20、3(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(a3) * (P01(2) - P03(2) / L03 _ + Off / Sin(a3) * (P02(2) - P03(2) / L02生成真实面
21、板边线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) - P12(0) 2 + (P11(1) - P12(1) 2_ + (P11(2) - P12(2) 2) 0.5L12 = (P12(0) -
22、 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 = 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 Dim XlWorksheet As Object XlWorksheet.Name = 面板尺寸XlWorksheet.ActivateXLApp.ActiveSheet.Cells(1, 1) = 编号XLApp.ActiveSheet.Cells(1, 2) = L11XLApp.ActiveSheet.Cells(1, 3) =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 质量管理中的人员培训与团队建设
- 销售增长计划
- 足球训练中的心理辅导与激励
- 部编版初中语文必读名著书目(完整版)
- 高中语文情感美文创造宣言
- 科技引领下的西安教育行业虚拟现实应用前景
- 黑龙江2025年02月共青团黑龙江省委员会事业单位上半年公开招考3名工作人员笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 初中语文生活美文农家客
- 初中语文生活美文十月乡村秋色
- 超声科患者心理疏导与沟通艺术
- 工业品买卖合同(样表)
- (完整)消化性溃疡PPT课件ppt
- 《教育学原理》马工程教材第二章教育与社会发展
- 《常见疾病康复》期中考试试卷含答案
- 地球使用者地朴门设计手册
- 筑基功法精选
- 欧洲电力市场深度报告:欧洲电力市场供需格局和电价分析
- 2023年考研考博-考博英语-煤炭科学研究总院考试历年高频考点真题荟萃带答案
- 塔式起重机操作使用安全专项方案
- 统计用产品分类目录
- 冀教版小学数学三年级下册小数的初步认识
评论
0/150
提交评论