APP下载

基于Dynamo的异性水工建筑物快速建模技术研究

2021-08-03杰德尔别克马迪尼叶提贾国新

水利规划与设计 2021年7期
关键词:拱坝蜗壳高程

杰德尔别克·马迪尼叶提,贾国新,晋 强

(1. 新疆农业大学水利与土木工程学院,新疆 乌鲁木齐 830052;2. 河海大学水利水电学院,江苏 南京 210098)

建筑信息模型(Building Information Modeling, BIM)是以三维数字技术为基础,在一个模型中集成了建筑、结构、电气、施工、造价等各方面信息,各部门在设计和修改各自信息时皆使用该模型[1],实现信息共享,从而大大减少了各部门在信息传递和协调过程中繁杂的申请和重建的工作[2- 3]。

得益于其出色的信息协调能力,近些年来BIM技术在水利水电行业中也获得了广泛的应用。但水利工程中异型构件较多,比如翼墙、拱坝、垫层、廊道、蜗壳、尾水管等[4],Autodesk Revit作为一种常用的BIM技术实现软件,虽然提供了很多内置族,但大多为建筑行业中的梁、柱、窗等较为规则的结构[5],对于水利工程中的异型构件并不适用。若是采用常规建族的方法,首先Revit并不支持对于多层样条曲线(如双曲拱坝)的放样操作;其次,由于水工结构的特殊性,对同一种功能的构件,在不同项目中的形状有很大不同,导致模型不能重复修改使用。而Dynamo提供了相应的参数化设计功能和强大的异形体建模能力,可以辅助进行异型构件开发及快速建模。

1 Dynamo技术及优点

Dynamo是一款运行在Autodesk Revit上的可视化编程插件,其通过让用户使用“节点”的不同组合,让用户自由创建自己所需要的参数化设计模型、批量修改参数、批量修改或导出模型属性与几何属性等等,将工程师从机械的重复劳动中解脱出来,大大提高了设计效率。

运用Dynamo进行参数化设计还有以下优点:

(1)操作简单。其基于可视化的编程界面,让不拥有编程基础的人也能很快上手[6]。

(2)参数化设计。通过更改初始条件参数就可以更改生成的模型[7]。

(3)可持续性。可以通过不断积累自定义节点,为后续的设计提供支持[8]。

(4)支持二次开发。支持在其中的IronPython节点中调用Revit API,实现强大的二次开发功能。

(5)代码开源。在全球最大的社交编程及代码托管网站GitHub中可以下载Dynamo的源代码,实现代码的自定义修改,添加自定义功能。

(6)节点库丰富。通过在线节点管理,可以在网络节点库中下载自己所需要的节点[9],并可以分享自己的节点,不断壮大网络节点库。

2 水电站蜗壳参数化快速建模技术

2.1 蜗壳参数化建模设计思路

蜗壳是水电站建筑物中应用最普遍的一种过流部件,一般在反击式水轮机组中使用。蜗壳将水流均匀导入水轮机,同时在导水机构前形成必要的环量以减轻导水轮机的工作强度,使机组运行平稳、高效。由于蜗壳各断面的尺寸不一样,在建模过程中不断定义工作平面和对应参数,在建模过程中带来的一定的困难,通过Dynamo可视化节点可以在短时间内通过几个重要的节点,导入数据和创建出复杂的蜗壳模型。以金属蜗壳为主,建模思路如下:

(1)壳包角、进口断面半径、各断面半径、各断面外围轮廓半径、流量等重要参数编成一定格式导入到Dynamo中。

(2)通过读取的信息,并利用Curve.PlaneAt Parameter重要节点定位蜗壳中心和画出每个断面半径。

(3)对每个断面进行径向平面的定义,并通过Circle.ByCenterPointRadius重要节点连线画出蜗管轴网曲线。

(4)对每个断面各半径进行读取,并通过Solid.Byloft重要节点创建实体。

(5)根据设计创建适当的外围混凝土通过Solid.Difference重要节点进行相切。

2.2 蜗壳参数化建模技术难点解决

2.2.1数据导入

