龙空技术网

BIMBase之python建模宝典:倾城“小蛮腰”

PKPM构力学堂 129

前言:

如今我们对“python bim”大概比较讲究,姐妹们都想要知道一些“python bim”的相关资讯。那么小编同时在网络上收集了一些有关“python bim””的相关内容,希望我们能喜欢,小伙伴们一起来学习一下吧!

BIMBase自从2021年发布以来获得了众多关心国产BIM和业务数字化转型的圈内老法师的关注,除了是国内首款完全自主知识产权的BIMBase系统,实现建筑信息模型(BIM)关键核心技术自主研发安全可控。

同时开创了BIM X PYthon的技术跨界混搭风,得以让建模可以通过快速编程实现。

So!

BIMBase团队为了在功能和场景上

帮助大家了解BIMBase

学习建模小技巧

开设了技术专栏

【BIMBase之python建模宝典】

今日分享第二十四弹

应用背景

广州塔倾城"小蛮腰"

自记载以来,人类就有脱离地面,接近苍穹的渴望。在现代建筑产业的发展中,中高层建筑占有愈益明显的地位,直插云霄的摩天大楼体现了现代人的远大抱负。超高层建筑不仅有效地保留了土地资源,同时也是一个国家、一个城市经济实力的体现。

作为有“基建狂魔“之称的中国,国内各大城市也陆续完工了属于自己的地标性建筑。电视塔因发射采用微波,视距覆盖的缘由,成为各地超高层建筑的首要选择。正如天津的天塔、上海的东方明珠塔,都以独特的造型闻名。而本期要介绍的广州新电视塔,更是有着“小蛮腰”的美誉,以世界最高广播电视观光塔之名,矗立在珠江南岸。

在建模宝典往期讲解的玛丽莲·梦露大厦(加拿大密西沙加市的超高层地标性建筑)一文中,相信各位读者已经体会到基于Python接口的BIMBase参数化建模在超高层建筑领域的造型能力,其实时交互、数据提取分析的能力对于建筑方案的优化与调整起着重要作用。接下来,让我们走进“小蛮腰”的内部世界,学习它的BIMBase-python参数化建模方法!

图1 广州新电视塔

技术问题

广州塔倾城"小蛮腰"

在广州新电视塔建模过程中,存在以下难点:

1、电视塔简化思路困难;

2、塔身幕墙塑型困难;

3、立柱和斜撑的定位点捕捉困难;

4、楼板尺寸确定困难。

看到这里大家可别知难而退,我们将对参数化组件建模过程进行详细拆解。而在整个建模过程中,上述问题将得到有效解决。

图2 模型渲染图

思路简介

广州塔倾城"小蛮腰"

在着手建模前,对建筑物整体的分析至关重要,完善的建模思路决定了过程的顺畅与否。电视塔的建筑结构是由一个向上旋转的椭圆形钢外壳变化生成,除中间塔身外,最为显著的便是网状结构外框架(包含立柱、斜撑、环杆)。此外,还有楼板、核心筒及天线桅杆部分。因此我们将整个电视塔拆分为上述四部分进行构造。

01

塔身建模

针对塔身从下至上先缩小后变大的特点,我们理所当然地将塔身的建模分成两个阶段。利用底部、中部、顶部三个椭圆面作为建模基础。Loft函数结合三个截面可以满足拉伸出塔身的功能要求,却不能获得后期立柱斜撑的定位点。所以在这里采用逐层放样,每层的渐变点位由计算获得。

为了后续能对各楼层使用Loft放样,我们采用get_discrete_points_from_section函数接口(详见BIMBase之python建模宝典:隧道锚杆支护)对各截面进行等N点离散。使用for循环嵌套for循环,循环生成塔身并得到截面点集。需要注意的是,塔身上半段均为倾斜截面,需考虑旋转角度。

图3 塔身造型

02

立柱和斜撑的定位点捕捉

电视塔最为困难的步骤在于立柱和斜撑的定位点捕捉。将立柱斜撑分解成单元网格大小的单位构件,由于这些构件均在塔身外侧,需要向外延申一段距离,这个“外”就是网格单元法向量方向,我们需要利用外向单位法向量确定构件创建时的起始点。

