基于Autodesk 平台的市政BIM 设计软件二次开发及应用
2023-11-17曹珂瑞尹鹏程
汪 勇,付 豪,曹珂瑞,尹鹏程
(重庆市设计院有限公司,重庆市 400015)
1 概述
1.1 项目简介
两江新区到长寿区快速通道位于重庆市两江新区东侧和长寿区西部,南起于三环高速,顺接快速路六纵线,北沿铜锣山东侧,经石船、统景,跨越御临河,穿越明月山至长寿晏家后,北止于菩提山北侧渝巫路,接顺现状菩提北路。
项目全长23.61 km,标准路幅宽度29 m,包括特长隧道1 座(晏家隧道约4.46 km),中隧道1 座(龙门桥隧道),跨御临河桥梁1 座,主线桥17 座,互通立交4 座(双桥立交、统景立交、河泉立交、齐心大道立交),建设投资约79.73 亿元。该项目总体布置如图1 所示。
图1 两江新区到长寿区快速通道项目区位图
1.2 项目难点
项目是连接重庆市两江新区与长寿区的重要通道,作为重庆市的重点工程,项目投资金额高(79.73亿)、设计工期紧、工程技术复杂、安全风险高。
项目体量大,衍生出一系列难题,如地形面积大,处理难;路线众多,调整难;结构形式复杂,构建难。常规BIM 设计思路已不能很好的应对本项目。故项目组对BIM 设计工具进行定向二次开发以解决本项目中遇到的实际问题。
对于场地设计,本项目原始勘察资料包含较多异常的测量点与等高线。为快速清除勘察资料中的异常数据,项目组通过自研算法并对Civil3D 进行二次开发,实现自动识别并删除出差点,实现超大范围场地模型的创建。
路线设计为道路设计的核心。路线中储存的信息是本项目最为基础的设计要素之一,也是多专业协同的核心数据。本项目受规划方案及用地红线影响,路线数量众多,路线设计调整频繁。为应对此难题,项目组自研Civil3D 辅助工具,实现对EICAD 路线资料的自动识别,并将其转化为Civil3D 路线对象。本方法的应用,不仅解决了项目设计工期短,路线设计变更频繁等问题,还将传统二维设计形式与三维设计模式的衔接,为BIM 正向设计的落地,打下坚实基础。
受地形起伏变化影响,本项目结构数量众多,结构形式复杂。使用传统设计思路推进BIM 设计时,出现诸如上部结构翼缘扭曲,隧道衬砌漏面等情况。项目组根据Revit 特性,以及实际需要,通过二次开发,研发特定Revit 辅助工具,较为理想的解决了上述问题。除此之外,该工具的运用不仅大幅提升了结构模型的创建效率与准确性,还极大缩短了设计周期,提升了设计成果的质量。
项目组通过对Civil3D 和Revit 等传统BIM 设计软件进行二次开发,大幅提升了BIM 模型的创建效率与准确性,为顺利完成江长项目,推动BIM 技术在大型市政工程中的应用,打下了坚实基础。
2 二次开发结合Civil3D 在市政道路工程中的运用
2.1 二次开发结合Civil3D 快速创建数字地形
受测量误差影响,本项目原始地勘资料中包含大量异常数据,需要对地勘数据进行处理才能建立正确的数字地形(如图2)。
图2 地形图中的错误等高线
2.1.1 传统Civil3D 场地设计流程及存在的不足
传统的Civil3D 场地设计流程,通过识别关键性地形要素,如地形点、等高线等创建三维地形曲面(见图3)。如曲面出现明显错误,用户根据等高线变化趋势,手动删除异常数据进行修正。
图3 地形等高线与离散点
以上建模流程对本项目存在以下不足:
(1)人力成本高
江长项目场地范围长度约23.61 km。原始场地设计资料中包含1 748 326 个测量点,其中包括众多异常点。在数十平方千米的场地范围内通过人工识别所有异常点,会耗费相当大的人力成本。
(2)时间成本高
对于Civil3D 的“编辑曲面”功能,由于人工无法一次找到所有出差点,需要多次进行修改,每次对曲面的地形点进行修改后,Civil3D 均会重新计算等高线并生成地形,这一计算过程会耗费大量时间成本。
(3)效果难以预测
对于人工识别的方式删除出差点,难以避免遗漏一些不明显的出错测量点,也很容易误删除正确的地形点。Civil3D 对三维模型的展示能力较差,一般需要将Civil3D 设计成果导入到Infraworks 中设计人员才能看到设计成果。设计人员对删除出差点的效果难以预测,往往需要多次修改并导入,才能得到满足要求的数字地形。
2.1.2 通过自研插件快速创建数字地形
解决2.1.1 中问题的关键在于一次性找到所有的错误地形点,避免Civil3D 的多次生成。为解决这个问题,项目组在程序中引入遗传算法的思想。
遗传起源于对生物系统所进行的计算机模拟研究。它是模仿自然界生物进化机制发展起来的随机全局搜索和优化方法,借鉴了达尔文的进化论和孟德尔的遗传学说。
可以这样想象,将地形当作一个多维曲面,将每个地形点当作这个多维曲面中的山峰,这个多维曲面里面有数不清的“山峰”,对于本问题,遗传算法的任务就是尽量爬到最陡峭的“山峰”,而不是陷落在一些较为平坦的“山峰”,具体步骤如图4。
图4 处理出差点技术路线图
(1)将地形点的二维坐标进行浮点数编码。为避免遗传算法在过大的范围内搜索,提高算法效率和精度,将曲面按设定的大小划分多个区域,每个区域单独编码。
(2)在每个编码范围内随机选取一些点,作为初始种群。
(3)根据点的编码,确定点在曲面上位置,将点在此处的斜率作为个体的适应度。斜率的值越大,适应度越高。与传统遗传算法不同的是,在每轮迭代过程中,如果个体的适应度大于预设值,则记录该个体,并在循环结束后将其作为出差点并删除。
(4)采用轮盘赌选择(Roulette Wheel Selection),确定用来遗传的个体。根据个体的适应度,计算选择概率。
(5)将选择的个体作为父代,通过交叉形成子代,开始循环直至找到满意的解,对于本问题,可以设置斜率的值作为停止条件。
本项目原始勘察资料中包含1 748 326 个地形点,经处理后,共清理155 864 个出错测量点,项目组顺利得到满足设计要求的地形数据(见图5)。该辅助工具的研发与应用,为项目顺利推进提供了有力保障。
图5 两江新区到长寿区快速通道项目数字地形
2.2 二次开发结合Civil3D 快速创建数字地形
截至本文撰稿时,本项目为重庆市最长市政路,设计速度80 km/h,双向6 车道。项目沿线周边水系发达,建筑、轨道、铁路众多,交通组织复杂。设计要求根据沿线地块功能、性质,结合地形地貌,合理进行路线平、纵设计,为地块整治和开发利用创造条件,提高土地价值。故本项目路线数量众多,线路设计调整较为频繁。
2.2.1 传统Civil3D 路线建模流程及存在的不足
Civil3D 可通过“路线创建工具”,通过交点法和积木法进行路线设计,也可通过转换功能将选取的图元转换为路线对象。
但是Civil3D 软件本地化程度较低,使用Civil3D进行路线设计时存在以下不足:一是软件层面缺乏对国内最新规范的支持;二是自带的路线图元类型、路线样式和路线标签样式与国内设计人员使用习惯差异较大。三是相比传统的二维设计软件,缺乏一些常用的设计工具,特别是使用Civil3D 进行出图时,需要进行深度定制。
2.2.2 通过自研插件快速创建三维路线对象
路线设计中的包含信息是最为基础的设计要素,也是多专业协同的核心数据[1]。为解决2.2.1 中所提到的不足,保持传统设计人员设计习惯基本不变,推动BIM 正向设计在行业内落地,项目组采用EICAD 进行路线平曲线设计,开发Civil3D 插件解析EICAD 平曲线设计成果,并自动在Civil3D 中创建路线三维对象,实现了二维设计数据到三维数据的无缝传递。技术路线如图6。
图6 创建Civil3D 线形技术路线图
EICAD 是一款基于AutoCAD 的交互式道路与立交设计软件,在市政工程路线设计中应用较为广泛[2]。为实现设计数据的流转,本文基于Civil3D 的路线功能进行二次开发,通过解析EICAD 数据生成可供Civil3D 读取的数据,利用Civil3D 的创建路线API 一键创建路线模型,解决了二维路线平曲线设计数据到三维路线平曲线设计数据的无缝精确转换问题,实现了在Civil3D 中快速建立路线对象的功能。开发环境选择C#.Net4.5.2、Python 与C3D 2018 SDK。
使用Civil3D API 创建路线对象时,需要通过平曲线计算计算路线图元,具体计算方法可参考文献[4],使用的API 见表1。
表1 Civil3D 创建路线对象AP I
基于Python3.8 和科学计算库Numpy,Sympy 编写上述计算程序,通过线程通讯传递参数与计算结果,在主程序中创建直线与圆曲线图元。
创建直线与圆曲线图元后,根据图元关系,即可创建抛物线图元,之后设定路线名称、样式、桩号、图层、标签集样式等,可实现通过程序自主在Civil3D 中创建路线对象。
本项目通过对Civil3D 进行二次开发,实现了EICAD 设计数据到Civil3D 设计数据的无缝精确流转,大幅提升BIM 设计的精度和效率。经综合评估,此项技术在本次项目共节省工期5 d,为保证工程顺利完工打下了坚实基础。
3 二次开发结合Revit 在市政结构工程中的运用
3.1 传统Revit 结构设计流程及存在的不足
传统的BIM 桥梁设计流程:通过二维图纸,创建上部结构轮廓族,再将轮廓族沿桥梁中心线进行放样融合生成桥梁上部结构,隧道同理。
在江长项目中,传统设计流程存在以下问题:一是结构数量多,设计时间成本大幅增加;二是结构类型复杂,存在大量异形结构,传统BIM 设计方式无法满足业主要求。因此项目组通过对Revit 进行二次开发,以提高设计效率、节省时间成本、解决异形结构构建等问题。
3.2 二次开发环境及其应用
本项目结构形式复杂,数量众多。项目包含大型桥梁18 座,互通立交3 座,穿山隧道3 条,其中晏家隧道全长4.45 km。面对如此大体量、短工期的情况,运用传统BIM 设计模式已无法很好的完成此次设计任务。因此项目组考虑基于Revit 研发专用市政辅助工具,以提高设计效率,提升模型精度。该工具还成功实现结构模型自动生成CAD 图纸等功能。
开发环境为C#.NET Framework4.5.2、Revit 2018 SDK。
Revit 为Autodesk 公司为建筑、结构BIM 设计研发的综合设计工具,在土建BIM 设计领域被广泛应用。Revit 有很强的拓展性,为开发者提供了大量API(接口),第三方开发者能够根据自己的需求调用这些API,实现将自己开发的功能集成到Revit 上,使之成为软件中的一个模块。
本章将阐述,通过对Revit 进行二次开发,实现将项目组需求与Revit 相结合,实现对原有BIM 结构设计思路的优化,实现参数化快速建模、提高BIM设计效率,提升BIM 模型的质量,同时扩展Revit 软件功能,使其更加符合市政工程BIM 设计的使用需求,促进BIM 正向设计的发展。
3.3 二次开发在桥梁中的应用
3.3.1 变截面上部结构
本项目桥梁数量多且结构复杂,以主线14 号桥为例,主线14 号桥上跨匝道B 线、晏家联络道、现状河道及还建道路,综合考虑桥梁跨越以及景观效果,同时考虑到桥梁的经济性布置,桥梁分为左右两幅桥设置,左幅桥梁第三、四、五联,右幅桥梁第一、二、三、七联上部结构采用预制预应力混凝土T 梁,左幅桥梁第一、二联,右幅桥梁第四、五、六联上部结构采用现浇预应力混凝土连续箱梁的结构形式,单箱多室等截面直腹式箱梁。该桥梁结构对模型精度要求较高,传统BIM 设计精度有限,且模型不稳定,故不能满足本项目要求。为提升BIM 模型的精度,项目组采用二次开发的方式来创建桥梁BIM 模型。
对于变截面上部结构,传统建模方式通常是创建一个参数化轮廓族,并利用Dynamo 驱动参数化轮廓族进行放样,生成完整上部结构。该方法的问题在于生成的模型构造不稳定,由于参数化的原因,箱梁翼缘处极易出现变形的情况,如图7 所示。
图7 变截面结构异常
为解决此问题,项目组对Revit 进行二次开发,调用其内部高权限API 创建模型。思路如下:
(1)中心线解析
将道路中心线导入Revit 的方式通常有两种[5]:
方法一是通过Civil3D 数据报告功能,将道路中心点报告数据进行相对坐标处理,把处理好的点报告数据导入Excel 表格,利用点数据生成空间曲线;
方法二是直接将Civil3D 中的道路中心线转化为带有高程的空间曲线,通过API 中的Autodesk.Revit.UI.Selection 手动拾取道路中心线。
本节采用第一种方式进行展示。利用NPOI 程序框架解析目标Excel 并获取相应数据,再利用System.OI.FileStream 和NPOI 框架对Excel 表格进行处理,获取道路中心点的空间坐标信息,丢弃无效数据。利用ReferencePointArray()方法将每一组三维坐标转化为自适应点,然后通过NewCurveByPoints()方法将各自适应点连接成空间三围曲线。其中道路中心点数据如图8 所示。
图8 道路中心点数据
(2)闭合曲线组成放样轮廓
生成桥梁上部结构需要选择桥梁横断面轮廓,在中心线的基础上进行空间放样融合的操作,如图9所示。轮廓通常选择在Revit 中使用公制常规模型来绘制。生成上部结构的技术路线如下:
图9 上部结构二次开技术路线图
a.根据3.2.1 中(1)的方法获得桥梁中心线,利用API 中Plane.CreateByNormalAndOrigin 创建并获取空间曲线上关键控制点的法向平面;
b.使用公制常规模型绘制上部结构轮廓族,外轮廓和箱室轮廓分两次创建;并将轮廓族旋转放置于法向平面上,如图10 所示;
图10 轮廓示意图
c.找到闭合轮廓并对其进行分组。通过GetInstanceGeometry()方法将已经绘制好的轮廓族转化为GeometryElement,遍历其中每一项为直线Line 的元素,将其转化为模型线ModelCurve 对象,最后通过ReferenceArray 将闭合轮廓成组;
d.通过LookupParameter().Set()将参数化族与设计参数相结合,并附上相应参数值;
e.利用ReferenceArrayArray()生成放样融合可用的闭合轮廓,再通过NewLoftForm(bool,ReferenceArrayArray)创建上部结构,如图11 所示。
图11 上部结构模型示意图
3.3.2 桥台桥墩的生成和放置
根据桥台与桥墩结构类型重复性大的特点,项目组考虑用参数化控制桩的长度、桥台宽度等,通过对族参数的设置和传值,实现下部结构的参数化生成,提高模型生成效率。
下部结构的放置主要分为放置点位置和旋转角度两个部分,精确放置点位可由Civil3D 导出数据后,Revit 直接读取,旋转角度部分,对于桥台和桥墩的二次开发应用过程如下:
a.旋转角度可等价于空间曲线上某点的切向量方向和下部结构初始方向的水平夹角,因此考虑借助向量叉积的运算来得出所需的旋转角度。
对于向量a 和向量b:
a 和b 的叉积可写作:
其集合意义为在三维几何中,向量a 和向量b的叉积结果是一个向量,该向量垂直于向量a 和向量b所构成的平面。
因此为计算下部结构旋转角度,首先可先利用Hermite Spline.Tangents []和Curve.Get Points().get_Item ().Position 得到曲线上点的切线和点坐标,通过Plane.CreateByNormalAndOrigin 生成曲线上各点的法向平面;接下来用Plane.CreateByOriginAnd-Basis 创建一个新平面垂直于水平面,所需的参数有三个:平面原点——与法向平面原点相同;BasisX——法向平面的法向量与(0,0,1)的叉积所得向量;BasisY——(0,0,1)向量。
由此可得到一个新的竖向平面,该平面的法向量方向与下部结构原始方向的夹角即为所需旋转角度。
b.将桩号对应的桥台和桥墩族载入到Revit 项目文件,并把族名称及桩号导入Excel 表格,使用NPOI 框架对表格进行读取操作。
在文档中创建FamilyInstance 将下部结构放置在指定位置,然后在各点位处创建一条方向为(0,0,1)旋转参照直线,最后对已经放置的族使用ElementTransformUtils.RotateElement 按水平角度进行旋转,效果如图12 所示。
图12 桥台和桥墩模型示意图
3.4 二次开发在隧道中的应用
3.4.1 隧道主体
本项目共有三个隧道,分别是龙门桥隧道、经开区隧道和晏家隧道。其中晏家隧道为特长隧道,长约4.46 km,衬砌类型多达二十余种,结构复杂,模型设计有一定难度。
隧道主体设计易遇到的问题与桥梁设计相似,主要表现为隧道主体变形、隧道漏面、剪切异常等,如图13 所示。
图13 隧道主体异常情况
图14 隧道二次开发技术路线图
因此,项目组继续对Revit 进行二次开发,调用其API 创建隧道模型。隧道模型设计过程与桥梁类似,首先通过C3D 解析道路中心线,然后通过闭合曲线组成隧道衬砌轮廓,最后在中心线上对轮廓进行放样融合操作,此处不再赘述。其技术路线图如下。
3.4.2 隧道横通道
为保证模型的真实性和精准度,项目组利用二次开发进行了隧道横通道的设计工作。
(1)横通道主体
以左线桩号为基准,截取中心线上横通道所在的点位,利用Line.CreateBound()方法创建一条直线,直线与该点在曲线上的法向量相互垂直。再通过NewLoftForm()方法将横通道轮廓在该直线上进行放样操作,得到横通道主体。
(2)横通道剪切
重新创建一个隧道主体模型,并将NewLoftForm(bool,ReferenceArrayArray)方法中的bool 条件设为false,即可得到一个空心隧道实体。再将空心隧道主体与横通道进行剪切,便生成出一个与隧道主体贴合的横通道模型。最后利用同样的方式实现隧道主体与横通道的剪切,就可以得到一个既保证了模型真实性、又达到设计精度的横通道模型(见图15)。
图15 隧道主体与横通道模型结构
3.5 BIM 二次开发在项目工程中的应用
高精度BIM 模型的创建,为后期模型在工程中的应用提供了必要条件。
3.5.1 工程量统计
利用LookupParameter 节点,查找构件的体积参数,并将参数按需展示出来,按此思路进行二次开发,即可形成专门的工程量查询工具,效果如图16、17 所示。
图16 箱梁钢筋示意图
图17 箱梁钢筋示意图
3.5.2 为构件添加模型属性及编码
本项目结构数量多,为便于BIM 设计成果在可视化平台中进一步应用,项目组需为构件添加模型属性和统一编码,但原生的Revit 并未具备上述功能。此处考虑对软件进行定向开发,利用Family-Manager.AddParameter()方法将编码写入构件的自定义属性,实现对构件的编码功能。
添加模型属性时将属性名称和属性值储存在Excel 表格中,利用Epplus 框架解析并读取属性表。将AddParameter 方法中的参数组属性设为PG_ADSK_MODEL_PROPERTIES(模型属性),用以创建属性分组,如图18 所示。
图18 为构件添加模型属性
为构件添加编码时,利用Epplus 读取编码表。由于编码数量巨大,因此还需创建编码过滤器来筛选出所需的编码类型,如图19。
图19 编码过滤器
选择对应编码后利用AddParameter()方法对构件进行循环编码并生成模型属性,如图20 所示。
图20 构件模型属性
4 结语
对于场地设计,通过自建数学模型,自主开发插件识别并删除出差点,提升了大型场地模型的创建精度与效率。
对于路线设计,本项目路线调整频繁,为满足设计要求,项目组实现对EICAD 路线数据的解析,将解析后的成果导入Civil3D,驱动其快速生成三维路线对象。该工具的应用,不仅实现了二维路线数据到三维路线对象的无缝转换,数据的闭环转移,还保留了传统道路设计师的设计习惯,为BIM 道路正向设计提供有力支撑。
对于结构设计,本项目结构形式复杂,数量众多,BIM 设计和应用都有不小难度。本文抓住问题,深入研究,针对模型异常情况配套开发了Revit 插件来辅助设计。该插件的应用不仅大幅提高了建模效率,缩短了设计周期,还有效提升了模型的精度。该插件的运用为二次开发在市政结构专业的大胆尝试,为BIM 结构正向设计探索了新的方向。
本文对Civil3D 与Revit 进行二次开发,较好的解决了在江长项目BIM 设计中遇到的各类问题,相比传统设计方式,共节省工期22 d,为保障项目顺利完成,推动BIM 技术在山地城市大型市政工程中的应用打下坚实基础。