![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=1739039843-jXFItRjZvkyrjj4BIwQuotRk56BYVHJ2-0-0fb1dd88550b9f5ea7b87cd2eba2b456)
图1-125 玛丽莲·梦露大厦(Absolute Towers)
表1-1
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/61_03.jpg?sign=1739039843-jR7IxLwLDrdMgtSDYLtO2OgpXDVeCGl3-0-7b7244d27b4d49216868e4c3123fa62f)
(续)
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/62_01.jpg?sign=1739039843-gFX9jUxu2fbp1lNV3YSmJLY0aIySxieN-0-36a3a37dc68c346e42f3a064ef8df3b8)
在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=1739039843-cJ1EJdYniJcIs7bR8VrZX81usf4A0euH-0-3c49b8798d84ebf66d2e1f4d386e15ec)
图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=1739039843-5eFL7riCl3PPVHdetUwrgUfpeho2lNMB-0-1fe0d46542464d96b5385a7642ed7a9d)
图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=1739039843-HSCSdHWKD0HLlJd2w8HAuTOrT1U2CkEA-0-0fb2d829ae811b5f80e8b700c691f36d)
图1-128
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/63_02.jpg?sign=1739039843-9hevtklgCQEs3YzeJDZztt3YMdDOBoMc-0-117491fd17c8c001724948a4826185a5)
图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=1739039843-H2GvqY1eHvXviQ93ipUzCP33RJC5cpOO-0-df350252ca664541d1eb022fb4f6f85f)
图1-130
由于origin(原点)没有默认值,故而输入一个(0,0,0)点。“axis”即为Z轴方向向量,如图1-131所示。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/63_04.jpg?sign=1739039843-HnBBSdjS5riuZIsRzDlyKckGwgzykh0K-0-013dd22459fbb82ffa4355c5ee69f238)
图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=1739039843-YaZtJpI0d0G4w1gOxmezOBL5BeJB1BgK-0-3708638914cace00b7a4b5a71f6eca6e)
图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=1739039843-7JR1r2vr2oDYZUOQLGAK0UduH6BN06Cz-0-b20749720c481aff60ff0bf254095ea0)
图1-133
提示
Watch节点用于查看运算结果,不影响运算过程。
同理,可以得到如图1-134所示列表,再通过List Create节点将其变成一个列表。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/64_03.jpg?sign=1739039843-swDh9sBF9ix33Bns8tJuKPmj6f7Yc4FC-0-be3f5ea81f6f55670b9a97c7cdf1b785)
图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=1739039843-rIajDRXtVpJlimrBB7EGRMhBNG9OVbxs-0-da204202fbfa1c8504b3ff64e70a689f)
图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=1739039843-zvYa5RaSai4m5TeSybwYL0DL63egvJEk-0-00d9538b4653037d599a8c25fec13d99)
Revit→Elements→ModeCurve(模型线)→ModelCurve.ByCurve(通过Dynamo数据的曲线转换为Revit数据的模型线),如图1-136所示。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/65_03.jpg?sign=1739039843-zOtKnrfnee9yGXy5mSPIVDz1lOFqfRQx-0-437d751e209ba9e73a38ec0d83f8376b)
图1-136
在Revit中框选所有模型线,单击“创建形体”,然后选择“实心形状”,这便完成了玛丽莲·梦露大厦体量的创建工作,如图1-137所示。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/66_01.jpg?sign=1739039843-fijNVcfKYdhRfk81nk8chl944xfaITFy-0-7024abe797562a5e4741bf505b48b09c)
图1-137
保存文件。