基于Grasshopper的空间网格结构快速建模程序编制与应用
0 引言
为了实现复杂的建筑造型, 并能为建筑提供较大的使用空间, 选用空间网格结构是其中一种合理有效的结构方案。对于这类复杂空间结构, 建筑的造型与效果需要结构专业提供快速地计算分析, 建筑形态的调整与结构建模分析往往是交互进行的, 以确保建筑方案可行。然而, 这类空间结构体系在荷载作用下具有三维受力特性, 呈立体工作状态, 结构工程师难以快速判断结构布置方案的合理性, 需借助有限元软件 (如SAP2000, MIDAS, ABAQUS等) 建模分析。而以往手工建模的工作模式耗时费力, 不利于对不同结构方案进行对比, 采用参数化设计是解决上述问题的有效途径之一。
目前国内已有多个项目将参数化设计应用到整个设计过程中, 如中国尊、苏州中心网格屋面、南宁机场、绍兴体育场等[1,2,3,4], 此外结构工程师们还针对不同空间结构体系提出相应的参数化建模思路[5,6,7], 在一定程度上提高了建模效率。从结构参数化应用研究现状来看, 主要集中在快速建立结构几何模型方面, 而结构模型中其他重要的分析参数, 如截面属性赋予、荷载定义等方面并未涉及。可见, 目前结构参数化设计应用仍有较多可以改善之处。
相关研究[8]表明, 对于复杂的建筑工程, 在初步设计阶段进行结构体系与结构布置的比选, 确定合理的结构方案, 可有效地节省工程造价。由此可知, 在项目初步设计阶段采用参数化设计手段, 实现结构方案快速的计算分析与比选, 对项目建造成本控制具有重要意义。考虑到结构参数化设计现存的问题, 本文以应用较广的空间网格结构为对象, 基于Grasshopper参数化设计平台编制了从建筑模型转换为结构分析模型程序, 转换得到的结构分析模型不仅包含几何信息, 而且还赋予了各种构件的截面属性、荷载定义等, 有效地提高结构工程师对复杂空间结构建模分析效率, 将工作重点转移到结构方案的对比与优化上。
1 犀牛软件与Grasshopper的参数化设计平台
得益于计算机技术的飞速发展, 各种应用于建筑工程的参数化设计软件相继出现, 如犀牛软件Rhino+Grasshopper插件、基于CATIA的Digital Project软件、基于Micro Station的Generative Component软件、Maya/MEL及其二次开发插件、采用JAVA语言的Processing软件、采用脚本语言的三维设计软件扩展程序等, 其中Rhino与Grasshopper插件组成的参数化设计平台应用最为广泛。
Grasshopper是一款可视化节点式编程软件[9], 提供功能全面的运算器代替复杂的脚本程序编写, 如图1所示。使用者通过将不同运算器用连线串联起来, 就可构建自己的算法与几何操作。这些运算器主要功能包括数值运算、逻辑运算、数组合树状数据操作、Rhino中各种几何类型的分析与创建等。Rhino与Grasshopper两者是一种联动关系, 彼此间的操作会相互影响。当Grasshopper中的输入数据发生改变时, 在Rhino界面中也会实时动态地反映出图形的变化。此外, Grasshopper还提供了基于.NET框架下的C#, VB和Python的二次开发平台。
2 空间网格结构快速建模程序编制
在众多有限元软件中, CSI公司开发的SAP2000不仅在空间建模方面十分便捷, 而且在整体计算分析和构件设计方面的功能也相对完善。因此, 本文编制的快速建模程序主要是输出可适用于SAP2000进行分析的结构计算模型。
2.1 程序编制思路
对于空间网格这类杆系结构, 目前仅在杆件 (线单元) 建模方面可提高效率。与可进行有限元分析的模型相比, 仍有大量建模信息需要补充, 如构件截面属性赋予、各类荷载的施加、用于荷载施加的面单元生成等。为了有效提高建立复杂空间结构分析模型的效率, 提出了空间网格结构快速建模程序 (图2) 。该程序包括以下几个主要组成部分。
Part1:首先结合建筑所提的条件与曲面尺度, 对获得的建筑造型曲面 (或平面) 进行网格划分。程序中提供了三种网格划分方式:基于网格长度、基于网格数量和基于人工进行划分。
Part2:利用Grasshopper提供能分析几何信息的运算器, 对划分后的网格进行点 (节点) 、线 (杆件) 、面 (面单元) 的信息分离, 并将信息储存在树状数据结构中。
Part3:分别对点、线、面信息进行识别与处理。这部分大致分可为三个子程序。首先, 对节点进行编号, 提取其三维坐标信息。然后综合节点编号与线、面的连接信息, 生成相应的杆件与面单元, 其中用于荷载施加的面单元 (即蒙板过程) 主要采用基于方位角的算法生成。最后在Rhino软件中, 根据预设的构件截面属性和荷载定义, 对已生成的杆、面单元进行图层指定。使用Filter by Layer和Filter by Color运算器, 根据图层命名和图层颜色对几何信息进行筛选分类, 并将信息储存在树状数据结构。
Part4:整合前三部分程序的输出信息, 根据SAP2000对分析模型各种信息定义的格式, 以EXCEL形式输出分析模型。同时也可以输出dxf文件, 只是在导入SAP2000过程中需要根据图层分别导入, 以便在软件中定义构件截面和指定荷载。
程序编制过程中使用大量的运算器 (图3) , 并运用了Python语言进行二次开发。限于篇幅, 主要阐述该程序各个组成部分核心内容与编制流程。
2.2 网格划分
平面和曲面网格划分主要采用Grasshopper中的Paneling Tools插件提供的一系列网格生成运算器来完成, 程序提供三种网格划分方式 (图4) 。Paneling Tools主要通过提取NURBS曲面结构线, 根据输入网格点间距或密度, 在U向和V向结构线上布置网格点, 然后利用各种网格生成算法对网格点进行连线, 生成不同几何形状的网格平面或曲面。
在基于网格长度划分程序中, 如图4 (a) 所示, 运算器A是输入需要被划分的平面或曲面;运算器B是一个数值滑动条, 通过滑动其小方块可改变输入的数值;运算器C的功能是根据运算器B输入的U, V两个方向的网格点间距, 在曲面或平面 (运算器A输出) 上生成网格点;运算器D和E的功能是整理和生成网格 (Mesh) , 并输出、储存在运算器F中, 为下一步网格几何信息分离提供输入参数。通过改变运算器B的数值, 可得到不同网格密度的结构模型, 便于方案比选。
其他两种网格划分方式的编制原理与基于网格长度划分方式一致, 区别在于输入初始参数与网格点生成的方式。基于网格数量进行划分采用的是运算器G, 其功能是根据输入的两个方向的网格点数量, 在平面或曲面上生成网格点。基于人工进行划分方式的程序采用的是运算器H, 其功能是在输入曲线相交处生成网格点。输入的空间曲线可以由结构工程师在Rhino中根据轴网对曲面进行切割所得。
当结构形式为双层、三层网架结构或双层网壳结构时, 可以使用Paneling Tools提供的网格点偏移运算器 (Offset Grid) 得到各层的网架或网壳结构, 而各层之间的腹杆可以根据网格点的空间坐标, 按一定准则用Line运算器生成。
2.3 网格几何信息分离
Grasshopper生成的每个网格Mesh均包含了构成该网格的节点信息、线信息以及由该网格围成封闭的平面或曲面信息。在Part2这部分程序中, 使用Weaverbird插件对Part1生成的网格信息进行分离与整理, 具体操作见图5。
2.4 识别处理几何信息与蒙板生成
为了能够准确输出适用于SAP2000的结构分析模型, Part3部分需要根据SAP2000分析模型的数据格式, 对Part2输出的几何信息进行识别与处理。Part3这部分的程序主要由节点信息处理、杆件信息处理和面单元信息处理这三个子程序组成 (图3) 。
(1) 节点和杆件信息处理
图6, 7分别为节点和杆件信息处理子程序的主要架构。在接入Part2程序分离出的节点与杆件信息后, 使用运算器A1和运算器串A2对节点三维坐标进行分解与编号。运算器串B1同时接入节点编号信息和杆件连接信息, 对杆件两端节点信息进行配对处理。而运算器串B2作用是对杆件进行编号。最后按SAP2000的数据格式进行整理及输出。
(2) 面单元信息处理
图8给出了面单元信息处理子程序的主要架构。在SAP2000中面单元法线方向直接影响各种荷载的作用方向, 因此需统一面单元的法线方向, 以便准确施加荷载。利用向量运算器对每个面单元 (已划分为三角形) 的任意两边线进行叉乘, 判断其与整体坐标Z轴的夹角, 重新调整每个面单元节点连接顺序, 使其满足右手法则, 具体处理见图8中运算器串C1。运算器串C2的作用是对所有面单元进行编号, 最后按SAP2000数据格式输出。
(3) 蒙板程序编制
尽管Grasshopper提供了多种多边形网格划分的处理方式, 如采用Delaunay算法的三角形网格划分方式、程序Part2中Weaverbird插件的三角形网格划分等。但是在本程序调试过程中, 发现对于曲率变化较大、造型复杂的空间曲面, 由上述方法生成的面单元并不能较好地被SAP2000识别。
在空间网格结构计算模型构建过程中, 建立用于施加恒载、活载、风载等荷载的面单元的工作量十分巨大。为了解决面单元 (蒙板) 生成问题和提高程序的普适性, 笔者借助计算机图形学中空间多边形拓扑关系生成算法, 采用Python语言在Grasshopper中进行二次开发, 编制了基于方位角计算的多边形自动构建[10]运算器 (图9) , 用于生成蒙板, 弥补程序Part3中面单元生成方式的不足。
基于方位角计算的多边形自动构建程序只需已知节点空间坐标和杆件起始节点编号, 即可利用多边形搜索最小角法则, 进行2N次 (N为弧段数) 的方位角计算, 就能构建出所有的多边形[11]。蒙板生成运算器主要由以下几部分组成。1) 输入程序Part2分离出来的节点与杆件信息。2) 将空间网格转换为平面网格。大部分空间网格结构的杆件拓扑关系与其平面投影的拓扑关系是一致的, 因此可以先将空间网格投影到某一平面上, 便于计算方位角。考虑到实际建筑工程情况, 程序提供了XY、YZ和ZX三种投影平面, 编写过程中只需根据投影平面屏蔽节点其中一个坐标即可。对于比较复杂的曲面, 可以人工进行分块后, 分批进行网格划分、投影与生成蒙板。3) 网格杆件的方位角计算。在得到平面网格后就可以计算所有杆件的方位角。方位角的具体计算过程详见文献[10]。本程序的方位角定义为:从平面直角坐标系 (XY投影平面) X轴的正半轴起, 逆时针转到与某个杆件重合时的角度。对于YZ和ZX投影平面, 可将X轴分别替换为Y轴和Z轴。4) 最小多边形搜索。最小多边形的搜索算法详见文献[11], 在此不再叙述。图9给出了蒙板程序中自动搜索构建多边形的Python代码。5) 平面网格还原为空间网格。
3 工程应用实例
以一座艺术文化中心的钢屋盖结构方案设计为例, 详细介绍快速建模程序在结构初步设计阶段的应用与方案对比分析。
3.1 工程概况
该艺术文化中心位于广西梧州市, 总建筑面积约为5万m2, 地下1层, 地上3层 (局部5层) , 建筑高度约为30~36m, 是集剧院、音乐厅、电影院、艺术培训等一体的公共建筑。根据建筑功能, 整个文化中心在地上分为三个单体:1 200座的大剧院、500座的音乐厅、5个放映厅的电影院。艺术文化中心建筑Rhino模型见图10, 典型建筑平面见图11。
艺术文化中心的外观造型源于舞者跳跃腾空时裙摆的形态, 据此建筑师把屋盖设计为三片形似飘起裙子的空间曲面, 将三个功能区在屋顶处连为一体。由于造型需要, 各个区屋盖均存在10~15m的悬挑。在三个功能区交汇处设置了一个近似三角形的曲面玻璃屋顶, 最大跨度约为32m。
3.2 结构选型
综合考虑结构高度、跨度、抗震设防烈度 (6度) 、抗震设防类别 (乙类) 、建筑功能等因素, 大剧院、音乐厅和电影院拟均采用钢筋混凝土框架-剪力墙结构体系。根据建筑外观要求, 整个屋盖采用金属面板外包, 且室外部分建筑完成厚度要求不大于1.5m。因此, 解决屋盖的大跨度与大悬挑问题成为结构设计的重点之一。屋盖初步拟采用主次钢梁+单层网壳的结构形式, 整个钢屋盖支承在三个功能区的混凝土结构顶部伞状支撑和玻璃幕墙钢柱上, 如图11所示。图中虚线和实线分别表示内部混凝土结构和幕墙钢柱的支承边界。
3.3 快速建模程序的应用与结构方案比选
钢屋盖设计不但是本工程的难点和重点, 而且也是土建部分工程造价的主要构成。因此利用快速建模程序, 在较短时间内建立多个不同方案结构模型进行分析对比, 在初步设计阶段制定出受力与变形合理的结构方案, 对工程造价控制十分重要。本文重点阐述快速建模程序在钢屋盖结构方案对比分析过程中的应用。在SAP2000模型中, 屋面的恒载和活载分别按1, 0.5k N/m2施加于蒙板程序生成的虚面上, 设置在混凝土结构顶的伞状支撑与周边幕墙钢柱的支撑暂时简化为固定铰支座来考虑。
(1) 方案一。根据初步设计荷载、支承条件等, 按正交方式来布置屋面主次钢梁。主钢梁主要支承于幕墙钢柱顶及设置在混凝土结构顶部的伞状支撑上, 构成类似门式刚架的受力形式。主次梁布置方向与幕墙钢柱顶支承环梁位置见图12, 主钢梁初定为梁高800~1 000mm的工字钢梁, 主梁间距介于6~8m。利用快速建模程序, 对屋面的Rhino模型曲面按网格尺寸 (主梁间距) 的大小进行自动划分, 并且输出SAP2000分析模型, 如图13所示。
由图12可知, 钢屋盖在竖向荷载作用下变形较大, 竖向变形最大的部位出现在各区屋面悬挑最大处, 最大可达321mm, 超过正常使用状态的变形限值。在构件强度方面, 大部分屋盖钢构件的应力比在0.65以下, 满足强度要求。通过反复调整梁高与网格密度 (调整主梁间距) , 以满足正常使用极限状态要求。经计算分析, 如果采用主次梁的正交布置方式, 梁高需达到1 200~1 500mm, 主梁间距要介于3~4m, 才能满足正常使用状态要求, 但这样的尺度是建筑师无法接受的。
(2) 方案二。由方案一的分析结果可知, 控制屋盖大悬挑的变形问题是关键。为尽量减小屋面钢梁的悬挑长度, 按放射状的方式布置屋面钢梁 (图14) 。各区屋面在幕墙柱顶和混凝土结构顶部的伞状支撑处均设置直径为900mm的圆管主环梁, 用作支承各区的径向梁, 并且控制各根径向梁与幕墙钢柱顶主环梁的交点之间的距离为3.5~4.5m, 以此保证外悬挑屋面具有足够的刚度。
采用快速建模程序中的人工划分方式划分屋面网格, 径向梁为梁高450~850mm的工字钢梁。同时通过调整悬挑内跨的跨度来满足悬挑端的变形要求。玻璃屋顶采用正交布置的单层网壳结构形式, 其网格划分使用快速建模程序提供的按网格尺寸自动划分技术, 杆件截面为500×180的钢箱梁。
由图14知, 与方案一相比, 各区屋盖悬挑端最大变形均得到显著减小, 最大减幅达52%, 屋盖各区竖向变形基本满足正常使用状态要求。但玻璃屋面的竖向变形较大, 约为176mm, 需进一步调整。
(3) 方案三。分析方案二计算结果可知, 径向梁布置较密且玻璃屋面竖向变形较大, 在方案二基础上, 对整个钢屋盖结构布置进行优化, 因此提出方案三 (图15) 。该方案改变了各区混凝土结构顶部伞状支撑的支承边界形状, 并且该边界内主次梁采用正交的方式布置, 主梁支承在伞状支撑和边界梁上, 以此减小径向梁布置的密度。伞状支撑边界以外的主梁仍为放射状的径向和环向方式布置, 径向梁主要支承于伞状支撑边界梁与幕墙钢柱环梁上。
将玻璃屋面的单层网壳布置方式改为如下:以该屋面平面投影形状的形心为中心, 按放射状布置钢箱梁, 并使其在边界处与三个区屋面的径向梁布置连续起来, 形成共同工作受力。经调整试算可知, 网格密度控制在2.5~3.5m之间时, 玻璃顶的单层网壳结构在受力和变形上均较为合理。
由图15可知, 在正常使用状态下, 方案三的结构布置形式基本满足规范变形要求, 并且所有钢构件的应力比均小于0.85。
对比三个屋盖结构方案的分析结果可知, 方案一的钢屋盖结构主要存在竖向变形过大的问题, 方案二、三的钢屋盖结构在变形和构件强度方面均满足要求。通过统计发现, 方案三的用钢量比方案一和二减少约8%~10%。在初步设计阶段, 可认为方案三是比较合理且经济的结构方案, 可以此结构布置方案为基础, 在后续设计阶段继续调整与优化。
4 结论
(1) 本文编制的快速建模程序可有效提高结构工程师的工作效率, 节省用在建立复杂结构分析模型上的时间。让结构工程师能将更多精力投放在结构方案比选、结构布置优化等方面上, 从而制定出合理且经济的结构方案, 达到节省工程造价的目标, 对大型复杂公共建筑项目的造价控制具有重要意义。
(2) 详细介绍了空间网格结构快速建模程序的编制思路、程序构架和关键部分代码, 为结构工程师今后进行类似功能开发提供参考, 使参数化设计能够应用到不同的结构体系设计中, 扩展其应用范围。
(3) 采用Python语言进行二次开发, 编制基于方位角计算的蒙板运算器, 拓展了Grasshopper在自动构建空间面单元这方面的能力。
(4) 通过一个工程实例的应用, 验证了本程序的有效性和实用性。在该工程的钢屋盖结构方案比选中, 通过使用快速建模程序, 在较短时间内实现了多个屋盖结构方案建模与分析, 从而得到一个受力、变形合理且经济的初步结构布置方案。
[2]张谨, 陈伟, 杨律磊, 等.苏州中心超长异形网格屋面设计[J].建筑钢结构进展, 2015, 17 (3) :24-31.
[3]王伟, 奚悦.南宁机场参数化设计应用介绍[J].建筑创作, 2012, 24 (6) :88-92.
[4]李华峰, 崔建华, 甘明, 等.BIM技术在绍兴体育场开合结构设计中的应用[J].建筑结构, 2013, 43 (17) :144-148.
[5]朱鸣, 王春磊.使用犀牛软件及Grasshopper插件实现双层网壳结构快速建模[J].建筑结构, 2012, 42 (S2) :424-427.
[6]严萌.单曲面网架结构的参数模型研究[J].湖南理工学院学报 (自然科学版) , 2012, 25 (2) :73-76.
[7]郑洋.参数化建模在肋环型网格结构中的应用[J].江西科学, 2015, 33 (2) :224-226.
[8]PETER GRIEM.Integrated project delivery using BIM[J].Structure Magazine, 2009 (4) :21-24.
[9] 曾旭东, 王大川, 陈辉.Rhinoceros&Grasshopper参数化建模[M].武汉:华中科技大学出版社, 2014:18-20.
[10]闫浩文, 杨维芳, 陈全功, 等.基于方位角计算的拓扑多边形自动构建快速算法[J].中国图像图形学报, 2000, 5 (7) :563-567.
[11]陈庆军, 谢小东, 郭金龙, 等.利用.NET平台及SAP2000 API实现空间杆系结构的蒙板功能[J].空间结构, 2012, 18 (2) :64-69.