
1.13 例题12:玛丽莲·梦露大厦Dynamo解决方案
1.解题思路
玛丽莲·梦露大厦(Absolute Towers)(图1-125),位于加拿大第七大城市密西沙加市(Mississauga),是一座全曲线的大厦。每一层楼和下一层楼相比都会在水平方向进行不同程度的旋转,最多8°,具体旋转角度见表1-1。

图1-125 玛丽莲·梦露大厦(Absolute Towers)
表1-1

(续)

在Revit体量中,结合自适应的知识可以解决。但是传统体量自适应的方法对软件技术要求较高,不容易掌握,参数化方案体验不好。应用Dynamo解决只需根据设计原理,移动(复制)、旋转每一层的椭圆。最后通过在Dynamo中创建实体后导入Revit。要在Revit中实现形体的创建,也可以通过Dynamo创建每一层的椭圆曲线,再通过Revit生成体量。
2.知识点
● Ellipse. ByOriginRadii
● Geometry. Translate(direction,distance)
● Geometry. Rotate(origin,axis,degrees)
● Watch
3.例题详解
(1)Dynamo中创建56层椭圆。在Geometry(几何学)→Curves(线)→Ellipse(椭圆)中选择Ellipse.ByOriginRadii(通过圆心、a、b值绘制椭圆)。提前将Revit中的“项目单位”改为“m”,在Dynamo中设置椭圆的长边、短边分别为16个单位和9个单位,如图1-126所示,创建椭圆的中心默认值为(0,0,0)。

图1-126
接下来要复制56层椭圆,也就是在Dynamo中按距离移动复制图元。
在Geometry(几何学)→Modifiers(修改)→Geometry(几何图形)中,选择Geometry.Translate(direction,distance)(通过向量方向和距离移动几何图形)节点,如图1-127所示。

图1-127
楼层3m即3个单位,沿Z轴方向移动、复制。在Geometry(几何学)→Abstract(抽象的)→Vector(向量)中选择Vector.ZAxis(获取Z轴单位向量),如图1-128所示。连接已有节点,创建56层即57个椭圆(含首层),如图1-129所示。

图1-128

图1-129
(2)按规律旋转角度,对图元的处理。在Geometry(几何学)→Modifiers(修改)→Geometry(几何学)中选择Rotate(origin,axis,degrees)(旋转几何图形)节点,如图1-130所示。

图1-130
由于origin(原点)没有默认值,故而输入一个(0,0,0)点。“axis”即为Z轴方向向量,如图1-131所示。

图1-131
接下来最关键的问题是degrees(角度)。回顾学过的知识点,这类问题往往转换为对列表的处理,即如何将表1-1通过Dynamo的列表展现。
1~10层,每层增加1°,根据已学的Code Block知识点完成列表,如图1-132所示。

图1-132
11~24层,每层增加8°。需要注意的是第11层是从“a1”列表的最后一项即9°开始增加的,并非0°。也就是要将“a1”列表的最后一项取出,作为新列表的首项。
在这里教大家一个新的Code Block知识点:通过“a1[..]”的形式在“a1”列表中取其中的某一项,如“a1[3]”即“a1”列表中的第3项。
也就是说,最后一项可表示为“a1[-1]”,这样就可以“翻译”表1-1中11~24层的内容了,如图1-133所示。由于11层已经旋转了8°,所以表示为“a1[-1]+8”,利用Display中的Watch节点进行检查。

图1-133
提示
Watch节点用于查看运算结果,不影响运算过程。
同理,可以得到如图1-134所示列表,再通过List Create节点将其变成一个列表。

图1-134
这里需要注意的是,List Create(创建列表)节点生成的是一个二维列表,而Geometry.Rotate(旋转几何图形)节点生成的是一个一维列表,无法一一对应;因此需要用例题4学过的List.Flatten(列表拍平)节点对列表进行展开。
连接已有节点,便完成了57个椭圆的创建,如图1-135所示。

图1-135
(3)在Revit体量中通过模型线来生成实体。通过Dynamo在Revit中生成57个椭圆,再在Revit体量中通过模型线来生成实体。Revit中对点和线有多种类型的区分,见表1-2。
表1-2 Dynamo与Reivt的数据格式

Revit→Elements→ModeCurve(模型线)→ModelCurve.ByCurve(通过Dynamo数据的曲线转换为Revit数据的模型线),如图1-136所示。

图1-136
在Revit中框选所有模型线,单击“创建形体”,然后选择“实心形状”,这便完成了玛丽莲·梦露大厦体量的创建工作,如图1-137所示。

图1-137
保存文件。