![Autodesk Revit参数化设计之道:Dynamo实战剖析](https://wfqqreader-1252317822.image.myqcloud.com/cover/758/43806758/b_43806758.jpg)
1.13 例题12:玛丽莲·梦露大厦Dynamo解决方案
1.解题思路
玛丽莲·梦露大厦(Absolute Towers)(图1-125),位于加拿大第七大城市密西沙加市(Mississauga),是一座全曲线的大厦。每一层楼和下一层楼相比都会在水平方向进行不同程度的旋转,最多8°,具体旋转角度见表1-1。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/61_02.jpg?sign=1739602047-ThWlkpvfEzyjnhkGSqrUpxAS5jXdLUZJ-0-fa9265e16d441216b6df95ddb6541bd6)
图1-125 玛丽莲·梦露大厦(Absolute Towers)
表1-1
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/61_03.jpg?sign=1739602047-OTrn2Oxn79jmqEEA9OfuaRwp3iBZpIS3-0-b68ff096821e3bbbb56be4ffee95546a)
(续)
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/62_01.jpg?sign=1739602047-PXUI3VZRz8vLcWcA0ESBMMMdMouRfoWj-0-9dd1b609a94635f31eda4d7820aff716)
在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)。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/62_02.jpg?sign=1739602047-pcd9hczSbPLdEsEkjbqvlD3S5Md0rIIm-0-d4269c9608eecc495a2e3bd5382c1535)
图1-126
接下来要复制56层椭圆,也就是在Dynamo中按距离移动复制图元。
在Geometry(几何学)→Modifiers(修改)→Geometry(几何图形)中,选择Geometry.Translate(direction,distance)(通过向量方向和距离移动几何图形)节点,如图1-127所示。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/62_03.jpg?sign=1739602047-2nQj6iZhX3ws6cnjWvoRdooNNSrXQGOf-0-4e203dc2620a53543b8811f75138eecd)
图1-127
楼层3m即3个单位,沿Z轴方向移动、复制。在Geometry(几何学)→Abstract(抽象的)→Vector(向量)中选择Vector.ZAxis(获取Z轴单位向量),如图1-128所示。连接已有节点,创建56层即57个椭圆(含首层),如图1-129所示。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/63_01.jpg?sign=1739602047-Oek750MwY3eZBog0NfZxskBumj0OmJ0e-0-ef006a1979ab909c89e8469715e2392b)
图1-128
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/63_02.jpg?sign=1739602047-ySyyc4zMekRWKp4xl0uamzZhKjpfBHe5-0-b39d76246f63339d3006e3aff3ca7d32)
图1-129
(2)按规律旋转角度,对图元的处理。在Geometry(几何学)→Modifiers(修改)→Geometry(几何学)中选择Rotate(origin,axis,degrees)(旋转几何图形)节点,如图1-130所示。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/63_03.jpg?sign=1739602047-x4jIn1I2mRjJyXCUDCvtlypmwgKsiXzW-0-e91f6a1dcbb8f0b5e77d20ebb5f4f174)
图1-130
由于origin(原点)没有默认值,故而输入一个(0,0,0)点。“axis”即为Z轴方向向量,如图1-131所示。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/63_04.jpg?sign=1739602047-wkDBOilw0kk9moR04M8Dx0YiRU4EPL5k-0-183ce9e5c311a24d5b2cebc5ac9f0a64)
图1-131
接下来最关键的问题是degrees(角度)。回顾学过的知识点,这类问题往往转换为对列表的处理,即如何将表1-1通过Dynamo的列表展现。
1~10层,每层增加1°,根据已学的Code Block知识点完成列表,如图1-132所示。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/64_01.jpg?sign=1739602047-uzS3pwoIGXoNUueZ2WTGybPReAqvT2j8-0-4c5a7415160e60d2bb3facf130681c7a)
图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节点进行检查。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/64_02.jpg?sign=1739602047-B8U4qn2p7RHBoThFFonIcLK4Onp0933s-0-5a8be27ae2512cd3188d8b6221be706b)
图1-133
提示
Watch节点用于查看运算结果,不影响运算过程。
同理,可以得到如图1-134所示列表,再通过List Create节点将其变成一个列表。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/64_03.jpg?sign=1739602047-8bfkItJJo9BOGtCInnBJHmR0qbjj6Ryc-0-0b1c6009e0b451758bafaaafaccafb7d)
图1-134
这里需要注意的是,List Create(创建列表)节点生成的是一个二维列表,而Geometry.Rotate(旋转几何图形)节点生成的是一个一维列表,无法一一对应;因此需要用例题4学过的List.Flatten(列表拍平)节点对列表进行展开。
连接已有节点,便完成了57个椭圆的创建,如图1-135所示。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/65_01.jpg?sign=1739602047-EljpnNcb57p6KAbeM0Vlq4Rltm1tWui8-0-01f41c1f9e8e9f51bcdd770dc99d2b90)
图1-135
(3)在Revit体量中通过模型线来生成实体。通过Dynamo在Revit中生成57个椭圆,再在Revit体量中通过模型线来生成实体。Revit中对点和线有多种类型的区分,见表1-2。
表1-2 Dynamo与Reivt的数据格式
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/65_02.jpg?sign=1739602047-eWCLEFRRCwd5FGAmV3HUV1rt5sO7pXlb-0-120ce743feae20b9440715909b391c1f)
Revit→Elements→ModeCurve(模型线)→ModelCurve.ByCurve(通过Dynamo数据的曲线转换为Revit数据的模型线),如图1-136所示。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/65_03.jpg?sign=1739602047-G3v8jR0AgceVfF4ezVcJbqHv2OepPB5C-0-1f70c890f3278a4da5594e50484cae01)
图1-136
在Revit中框选所有模型线,单击“创建形体”,然后选择“实心形状”,这便完成了玛丽莲·梦露大厦体量的创建工作,如图1-137所示。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/66_01.jpg?sign=1739602047-MZ35aAMdbHyZ5ELHXlvj6lpsfL43humN-0-3843a89baa588671e99cc0c583fe8c7a)
图1-137
保存文件。