在建模过程中,我们定义了外法向量get_central_normal_vector_of_four_points函数,该函数可利用for循环得到的塔身网格四角坐标,经一系列数学运算,将任意三点所在面的法向量取平均值并调整方向,作为该网格的单位外法线。

再将塔身网格点沿外法线方向平移,分别得到立柱与斜撑的起止点位置坐标。建模过程中立柱和斜撑均采用圆柱构件替代,同样使用for循环嵌套for循环,逐层创建上述构件。

图4 网状结构外框架

03

楼板布置

针对楼板的布置,你可能会困惑:塔身是通过遍历后的各层截面经Loft放样得到,上部塔身甚至经过倾斜变形,该如何计算每一楼板的尺寸呢?小编在这告诉你,不需要计算!python二次开发针对尺寸确定困难的情况创建了Intersect函数,旨在对交叉构件直接得到交集部分。因此,我们只需将足够大的楼板移动到对应位置,与塔身求交集即可。

图5 楼板布置

创建过程展示

广州塔倾城"小蛮腰"

01

塔身关键截面确定

确定塔身顶、底、腰三个关键截面,get_discrete_points_from_section()函数将三个截面边缘均匀离散为“平面分割数”个点。若离散点有首尾重合,提前去重,避免放样产生交叉。将关键截面点集平移、旋转至指定位置。

图6 塔身关键截面确定

02

塔身放样&计算塔身表面点

为了获取拉伸体中间部分截面离散点,本模型的拉伸采用逐段Loft的方法。以塔身下半部分为例,外循环遍历确定好的“立面分割1”次,内循环逐个计算单截面上的点位置,通过起始面和终止面的点位和分割数量“立面分割1”,按比例即可计算。在循环中用sec_discrete1存储单个截面的离散点集,再整体装填进list_discrete,便可将所有截面的所有离散点按二维列表方式存储,方便后面制作立柱和斜撑时候的坐标提取。最后把计算得来的各截面离散点借助to_section()函数由点成面。

将全部截面依次置入放样函数Loft中,拉伸出塔身,并获得各截面的点位。

图7 塔身逐截面生成

03

单元网格法线向量

立柱和斜撑分解为最小单位逐个循环制作,由已知的坐标点可定位其位置。为了更加精细化,避免穿模,还应当让立柱和斜撑各自向其所在的单元网格法线方向平移一段距离。计算法线方向由自定义函数完成。

单元网格是由非共面的四点组成,认为其近似的平面法线向量,是任意三点组合的平面共同影响。故先计算三点组成平面的法线向量,即三点组成的任意两个不相等向量的叉积。可利用函数cross()计算两向量叉积,并使用向量单位化函数unitize()进行单位化,得到三点的单位法向量。

依次计算四种三点组合,将得到的四个单位法向量进行向量加运算,并进行单位化,其结果可视为近似的单元法向量。

图8 立柱斜撑单元

04

立柱和斜撑

遍历找到每一个单元网格的四个点,调用自定义函数得到这个网格的法向量。结合立柱和斜撑的位置关系,让立柱和斜撑向法向量方向移动对应距离,就可得到一个精细化的立柱斜撑单元,继续循环制作,得到完整的立柱和斜撑。

05

楼板、核心筒及天线桅杆

本模型在设计高度共设置了五个楼板,采用布尔交Intersect()的方式得到,再补充圆柱形的核心筒及天线桅杆,完成建模。

图9 广州塔全貌

以上就是本次建模宝典的全部内容。本讲重点介绍了广州新电视塔在BIMBase中的建模简化思路以及针对网格面的外法线选取方法。

怎么样,创建出来的模型与实体建筑物是不是相符呢?大家是否还能想到其他创建思路吗?一起挑战一下吧!

点点【在看】,下期内容更精彩!

点击“阅读原文”或复制PC端链接前往,获取源代码包:广州塔.py (仅支持电脑端下载)

标签: #python bim