导入数据之前需要把不用的数据删除,把各包角角度、各包角所对应的内外半径、各断面半径等重要参数编辑好,并通过Data.ImportExcel重要节点读取数据,读取时注意英文字母大小写、文件目录及所在的工作表名称等信息。表1为蜗壳主要尺寸导入表。

表1 蜗壳尺寸表

2.2.2蜗管轴网的绘制

由于蜗壳每个包角断面尺寸不一致,同时每个断面绘制平面也不一样,在通常的建模的过程中需要不停的定义工作平面。在Dynamo中建模,首先需要把各断面半径通过Line.ByStartPointEndPoint节点连线,定义好各半径端点,之后通过Curve.PlaneAtParameter节点定义每个断面工作平面,最后通过Circle.ByCenterPointRadius节点连线绘制出蜗管轴网。在后期的导出族文件步骤中,可以把不需要的建模节点隐藏掉。具体节点关系如图1所示。

图1 蜗管轴网绘制节点

2.2.3蜗壳实体创建

在蜗管轴网基础上,通过Circle.ByCenterPoint RadiusNormal节点进一步定义每个断面进水半径,之后通过Solid.ByLoft节点连接各个不同半径的断面图形,创建蜗壳实体结构模型。最后实体模型需要跟蜗壳进水段通过Solid.ByUnion节点进行一定的衔接。

2.2.4模型剪切

由于金属蜗壳有外围的混凝土,在建模过程中需要从Revit创建的外围混凝土把实体的蜗壳模型通过Solid.Difference节点进行布尔运算,剪切出空心蜗壳模型,在此模型基础上可以进一步创建和布置座环、水轮机等其他构件。主要的节点关系如图2所示。图3为创建出来的最终蜗壳模型。

图2 模型剪切主要节点

3 双曲拱坝参数化快速建模技术

3.1 双曲拱坝参数化建模设计思路

图3 蜗壳参数化模型

双曲拱坝是一种高次超静定空间壳体结构,外形和边界条件都很复杂,其坝体上游面受到的荷载通过拱的作用传递到两岸坝肩,并通过梁的作用传递到坝基,承载能力很大,大大减少了坝身断面面积,从而减少了混凝土用量,故而在水工建筑中得到了广泛的应用。

拱坝整体三维模型的设计思路如下:

(1)利用已经设计好的各控制高程的两端及中心拱厚、拱冠梁上游坐标、两端圆心角等参数导入Excel表格中。

(2)通过Dynamo读取表格信息,根据坝型计算出各控制高程的拱弧放样点坐标。

(3)通过样条曲线NurbsCurve.ByPoints节点连接放样点得到每个控制高程的拱弧线。

(4)通过Solid.Loft功能连接每层拱弧线放样出拱坝实体。

(5)将实体导入到Revit项目中,或者导出为sat二进制文件。

建立完成整体三维模型后,考虑对该三维模型的细致操作,如边角剪切、横缝剪切、空间廊道生成等,写成一个个小功能,方便用户自行选择是否使用。

3.2 双曲拱坝建模主要技术难点解决

3.2.1将数据导入Excel表格

数据的导入可以从CAD图纸中的数据表格中导入,且数据填写格式应当满足规定的要求,例如椭圆型拱坝的数据表见表2。

该表每列数据应满足每列标题要求的内容,每一行则代表每个特征高程的数据,特征高程数量没有限制。要注意的是,第二列“拱冠梁上游坐标”以底部拱冠处为零点,以上游为负,下游为正。

3.2.2使用Data.ImportExcel节点读取数据

读取节点需要先通过Input节点打开Excel表格所在文件目录,并通过指定工作表名称,索引到形体数据所在的工作表,最终结果存放于data中,如图4所示。

图4 数据读取节点

3.2.3使用Python节点处理数据

由于在Dynamo界面中编写IronPython脚本时其字体较小,辅助功能不全,调试不便,导致编写不是很方便,本次IronPython脚本文件的编写将在Microsoft Visual Studio中编写完成,并使用Python Script From String节点运行该脚本文件,如图5所示。

该脚本中生成拱弧放样点集的原理如下:

