![Autodesk Revit参数化设计之道:Dynamo实战剖析](https://wfqqreader-1252317822.image.myqcloud.com/cover/758/43806758/b_43806758.jpg)
1.10 例题9:应用Dynamo放样实体并导入Revit
1.解题思路
学习Revit中形体创建各个命令的概念,有助于学习Dynamo中实体创建的相关节点;形体创建命令中,放样命令用得最多。
放样是指将一个垂直于路径的轮廓,沿着这条路径扫掠而形成的实体。通过对概念的理解,完成放样需要满足两点:
(1)必须有一条路径和一个轮廓。
(2)轮廓必须垂直于路径。
这两点对寻找解决问题的思路至关重要。
本题将在Dynamo中创建如图所示的实体,并将其导入Revit中,从零开始,带着读者去思考,如何寻找节点,如何解决问题。
本题可以分解为两大步骤:
(1)在Dynamo中创建实体(图1-77)。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/45_02.jpg?sign=1739598320-x7HtxJgCu69xcLNw3QPXOe51vBHZLCKU-0-68064ba14d0a4711faa9b81a44c50c1e)
图1-77
(2)将实体导入Revit。
2.知识点
● Dynamo学习思路:从终点节点(结果节点)开始,逆向寻找节点
● 向量
● Solid. BySweep
● Rectangle. ByWidthLength(plane,width,length)
● Plane. ByOriginNormal
● Curve. TangentAtParameter
● Curve. PointAtParameter
● ImportInstance. ByGeometry
3.例题详解
要创建图1-77所示实体形状,很容易想到放样命令。根据放样的概念,需要一条螺旋线做路径,同时需要一个矩形当轮廓。在Dynamo的学习过程中,建议读者秉承从结果出发的思路,那么接下来就是在Dynamo中寻找放样命令的节点。
新建一个体量族,然后切换到Dynamo界面。
实体属于Geometry(几何学),这就圈定了一个范围,接下来可以在Geometry(几何学)下的Solids(实体)中寻找目标节点。
放样可以创建非常规实体,区别于柱体、球体等常规实体,需要在Solids(实体)下的Solid中寻找。根据简单的图标和节点提示说明,很快就可以锁定Solid.BySweep(通过放样生成实体)节点,如图1-78所示。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/46_01.jpg?sign=1739598320-eMtBPsfBYQ02hEHsTuHToYHpOgPzWY1C-0-f7c4ff0caf4a73f7c1cbc451a55d3d85)
图1-78
与放样命令一样,Solid.BySweep(通过放样生成实体)节点需要输入轮廓和路径两个端口,如图1-79所示。
接下来需要分别创建一条螺旋线和一个矩形轮廓,并对应接入Solid.BySweep(通过放样生成实体)节点,从而创建目标实体。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/46_02.jpg?sign=1739598320-HjSvoUCrbIkOqh6k4I81OmsV7HE2TjYi-0-f286a17390da9c3061a683de6c904815)
图1-79
螺旋线的创建方法本节不再赘述,这里创建了一个半径为20个单位,螺距为30个单位,旋转了2圈的螺旋线。为了排除点预览效果对视觉的影响,在Point.ByCylindricalCoordinates(通过柱面坐标系生成点)上单击鼠标右键,可以关闭节点的预览效果,如图1-80所示。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/47_01.jpg?sign=1739598320-inPwiTvsgMjrB9OM4bZJU9IHiERPyjyy-0-be9a9823f286c3eb133677e2fff677fd)
图1-80
提示
关闭预览效果,可以让操作界面背景更清楚一些,减少干扰。
矩形属于一种特殊的闭合曲线,在Geometry(几何学)下的Curves(线)中,可以找到Rectangle(矩形)的多种创建方法,如图1-81所示。这里需要在垂直于螺旋线的平面上绘制一个矩形,这样才能完成目标放样。
在创建矩形的五个命令中,Rectangle.ByWidthLength(通过长宽生成矩形)(plane,width,length)节点是唯一满足要求的节点。
Rectangle.ByWidthLength(通过长宽生成矩形)(plane,width,length)节点有三个输入端口,如图1-82所示,需要确定一个绘制矩形的平面,以及矩形的长度和宽度。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/47_02.jpg?sign=1739598320-aNbuSXDsFsENcx9ktiPvoOxdRAwQub1e-0-96c7e7dc73a318883e390580ec92e77f)
图1-81
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/47_03.jpg?sign=1739598320-zxUjCnTbqObtj0MjuVfWDHUgrgX3FIc6-0-7db1983a1a994ce0a1479ab7cb89d7a4)
图1-82
接下来的重点就是确定这个Plane(参考平面):一个垂直于曲线上某点的平面。
回想数学知识,与方向有关的概念便是向量。曲线上任意一点都有切线向量,如果曲线上某点的切线向量与平面的法向量相等,那么这个平面一定垂直于该点处的曲线。
平面是一个抽象的概念,在Geometry(几何学)下Abstract(抽象的)中可以找到Plane(参考平面)的多种创建方法,如图1-83所示。在这里需要通过法向量来确定平面,Plane.ByOriginNormal(通过中心法向量生成参考平面)节点便满足要求。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/48_01.jpg?sign=1739598320-w4Jh9YofdRkPDKS8R5QeO3dWX3Aeq5KQ-0-d940cd303e218e3ab92d9add59c43146)
图1-83
Plane.ByOriginNormal(通过中心法向量生成参考平面)节点需要输入两个参数,即平面上的点和通过该点的向量确定平面。
通过分析可知,平面上的点即为曲线上的点,平面的法向量即为曲线该点处的切线向量。因此,问题转换为对曲线的处理。
因为是对曲线的进一步处理,所以在Geometry(几何学)→Curves(线)→Curve(线)的红色“闪电”(操作类)符号类别中寻找,如图1-84所示,Curve.TangentAtParameter(获取曲线参数处的切线向量)节点即为想要的目标节点。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/48_02.jpg?sign=1739598320-X8O63Xd4qwO4OqfGtPDlugqeoVXjm6Aq-0-f993834ca6a26284577feefefe17bd9c)
图1-84
Curve.TangentAtParameter(获取曲线参数处的切线向量)节点有两个接入端口,即指定的曲线和曲线位置参数(默认值为0)。
曲线位置参数是指用[0,1]之间的数值,代表曲线上的某一位置,“0”代表曲线的起点,“1”代表曲线的终点,这里选择曲线的起点位置。根据目前已完成的内容,连接已有节点,如图1-85所示。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/48_03.jpg?sign=1739598320-SG6svokP98BXPKg8yMby45CpBhv80VhO-0-a7edfa5757d5e14318cfeb87a1f4747b)
图1-85
默认平面位置为坐标原点,接下来需要将平面移动到曲线的起点位置。
在Geometry(几何学)→Curves(线)→Curve(线)中,找到Curve.PointAtParameter(获取曲线参数处的点)节点,如图1-86所示。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/49_01.jpg?sign=1739598320-TlUX3b6KH6eGdxwb8YvD766eYvJ8dsEP-0-d79685f9e3f81cd25acc189463e66a92)
图1-86
如图1-87所示,将平面移动到曲线的起点位置,输入矩形的长宽值便完成了放样前的准备工作。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/49_02.jpg?sign=1739598320-ECHDD8ITD8m0ZO9eo4qIZ1o8prhCszYy-0-3f1e6f4a961cdef99156170dade50e9d)
图1-87
最后接入Solid.BySweep(放样生成实体)节点便完成了放样实体,如图1-88所示。
提示
注意放样路径是螺旋线。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/49_03.jpg?sign=1739598320-XH9wQiWl4yx22dW2gv2VrsPqAzSPCQSf-0-92e130f72ad511439465c3f7c947d273)
图1-88
本题第一个形体创建的问题解决了,接下来就是将图元导入Revit中。
与Revit交互有关的节点均在Revit目录下,如图1-89所示。
在Elements(Revit图元)→ImportInstance(导入实例)中选择ByGeometry(通过几何图形导入实例),ImportInstance.ByGeometry(通过几何图形导入实例)节点用于将Dynamo中的一个几何实例输入Revit中,如图1-90所示,ImportInstance.ByGeometries(通过几何图形导入实例)节点则是将Dynamo中的多个几何实例输入Revit中。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/50_01.jpg?sign=1739598320-KCs7A8DFoaXX6MtsM8qrmJYontmV3b6X-0-48ed8334f59f57147fea123628d9be67)
图1-89
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/50_02.jpg?sign=1739598320-XO4JGQF6RsdpnO7lv74GTBot5m1wcYTd-0-26de988b753f9bccb4de713aad33d78e)
图1-90
将ImportInstance.ByGeometry(通过几何图形导入实例)节点接入Solid.BySweep(放样生成实体)节点,此时便完成了将Dynamo实例输入Revit中的操作,如图1-91所示。
特别说明,Dynamo中并没有单位,只有单元;但是与Revit相联系的Dynamo节点会引用Revit项目中的单位,也就是说Dynamo中的一个单元和Revit中的“项目单位”是保持一致的。当Revit的项目单位为“mm”时,Dynamo中的一个单元即为Revit中的1mm。
为了便于查看,将Revit中“管理”选项卡下的“项目单位”长度改为“m”,如图1-92所示。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/50_03.jpg?sign=1739598320-OLnRPbgBwChOToMaukxWjMz3aJzCEUoV-0-434f69c8afb3084e9cef21093505c9b8)
图1-91
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/50_04.jpg?sign=1739598320-7Pkzy2uD8UyGXsu9UtgGFr74r5rzmUaA-0-bcf35dfe7fc459a63e2ee0743dee8f4a)
图1-92
如此便完成了本题的所有操作。
在Revit中可以将导入的实体分解,这样便可以对实例进行其他体量操作,如幕墙网格分割等,如图1-93所示。
![](https://epubservercos.yuewen.com/8A2F8F/23083818501903406/epubprivate/OEBPS/Images/51_01.jpg?sign=1739598320-fj46VJ772SYjBd68R5WdHjA4BzXb7Avl-0-d1db8c19d890b69d7fdc113cb3a2d1ec)
图1-93
提示1
实体构件曲率很大时不能分解。
提示2
Dynamo文件只能在当前Revit项目运行,在其他Revit项目中无法运行;如果要在另一个Revit项目中运行,需要关闭当前Dynamo文件,重新在需要运行的Revit项目界面重新再打开一次。