陈蕾蕾 ,刘占午 ,徐 鹏 ,何 琴
(1.江苏省水利勘测设计研究院有限公司,江苏 扬州 225127;2.江苏省水利建设工程有限公司,江苏 扬州 225007;3.江苏省水利科学研究院,江苏 南京 210017)
21 世纪,以信息化技术为支撑,通过云计算、大数据、物联网、移动终端、人工智能、水利模型、传感器等新兴技术的应用[1],水利事业进入蓬勃发展的新时期,传统水利正逐步转化成现代化水利[2]。随着国家对水利信息化工作重视度的不断提高,BIM(Building Information Modeling),即建筑信息模型技术逐渐应用于水利工程项目中[3]。水利工程建筑物 BIM 模型建立一个真实描述工程设计的数字信息模型,是实现可视化仿真技术的基础[4]。水利工程与普通建筑工程特点不同,其建模顺序、方法、要求也会有所不同,因此需要进行定制化建模[5]。Autodesk 公司开发的 Revit 软件可进行参数化三维建模、协同设计,为设计人员提供真实的三维视角[6],且 Revit 软件开放二次开发接口 API,允许用户通过接口解析 Revit 数据并根据需求进行定制化开发[7]。
Revit 平台上手动创建扶壁式挡土墙主要分为2 个步骤:1)通过轮廓放样[8]创建 1 个挡土墙;2)通过轮廓放样创建 1 个扶壁,将扶壁放置在挡土墙导线上并根据需求进行阵列和偏转。对于单直线或者单圆弧导线型挡土墙扶壁放置操作并不复杂,但是对于导线为组合线型,如折线型或者直线与圆弧的组合型,扶壁放置尤为困难,需要手动计算扶壁放置的间距和旋转角度。若是采用基于 Revit 平台的扶壁式挡土墙三维建模二次开发程序[9]可通过代码计算扶壁间距和旋转角度,提高了建模效率,如图1 和 2 所示,但是二次开发程序中固定了导线的类型(直线或者圆弧)和挡土墙方向(只能为正向),并未考虑多线型导线和反向挡土墙模型的扶壁放置,因此本研究基于 Revit 平台和 C# 技术研发扶壁放置程序,可通过选择导线和墙体两侧边缘线快速放置扶壁,满足异型导线和正反向悬臂式挡土墙的扶壁放置。
图1 扶壁式挡土墙插件轮廓设置
扶壁放置程序二次开发是通过 Revit 开放的接口 API 和 C# 技术将手动操作步骤以程序代替的过程,利用后台代码执行人工和计算操作从而简化整个操作流程,提高用户建模效率,简化建模过程。
扶壁放置程序通过模拟手动放置扶壁的过程以程序代替人力的方式简化用户操作,与以往开发的二次程序略有不同,扶壁放置程序需要与用户进行多次交互选择,比如需要用户选择“扶壁放置路径”,并选择“挡墙两侧边缘线”,且因为扶壁与原来的挡墙并不是一个整体,需要代码在底层将扶壁与挡墙进行连接,因此扶壁放置程序涉及 Revit 的两大类 UIDocument 和 Document[10]。UIDocument类对主要提供获取元素(Selection)、显示元素(Show Elements)和视图管理(Active Document)3 种功能,Document 类可以打开或创建 Revit 的族或项目文件并在已打开的当前文件中进行拉伸(Extrusion)、放样(Sweep)、连接(Join)等操作。
图2 扶壁式挡土墙插件导线设置
手动放置扶壁的 UI 界面操作主要包含放样创建单个扶壁模型,阵列、旋转偏移角度及墙体和扶壁模型连接[11],对于导线比较复杂的挡土墙阵列和偏转角度涉及计算,尤其是偏转角度需要每个扶壁独立进行,无法批量操作。扶壁放置程序的二次开发借鉴了手动操作步骤,其设计流程如图3 所示,用户根据界面提示拾取挡土墙的导线和两侧边缘线,拾取操作完成后界面会跳出扶壁参数设置[12]界面如图4 所示,该界面中包含扶壁的轮廓参数设置、扶壁放置个数、间距显示及拾取的导线信息。程序根据界面中输入的扶壁个数、扶壁厚度导线的长度计算扶壁之间的间距并得到扶壁的偏移点,通过两侧边缘线计算挡土墙的方向及扶壁的偏转角度,最后批量生成符合程序判定要求的扶壁并将他们与挡土墙连接使其成为一个整体。
图3 二次开发设计流程图
图4 扶壁参数设置界面
扶壁放置程序有两大难点:1)通过导线和两侧边缘线判断当前挡土墙是正向还是反向;2)对选择的导线进行阵列,导线的数量和类型由用户手动操作选择,并根据选择的导线类型和挡墙的方向计算扶壁放置后的偏转角度。
判断挡土墙的方向主要依赖挡土墙两侧边缘线和与其相交的导线,直线型与圆弧型导线判断方向的方法并不一致,直线型导线判断方向的主要步骤是:1)计算直线和两侧边缘线某一条线的交点;2)根据交点确定是否反置边缘线,确保直线和边缘线是正向向量的关系;3)计算直线与边缘线的法线向量;4)根据法线向量的Z值得到挡土墙的方向,如果Z> 0 则是正向,Z< 0 则是反向。
圆弧型导线判断方向的主要步骤是:1)计算圆弧和两侧边缘线某一条线的交点;2)以交点为起点,圆弧的圆心为终点,生成新的一段直线;3)判断直线与有交点的边缘线的关系,如果是重合或者完全相同则是正向,否则就是反向,其判断流程图如图5 所示。
图5 判断流程图
选中的导线集合通常是无序状态,计算扶壁的阵列点之前需要先将导线排序,即确保选中的导线集合是首尾相连的状态,默认排序规则是从左向右;扶壁的阵列算法是一个大循环,以扶壁间距为度量单位对导线集合进行切割,为确保偏转是扶壁能与墙体有效连接,不存在缝隙,阵列算法中最后1 个放置点需要偏移“扶壁厚度”单位;扶壁的旋转算法是 2 层循环,外层循环的主体是导线集合,内层循环的主体是阵列算法中得到的阵列点集,圆弧型导线计算旋转角度时还需考虑挡土墙的方向,具体的扶壁阵列、旋转算法描述如图6 所示。
图6 扶壁阵列、旋转算法解析
Revit 平台中扶壁创建方式主要包含手动、扶壁式挡土墙二次开发和扶壁放置 3 种插件创建方式,它们的操作步骤各有不同,但其硬件环境均要求单核或者多核 intel/英特尔 i5 以上 CPU 且内存 2 GB 以上 PC 机,软件环境均要求 Windows 7.0(64 位)以上操作系统且安装 Revit 2014 以上版本软件,3 种创建方式的效率和适用范围对比如表1 所示。
表1 扶壁放置插件使用说明及效率和适用范围对比表
扶壁放置插件可明显提高扶壁模型创建的效率并且具有广泛的适用范围,插件的效果展示如图7所示,利用扶壁放置程序为 19 个悬臂式挡土墙放置扶壁一共只需大约 12 min,无论导线的类型是直线、圆弧或者复杂类型,无论挡土墙的方向是正向还是反向,扶壁放置程序均可以根据用户需求配置扶壁。
图7 扶壁放置程序效果展示图
引淮入石泵站工程房山翻水站工程曾采用扶壁放置插件完成部分挡土墙设计,设计结果满足施工图设计要求,该插件的通用性比较强,适用于不同类型的挡土墙,如悬臂式或空箱式挡土墙,正向或反向挡土墙,异型或常规导线挡土墙,只需选择导线和两侧边缘线并输入界面参数即可快速有效地完成扶壁放置,且扶壁放置程序模拟手动放置扶壁过程并将底层算法封装,用户使用观感简易方便,不会觉得操作复杂难懂,可明显提高用户使用的积极性。但是使用扶壁放置程序有一个前提,Revit 当前活动文档中必须已经创建或者导入 1 个挡土墙,因此用户需要对 Revit 软件有相应的知识储备和操作经验。扶壁放置程序类似于工具包,为挡土墙主体服务,挡土墙主体缺少某个构件时,工具包可方便迅速地弥补模型的不足,以此为借鉴经验可根据需求研发地连墙、挡浪板、桩基等插件工具包。