(1)首先建立局部坐标系,原点在拱坝底部拱轴线的拱冠处,x方向以左岸为正,y方向以下游为正,z方向指向上。

(2)再由不同类型的拱坝的拱轴线方程分别推导,得到拱弧线任意一点坐标与其对应半中心角的参数方程,其推导过程在《拱坝CADC的理论与实践》一书中有详细介绍,例如对于椭圆拱坝,其参数方程如下[10- 11]:

表2 椭圆型拱坝体型数据表

图5 IronPython脚本导入节点

(1)

式中,X,Y—局部坐标;A、B—椭圆长短轴长;φ—半中心角,T—拱冠厚;yc—拱冠坐标。

(3)由于已知各高程拱端半中心角,可以将每个高程半中心角等分为n份,由此求出每份对应点的坐标,即可得到拱弧中心线的放样点集。

(4)由于拱弧从拱端到拱冠变拱厚,因此上下游拱弧不再为标准型,可以通过密切圆包络切线法[2]拟合求得各密切圆上的切点,这些切点的集合即可作为拱弧放样点的集合。

Python运行完成的结果将在最后的OUT中输出,结果为脚本中定义的拱坝对象,这样在后续的处理中,只需要调用该对象中的方法就可以完成对拱坝的各种放样剪切操作。

(5)生成拱弧线。首先获取上一步中生成的拱坝对象,并获取对象中的存放点集的实例变量outPoints,可以进一步得到各层特征高程拱弧线上点集的坐标,其以数组的形式存放,数组的结构为:

[...

[特征高程一拱弧的点集,以顺时针排列]

[特征高程二拱弧的点集,以顺时针排列]

[特征高程三拱弧的点集,以顺时针排列]

...]

其次,使用对象中的createCrossCurves方法生成拱弧线数组,本来可以直接在Dynamo界面上用NurbsCurve.ByPoints节点直接放样,但因为拱坝上下游拱圈可使用样条曲线放样生成,两端为直线,因此需要知道两端的点在数组中的位置,最后再用PolyCurve节点将组成拱弧的四条曲线组合为一条连续的曲线。这样的复杂操作不便于在Dynamo可视化界面中通过节点进行,但使用Python将很好处理,于是将该方法写入对象之中,直接调用即可。

(6)生成拱坝实体,导入Revit。这一步较为简单,直接使用上一步生成的拱圈线数组,利用Solid.Loft节点,即可生成拱坝实体,dynamo中效果如图6所示。

图6 Dynamo中拱坝三维实体图

4 批量剪切功能的实现

批量剪切在水工建筑物建模过程中经常遇到的一个难点,尤其是对坝体的横缝与纵缝进行处理时,需要不停地定义每一个缝口,之后每一个坝段之间进行一个相互的衔接处理,本文以拱坝横、纵缝为例说明Dynamo批量剪切的应用。

4.1 两端剪切功能

拱坝两端为了适应地形条件,往往需要修改一定的角度,每层高程的剪切角度可能不一样,可以通过放样操作将各层剪切图形放样为实体,而其各层剪切角度可以由Excel表格导入,其格式见表3。

表3 拱坝剪切数据表

导入后,使用自定义的cutPoints方法进行切角操作,即可进行拱坝两端的剪切,该方法的原理如下:

(1)由于指定的切角高程并不在特征高程上,故该高程的拱端坐标并不知道,解决方案是将之前的拱坝对象中的放样点集outPoints数组进行转置,由上一节可知该数组是将各高程的拱弧点集分别放于一个数组中,最后将这些数组组成一个二维数组,将其转置后,则是每一个小数组中存放的是竖直方向的一列点。

(2)将这些竖直方向点集分别由样条曲线NurbsCurve放样,即可得到拱坝的竖直轮廓线。

(3)利用指定剪切高程的水平面与竖直轮廓线相交,通过Geometry.IntersectAll节点可以得到交点的集合,该交点集合即为对应高程的拱弧轮廓点集。

(4)由拱弧轮廓点集得到拱弧两端边界的直线,将该直线在中点处旋转列表中指定角度,与原直线闭合后可以形成一个三角形,由此可以得到各高程需要剪切的三角形。

