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

上传人:豆****2 文档编号:104037164 上传时间:2022-06-09 格式:DOC 页数:18 大小:875.50KB
返回 下载 相关 举报
AutoCAD-VBA技术在杭州萧山机场T3航站楼金属吊顶工程中的初步应用_第1页
第1页 / 共18页
AutoCAD-VBA技术在杭州萧山机场T3航站楼金属吊顶工程中的初步应用_第2页
第2页 / 共18页
AutoCAD-VBA技术在杭州萧山机场T3航站楼金属吊顶工程中的初步应用_第3页
第3页 / 共18页
点击查看更多>>
资源描述
.AutoCAD-VBA技术在杭州萧山机场T3航站楼金属吊顶工程中的初步应用亨特道格拉斯(中国)投资有限公司吕志路摘要:AutoCAD软件是当前建筑装饰工程中应用最广泛的CAD(计算机辅助设计)软件。AutoCAD-VBA技术是应用MicrosoftVBA编程环境,对AutoCAD进行二次开发的编程技术。本文介绍了在萧山机场T3航站楼金属吊顶工程中,如何运用AutoCAD-VBA技术,解决大规模曲面吊顶AutoCAD模型空间点坐标数据提取和金属吊顶单元面板数据(面板加工尺寸数据)生成等工程问题。通过该技术的应用,减少了大量的从吊顶三维曲面模型到实际金属面板加工工艺尺寸的转化时间和人工成本,也杜绝了如果采用人工转化的出错可能。关键词:AutoCAD-VBAAutoCAD二次开发金属吊顶一、AutoCAD-VBA技术基本介绍AutoCAD-VBA的编程环境是MicrosoftVBA,MicrosoftVBA是一个面向对象的编程环境,其编程的核心语言是VisualBasic语言(VB语言),可提供类似VisualBasic的丰富开发功能。AutoCAD-VBA和AutoCAD在同一进程空间中运行,所以AutoCAD-VBA可以与AutoCAD人工操作界面进行交互操作,进一步发挥和扩展AutoCAD的原有功能。由于Microsoft公司的办公软件Excel也提供了MicrosoftVBA的操作接口,所以还可以运用AutoCAD-VBA技术进行AutoCAD与Excel进行信息的互通(提取AutoCAD软件中的模型数据,储存到Excel文件中,反之也可以)。AutoCAD中集成了MicrosoftVBA的编程环境,进入编程环境可以运用以下两种方法:1. AutoCAD命令行输入:vbaide2. 菜单路径:【工具】【宏】【VisualBasic编辑器】本文将不具体讲述编程环境的操作和使用,如果有需要可以查看AutoCAD的Help文件。二、杭州萧山机场T3航站楼金属吊顶工程基本介绍该吊顶工程是大型的异形曲面(双曲面)金属吊顶,总面积超过5万平面。吊顶单元组块为平面三角形,单个组块面积在1平米左右,每个三角形组块的边长都不一致。通过5万多块尺寸不一的空间三角形的拼接,就拟合出一个超大型的空间波浪形曲面。萧山机场吊顶效果图三、工程中遇到的难题吊顶原始模型是AutoCAD文件中大量的空间点。这些空间点连线形成的三角形就形成三角形板块的分格线(这还不是金属板块的真实边线和真实尺寸),由于工程安装需要和考虑环境温度变化等因素,板块与板块之间必须留有一定的缝隙,所以空间点连接形成的三角形还必须进行边的偏移处理(偏缝处理)才能得到真实的金属面板尺寸模型。最后提取真实模型的边长尺寸,制成Excel加工清单表格,才能最终用到工厂的生成加工中去。吊顶三角面板分格模型图(左:俯视图右:轴测图)分格线与真实面板边线示意图总的来说,如果进行人工处理,从吊顶原始模型到Excel加工清单必须经过以下过程:原始模型空间点连线空间三角形分格模型分格模型边线偏移处理真实金属面板尺寸模型手工提取真实金属面板尺寸数据制成Excel加工清单表格整个工程有5万多块三角形面板需要经过上面的过程处理,这将是十分繁重的工作,需要大量的时间和人力。并且在转换过程中有大量的模型操作和数据操作,人工处理很容易产生差错。产生差错后,很难在最后现场安装前检查出来。这些都给工程带来很大的时间和经济风险。如何在尽可能少的人力和时间投入下,保证所有面板能按照正确尺寸加工,减少工程的时间和经济风险就是我们遇到的最大困难。四、问题分析和解决方案分析前面的问题,发现虽然要处理的板块数量十分巨大,但是处理的步骤是一致的。对于这种数据相对简单,流程统一的批量化处理,计算机程序最擅长的。我们只要运用合适的计算机语言,把中间的转换过程打包成“黑箱程序”,就能避免前面的各种风险,也可以节省大量的人力和时间。真实金属面板尺寸模型简化后的过程:原始模型空间点输入黑箱程序Excel加工清单表格过程中唯一要求人工操作的是选择原始模型空间的三个点,最终输出真实金属面板尺寸模型和Excel加工清单表格都由程序完成。满足上述“黑箱程序”程序的语言,首先要能与AutoCAD进行交互操作,而且能与Excel进行通讯,把最终模型尺寸信息储存在Excel文件中。这样,大量的模型操作和数据操作都由程序完成,杜绝了人工出错的可能。AutoCAD进行二次开发技术主要有一下几种技术:LISP技术(运用VisualLisp语言)、AutoCAD-VBA技术、ARX技术(运用C+语言)。VisualLisp语言的前生是AutoLisp,是Autodesk公司最早推出的能对AutoCAD进行二次开发的编程语言,由于技术推广和使用的时间较久,该方面的技术人员和技术积累也较多。但是VisualLisp局限性较大,除了能灵活操作和控制AutoCAD,不能很好的与其他程序(如Word、Excel等)进行通讯。C+语言功能十分强大,能满足本工程的要求,但是由于它的语法规则严格,计算机专业知识、技能要求高,基本都是专业的计算机人员在使用,不适合普通的建筑工程技术人员学习、使用。AutoCAD-VBA使用的语言MicrosoftVBA语法简单。语句容易从表面意思理解,容易被非计算机程序专业人员掌握,而且能与Excel表格程序进行很好通讯,所以本工程采用了AutoCAD-VBA技术。五、真实模型的几何推导我们运用计算机语言与AutoCAD、Excel进行交互。但是,从空间三角形分格模型到真实金属面板尺寸模型必须预先进行几何推导,再把推导写成计算机语言的形式。就几何上来说,我们已知三角形单元的原始模型空间点和点间的连线(分格线),如下图:已知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.5有三角形三边长度,可得三角形角度a1、a2、a3a1=Arccos(L012+L032-L022)/(2*L01*L03)a2=Arccos(L022+L012-L032)/(2*L02*L01)a3=Arccos(L032+L022-L012)/(2*L03*L02)接下来推导P11、P12、P13点坐标P11x、y、z=P01x、y、z+v1x、y、z+v2x、y、zv1x、y、z、v2x、y、z为空间向量其中:v1x=Off/sin(a1)*(P02x-P01x)/L01v1y=Off/sin(a1)*(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=P01z+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(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=(P13x-P11x)2+(P13y-P11y)2+(P13z-P11z)20.5到此,整个几何推导完毕,真实面板的空间点坐标和面板边长都已经得到求解。六、本工程“黑箱程序”OptionExplicitPublicSubAngle_Panel()DimP01AsVariant定义P01空间点坐标变量DimP02AsVariant定义P02空间点坐标变量DimP03AsVariant定义P03空间点坐标变量Repeat:OnErrorGoToEXT程序错误处理P01=ThisDrawing.Utility.GetPoint_(,vbCrLf&请输入三个点坐标,第一点:)从模型中得到第一点坐标P02=ThisDrawing.Utility.GetPoint_(,vbCrLf&第二点:)从模型中得到第二点坐标P03=ThisDrawing.Utility.GetPoint_(,vbCrLf&第三点:)从模型中得到第三点坐标DimL01AsDouble定义L01长度变量DimL02AsDouble定义L02长度变量DimL03AsDouble定义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+(P03(1)-P01(1)2_+(P03(2)-P01(2)2)0.5Dima1AsDouble定义a1角度变量Dima2AsDouble定义a2角度变量Dima3AsDouble定义a3角度变量Dimx1AsDouble中间变量Dimx2AsDouble中间变量Dimx3AsDouble中间变量x1=(L012+L032-L022)/(2*L01*L03)x2=(L022+L012-L032)/(2*L02*L01)x3=(L032+L022-L012)/(2*L03*L02)由于VB没提供Arccos()函数,我们应用VB的Atn(反正切)转化a1=Abs(Atn(1-x12)0.5/x1)a2=Abs(Atn(1-x22)0.5/x2)a3=Abs(Atn(1-x32)0.5/x3)DimP11(0To2)AsDouble定义P11空间点坐标变量DimP12(0To2)AsDouble定义P12空间点坐标变量DimP13(0To2)AsDouble定义P13空间点坐标变量DimOffAsDouble定义偏移距离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/Sin(a1)*(P02(2)-P01(2)/L01_+Off/Sin(a1)*(P03(2)-P01(2)/L03P12(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)/L01P13(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生成真实面板边线ThisDrawing.ModelSpace.AddLineP11,P12ThisDrawing.ModelSpace.AddLineP12,P13ThisDrawing.ModelSpace.AddLineP13,P11DimL11AsDouble定义真实面板边长L11变量DimL12AsDouble定义真实面板边长L12变量DimL13AsDouble定义真实面板边长L13变量L11=(P11(0)-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中DimXLAppAsObjectOnErrorResumeNextIfXLAppIsNothingThenSetXLApp=GetObject(,Excel.Application)IfErr0ThenErr.ClearSetXLApp=CreateObject(Excel.Application)IfErr0ThenThisDrawing.Utility.Prompt不能连接Excel+vbCrLfExitSubEndIfEndIfXLApp.workbooks.addDimXlWorksheetAsObjectSetXlWorksheet=XLApp.ActiveWorkbook.Worksheets.addXlWorksheet.Name=面板尺寸XlWorksheet.ActivateXLApp.ActiveSheet.Cells(1,1)=编号XLApp.ActiveSheet.Cells(1,2)=L11XLApp.ActiveSheet.Cells(1,3)=L12XLApp.ActiveSheet.Cells(1,4)=L13EndIfErr.ClearDimiAsIntegerXLApp.ActiveSheet.Cells(i+2,1)=面板&(i+1)XLApp.ActiveSheet.Cells(i+2,2)=L11XLApp.ActiveSheet.Cells(i+2,3)=L12XLApp.ActiveSheet.Cells(i+2,4)=L13i=i+1GoToRepeatEXT:OnErrorResumeNextXLApp.Visible=TrueSetXLApp=NothingSetXlWorksheet=NothingEndSub运行后,Excel文件如下图七、AutoCAD-VBA的使用总结当前工程中,经常会遇到类似萧山机场T3航站楼吊顶工程的问题,工程处理的模型数据量大,时间紧张、设计人员力量又不是十分充裕。充分利用CAD软件和软件支持的二次开发技术,往往能很好的解决问题。本文中的AutoCAD-VBA技术是一种相对来说容易被工程技术人员掌握的CAD软件二次开发技术,而且该技术的功能也十分强大,适合在工程技术人员中推广使用。参考文献:1Autodesk,ActiveX和VBA开发人员手册2Autodesk,ActiveXandVBAReference3Microsoft,VisualBasic参考4曾洪飞,张帆,卢择临编著,AutoCADVBA&VB.NET开发基础与实例教程中国电力出版社,2008年5(美)marioncottingham著,autocadvba从入门到精通电子工业出版社,2001年.18
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!