黄琦茗, 仇文革, 万世付, 赵海霖, 段东亚
(西南交通大学 交通隧道工程教育部重点实验室, 四川 成都 610031)
随着我国社会经济稳步推进,在隧道工程建设中,低碳、环保和可持续的要求逐渐被人们所重视。与此同时,建筑信息模型(building information modeling,简称BIM)在建筑行业的运用已日趋成熟。自上而下的正向设计能够给予设计阶段更加灵活的方案设计。参数化建模能够最大化正向设计的设计效率,而目前国内外的隧道参数化建模软件发展较为缓慢,研究隧道结构参数化建模规则对隧道参数化建模软件的诞生具有促进作用。
随着我国高速铁路的发展,为了削减高速列车进出隧道产生的微气压波[1]的影响,在设计高速铁路隧道时,常采用帽檐斜切式洞门[2]。帽檐斜切式洞门是带有不规则直纹曲面的非常规实体,无法通过常规实体创建方法与布尔运算直接生成,仅能通过曲线生成曲面,曲面缝合成实体的方法进行创建,创建过程复杂[3]。在使用这种思路创建此类型的实体时,对其参数化建模能够让设计人员仅通过修改参数并预览就能够找到最合适的曲面形状,能够显著提高设计和创建效率,这也契合BIM正向设计的理念。所谓参数化建模,就是研究并提取构件组成元素的关键特征参数,通过控制这些参数,经过程序运算自动创建三维模型与精确定位[4]。经分析,帽檐斜切式洞门的结构外形具有极强的相似性,曲面和曲线的构成具有一定的规律性,为了累计设计成果,并提高再次建模的效率,创建参数化模型具有现实意义。
本文基于MicroStation软件平台进行二次开发,开发快速创建帽檐斜切式洞门的参数化模型的算法。已有学者使用Revit进行二次开发隧道工程参数化建模,刘兆新等[5]利用Revit进行二次开发,实现了锚杆、小导管等初期支护构件的参数化创建与空间自动定位; 王晓东等[6]基于Revit开发,实现了盾构管片参数化建模以及定位。以上学者的开发思路对于开发隧道工程参数化建模具有参考价值,但是仍然受制于Revit软件的族设计。秦海洋[7]基于 Sketch Tracer对帽檐斜切式洞门进行了建模,其研究仅仅为翻模,并未完成参数化建模与正向设计; 文献[8-10]通过分析隧道洞口设计人员的设计习惯和思维方式,开发了隧道洞口参数化设计程序,完成了端墙式洞门参数化建模,但端墙式洞门相对较为规则,参数化建模难度较低,对于较为复杂的模型仍需进一步研究。
本文对帽檐斜切式洞门的结构特点进行了研究,利用MicroStation平台进行二次开发,从源代码设计算法实现帽檐斜切式洞门的参数化创建、动态预览与放置以及提取统计工程量。结合某工程实例,使用该参数化模型程序进行快速设计和建模验证程序的可行性。以期研究成果为开发类似隧道工程参数化模型程序研究提供一种新思路。
MicroStation是Bentley公司自主开发的计算机辅助设计平台,Bentley公司的很多软件都是基于MicroStation平台进行二次开发得到的,如OpenBridge Modeler、OpenRoads Designer、AECOsim Building Designer等服务于土木工程各行各业(包括桥梁、道路、建筑工程)的软件。MicroStation具有很强的可开发性。基于MicroStation二次开发服务于隧道行业的功能,能够充分展现隧道工程的特征,具有较高的效率。
MicroStation二次开发主要包括3种方式:MicroStation VBA(简称MVBA)、Addin(基于C#语言或其他的.NET开发语言)和MDL(基于C/C++)。这3种开发手段由易到难,功能类型与复杂程度则是由弱到强。
经过比较和研究发现,MVBA具有很多强大的功能,能够满足编程创建参数化模型,不必追求复杂度更高的MDL。许多接口和函数都已经在软件上进行了很好的集成和封装。采用的是最易学、最普及的BASIC编程语言。因此,对于非计算机专业的土木开发者具有较友好的开发环境,较容易上手进行编程,更适合隧道构件参数化理论规则研究以及二次开发。
MVBA编程环境由3个模块组成,分别是窗体模块、代码模块和类模块。窗体模块主要功能是可视化定义和编辑交互式用户界面,调用相关控件,并对控件参数进行定义,且可定义窗口初触发相关事件; 代码模块是一个开发工程中最基本的模块,它是工程初始化、程序的起点,在该模块定义主函数; 类模块是用来创建对象的,其中的每个小模块都是一个对象名,同时,在其中能够定义程序的命令动作,通过调用接口创建各种用户需要实现的事件,实现代码与软件互动。
帽檐斜切式洞门轮廓曲线示意图如图1所示。
图1 帽檐斜切式洞门轮廓曲线示意图
帽檐斜切式洞门的设置需要根据洞口地形、地质条件、隧道长度和所处位置进行创建。主体部分主要由帽檐和斜切明洞段构成,在三维建模过程中,难点在于帽檐处的建模,由于不是常规形状实体,无法通过布尔运算创建。由于体由面组成,面由线组成,因此帽檐部分可以转化为由图 1中4根轮廓线约束构成,实体的参数化即转化成这4根轮廓线的参数化。对于4根轮廓线的参数,通常这种洞门的轮廓线1为椭圆线[11]; 轮廓线2一般有纯椭圆线和半椭圆线加直线2种类型可以选择; 轮廓线3和轮廓线4实质为斜切明洞段斜切面上的曲线,通过提取斜切明洞的斜切面的线可以完成创建,这种方法既方便创建,又能约束帽檐与切割明洞在切割面上共面。
参数化创建该帽檐斜切式洞门模型主要分为参数化定义与用户界面创建、参数计算处理并创建各对象元素、模型空间调用与放置,具体流程见图2。
图2 参数化模型创建流程
参数示意图见图3。
图3 参数示意图
1)内轮廓参数设计。隧道设计初始阶段均需要进行隧道内轮廓设计,本程序能够提供参数化内轮廓设计。隧道内轮廓设计通过内轮廓参数进行,首先根据所需的内轮廓建筑界限大小选择合适的内轮廓类型,根据参考值调整至合适的内轮廓,完成内轮廓设计。
2)明洞断面与斜切断面参数设计。该洞门参数化程序将会自动读取事先完成设计的内轮廓参数,再输入如图3所示的衬砌厚度of、斜切角度以及位置f参数即可完成斜切明洞段建模。
3)轮廓线参数设计。轮廓线3和轮廓线4为斜切明洞段的线,因此,它们无需另外定义参数,通过定义斜切明洞段的参数创建斜切明洞段即可提取2根轮廓线。控制轮廓线1的参数有椭圆长轴b、短轴a、倾斜角度,仅这3个参数无法确定中心点位置,但研究发现,为了保持隧道内通畅,轮廓线1不能穿出内轮廓线,因此轮廓线1的底部顶点需要与轮廓线4的底部顶点在Y方向上集聚,由此约束了轮廓线1的位置,无需再定义额外参数就能够确定其中心点位置。与轮廓线1不同,轮廓线2的参数有椭圆长轴b、短轴a、倾斜角度及轮廓线总高度H,能够直接计算出椭圆位置和椭圆方向。
为进一步精简参数,提高设计效率,在完成斜切明洞段建模时,程序会根据上述斜切明洞段参数(包括内轮廓参数、斜切角度与位置f等参数),按照一定的规则自动处理轮廓线1和轮廓线2的参数以提供一个程序预设的参考模型,并在窗口上生成这些参考值参数,用户在生成的参考模型的参数基础上对参数进行微调,直至完成满足需求的帽檐斜切式洞门模型。
图4所示为用户交互窗体,左侧为参数输入块,右侧为图片浏览块。在图片浏览块中除了能够给予参数提示图外,还可以实时预览输入参数后的模型,提高用户选择输入参数的有效性和效率。
图4 用户交互窗体
1)MVBA编程是纯面向对象的,其中的类模块是面向对象编程的基础。对于用户而言,可视化程度越高,用户体验越好,因此,动态展示和动态放置能够帮助用户对创建的实体有非常清晰的理解。在类模块中,MVBA提供了IprimitiveCommandEvents接口用于定义对象元素的放置规则。可以通过接口中的各种事件实现各种所需要的功能,如需动态显示和放置,需要在接口中定义Dynamics事件,实现鼠标控制放置点和放置方向。将模型显示为DrawMode,当DrawMode为msdDrawingModeNormal时,将元素对象添加至激活模型空间中。
2)轮廓线1和轮廓2的创建。由前所述,由于曲线1和曲线2主要由椭圆弧组成,因此需要创建Ellipse3D对象,Ellipse3D对象由5个成员参数构成。创建Ellipse3D对象通过定义Center进行定位; 定义Vector0和Vector90确定椭圆方向,其分别代表0°角开始点和90°角开始点; 定义Start和Sweep确定椭圆弧开始角度和扫掠角度。将窗体模块定义的参数进行数学处理并传递至上述5个成员参数中,即完成椭圆曲线对象的创建。由于Ellipse3D仅为一个对象,如需添加至模型空间中需要将其转化为BsplineCurveElement才能添加至模型空间中。
3)斜切明洞段的建立。由于轮廓线3和轮廓线4是洞门的斜切明洞段上的曲线,因此先创建斜切明洞段模型。对于斜切明洞段的创建,在程序中先创建了参数化的断面,参数选择见图 3。将创建的断面元素使用SweepProfileAlongPath进行创建,再通过SmartSolid.SolidSubtract的方法切割出切割面,完成斜切明洞段参数化模型的创建。
4)轮廓线3和轮廓线4的提取。对于MVBA中并无直接提取实体边界的API,可以通过先提取面,再提取面的边界的方式提取曲线。调用ExtractSurfaceFromSolid提取出明洞切割段的切面。提取面后通过BuildArrayFromContents将曲面上的所有边界存储进一个元素枚举器(ElementEnumerator)中,找到自己想要的曲线再转化为BsplineCurveElement元素即可。
5)曲面的创建与实体生成。MVBA可以提供多种创建BsplineSurface的方法,本例中调用FromTwoBoundaryCurves创建4个直纹曲面,再创建2个底平面。在MVBA中,并无直接缝合曲面生成实体的API,但MVBA最强大的地方在于它可以直接通过命令调用软件已经封装好的功能命令,这里编写CadInputQueue.SendCommand "CONSTRUCT STITCH"代码以启动软件中已有的缝合曲面命令,对所有曲面进行缝合生成实体,再通过GetLastValidGraphicalElement将其添加进程序中成为智能实体元素。在MVBA中也可以通过声明调用软件的MDL程序中的API,由于本文主要介绍MVBA,此处不再赘述。
6)洞门工程数量统计提取。三维模型对于工程最直接的作用是方便计算和提取工程数量统计。MVBA是纯面向对象的,因此如需查看体积,能够通过调用SmartSolidElement.ComputeVolume方法提取其体积,在程序中进行运算。其他信息同样可以在程序中查看、提取以及运算。借助于COM编程,MVBA能够操作Excel文件,将所需技术工程数量信息数据写入Excel中并导出。
某隧道为双线电气化铁路隧道,设计速度为120 km/h,隧道轴线里程为DK206+365~DK209+710,隧道全长3 345 m,隧道最大埋深为81 m。隧道全段位于直线上,隧道纵坡为人字坡,设计最大坡度为3‰,其出口洞门采用的是帽檐斜切式洞门。
在用户窗口左侧的参数输入块根据右侧图片浏览块中的Parameter Informs页面中相关参数图的提示输入参数,输入完毕后,即可在PreviewBody页面预览实体线框模型查看参数设置是否合适,点击放置按钮即可动态放置帽檐斜切式洞门实体模型,程序运行仅需2 s即完成创建。参数化模型放置效果如图5所示。工程数量统计自动提取至Excel表格如图6所示。
图5 参数化模型放置效果
图6 工程数量统计自动提取至Excel表格
本文对帽檐斜切式洞门模型的创建从设计思想到程序实现均进行了探索和验证。得出以下结论:
1)本文对于此类洞门的设计思想探讨具有一定的普适性,可为未来服务于隧道工程设计的参数化设计软件的洞门模型创建提供参考。
2)应用MicroStation平台的VBA编程进行二次开发,探索创建非常规形状实体的算法,创建完成帽檐斜切式洞门的参数化模型与自动统计工程量程序,验证了MVBA在创建参数化模型的可行性。
3)探索并验证了MicroStation平台VBA编程的可开发性,通过研究该非常规实体的参数化模型的创建,以期将参数化实体的创建推广至更多类型实体。对于常规实体的参数化创建,MVBA可提供相当丰富的创建方法。
4)该程序可在未来不同项目中重复利用。在正向设计中提供实时预览功能,参数的选取更加方便准确,提高帽檐斜切式洞门模型的设计建模效率,具有一定的使用价值。
积累创建参数化模型是一个过程,对于隧道工程中的每个基础构件的参数化模型的研究仍需大量的实践,并在不断的学习中,推动更高效的隧道工程的参数化设计软件的诞生,在隧道工程设计中实现真正的正向设计,提高设计效率,推动BIM技术在隧道工程的发展与运用,让隧道工程设计走向现代化、高效化与数字化。