(5)将不同高程的三角形通过Loft放样后可以得到需要剪切的实体,最后通过Solid.Difference节点进行bool运算,得到剪切后的坝体。

其中最后两步也可用下面的方法实现:

将拱弧端部直线旋转一定角度后,利用Geometry.Intersect节点求得该直线与对应的上下游拱弧的交点,再利用该交点与之前的拱弧放样点重新组合形成新的拱弧放样点集,最后重新生成拱坝模型。结果如图7所示。

图7 拱坝右端切角三维图

4.2 横缝剪切功能

横缝是坝体内的主要接缝,在实际工程中,不同的坝段可能会设置不同形式的横缝,为改善坝体应力分布,不同的高程也可能采用不同形式的横缝,而横缝的形式可大致分为三种:铅直面横缝、扭曲面横缝、折缝。

其中,铅直面横缝相当于是一条直线自坝体某一高程“一刀切”而形成的竖直平面;扭曲面横缝的缝面是一个连续的扭曲面,可以认为由一条直线自上而下随高程扭转一定角度而形成的扭曲面;折缝的缝面也为一平面,但不是铅直平面,而是倾斜平面。

该功能的实现同样可以通过Excel表格导入横缝坐标信息,但横缝坐标往往为工程大地坐标,需要通过坐标转换转换为局部坐标,这有两种方法:

(1)需要知道三处控制点大地坐标与其对应的局部坐标,通过三维坐标转换公式即可解方程,并求得各坐标系的偏转角度和各方向原点距离,从而将所有大地坐标转化为局部坐标。

(2)首先指定大地坐标系的方位角,和局部坐标系原点处的大地坐标,即可直接由坐标转换公式(3)(4)转换为局部坐标系。

X1=xcos(α)-ysin(α)

(3)

Y1=ycos(α)-xsin(α)

(4)

式中,X1、Y1—局部坐标,x、y—大地坐标,α—大地坐标方位角。

得到局部坐标后,就可以生成各高程横缝线,然后通过Surface.Loft节点将横缝线放样生成缝面,当然各种形式的横缝相连处应当使用PolySurface将各缝面连为一体,再将横缝面加厚生成实体,最后由拱坝实体与横缝实体进行布尔运算,就可得到剪切了横缝的坝体。

由于在剪切的过程中大地坐标系转换为局部坐标系会有误差,导致坝体剪切不完全,比如横缝上下游面的坐标可能在坝面以内几毫米处,此时横缝剪切时该处横缝就不会在坝体表面显示出来,此时,可以通过将横缝面向四周延伸一定距离,从而使坝体剪切完全,延伸方法如下:

(1)对于平面类型横缝面,可由其法向向四周扩展,当然,与其他缝相交处的边界不进行扩展。

(2)对于扭缝,可将组成其放样的直线向两端延伸,而放样的导引线仍然使用原直线组成的导引线,最后将延长的直线进行放样生成曲面。

最后得到的横缝剪切后的模型如图8所示(为表现明显,横缝宽度比实际大)。

图8 坝体横缝剪切三维模型

5 结论

以Dynamo可视化编程技术可以实现复杂水工建筑物的参数化开发,较常规建模方法相比大大提高了工程师的设计效率,也可以通过调用RevitAPI的方式增强Revit的基本功能,快速实验坝体分缝切割工作,减少工程师的重复劳动。此建模技术与思路可推广用于其它各种异型构件的开发,从而实现快速参数化建模操作。

猜你喜欢

拱坝蜗壳高程
大型水电站蜗壳水压试验及保压浇筑
Phytochemicals targeting NF-κB signaling:Potential anti-cancer interventions
焊接蜗壳泵模型开发
海南省北门江中下游流域面积高程积分的应用
高双曲拱坝碾压混凝土夏季施工实践探究
某拱坝稳定温度场及准稳定温度场分析
8848.86m珠峰新高程
整体浇筑堆石混凝土拱坝拱梁分载法分析研究
基于二次曲面函数的高程拟合研究
SDCORS高程代替等级水准测量的研究