
1.10 例题9:应用Dynamo放样实体并导入Revit
1.解题思路
学习Revit中形体创建各个命令的概念,有助于学习Dynamo中实体创建的相关节点;形体创建命令中,放样命令用得最多。
放样是指将一个垂直于路径的轮廓,沿着这条路径扫掠而形成的实体。通过对概念的理解,完成放样需要满足两点:
(1)必须有一条路径和一个轮廓。
(2)轮廓必须垂直于路径。
这两点对寻找解决问题的思路至关重要。
本题将在Dynamo中创建如图所示的实体,并将其导入Revit中,从零开始,带着读者去思考,如何寻找节点,如何解决问题。
本题可以分解为两大步骤:
(1)在Dynamo中创建实体(图1-77)。

图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所示。

图1-78
与放样命令一样,Solid.BySweep(通过放样生成实体)节点需要输入轮廓和路径两个端口,如图1-79所示。
接下来需要分别创建一条螺旋线和一个矩形轮廓,并对应接入Solid.BySweep(通过放样生成实体)节点,从而创建目标实体。

图1-79
螺旋线的创建方法本节不再赘述,这里创建了一个半径为20个单位,螺距为30个单位,旋转了2圈的螺旋线。为了排除点预览效果对视觉的影响,在Point.ByCylindricalCoordinates(通过柱面坐标系生成点)上单击鼠标右键,可以关闭节点的预览效果,如图1-80所示。

图1-80
提示
关闭预览效果,可以让操作界面背景更清楚一些,减少干扰。
矩形属于一种特殊的闭合曲线,在Geometry(几何学)下的Curves(线)中,可以找到Rectangle(矩形)的多种创建方法,如图1-81所示。这里需要在垂直于螺旋线的平面上绘制一个矩形,这样才能完成目标放样。
在创建矩形的五个命令中,Rectangle.ByWidthLength(通过长宽生成矩形)(plane,width,length)节点是唯一满足要求的节点。
Rectangle.ByWidthLength(通过长宽生成矩形)(plane,width,length)节点有三个输入端口,如图1-82所示,需要确定一个绘制矩形的平面,以及矩形的长度和宽度。

图1-81

图1-82
接下来的重点就是确定这个Plane(参考平面):一个垂直于曲线上某点的平面。
回想数学知识,与方向有关的概念便是向量。曲线上任意一点都有切线向量,如果曲线上某点的切线向量与平面的法向量相等,那么这个平面一定垂直于该点处的曲线。
平面是一个抽象的概念,在Geometry(几何学)下Abstract(抽象的)中可以找到Plane(参考平面)的多种创建方法,如图1-83所示。在这里需要通过法向量来确定平面,Plane.ByOriginNormal(通过中心法向量生成参考平面)节点便满足要求。

图1-83
Plane.ByOriginNormal(通过中心法向量生成参考平面)节点需要输入两个参数,即平面上的点和通过该点的向量确定平面。
通过分析可知,平面上的点即为曲线上的点,平面的法向量即为曲线该点处的切线向量。因此,问题转换为对曲线的处理。
因为是对曲线的进一步处理,所以在Geometry(几何学)→Curves(线)→Curve(线)的红色“闪电”(操作类)符号类别中寻找,如图1-84所示,Curve.TangentAtParameter(获取曲线参数处的切线向量)节点即为想要的目标节点。

图1-84
Curve.TangentAtParameter(获取曲线参数处的切线向量)节点有两个接入端口,即指定的曲线和曲线位置参数(默认值为0)。
曲线位置参数是指用[0,1]之间的数值,代表曲线上的某一位置,“0”代表曲线的起点,“1”代表曲线的终点,这里选择曲线的起点位置。根据目前已完成的内容,连接已有节点,如图1-85所示。

图1-85
默认平面位置为坐标原点,接下来需要将平面移动到曲线的起点位置。
在Geometry(几何学)→Curves(线)→Curve(线)中,找到Curve.PointAtParameter(获取曲线参数处的点)节点,如图1-86所示。

图1-86
如图1-87所示,将平面移动到曲线的起点位置,输入矩形的长宽值便完成了放样前的准备工作。

图1-87
最后接入Solid.BySweep(放样生成实体)节点便完成了放样实体,如图1-88所示。
提示
注意放样路径是螺旋线。

图1-88
本题第一个形体创建的问题解决了,接下来就是将图元导入Revit中。
与Revit交互有关的节点均在Revit目录下,如图1-89所示。
在Elements(Revit图元)→ImportInstance(导入实例)中选择ByGeometry(通过几何图形导入实例),ImportInstance.ByGeometry(通过几何图形导入实例)节点用于将Dynamo中的一个几何实例输入Revit中,如图1-90所示,ImportInstance.ByGeometries(通过几何图形导入实例)节点则是将Dynamo中的多个几何实例输入Revit中。

图1-89

图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所示。

图1-91

图1-92
如此便完成了本题的所有操作。
在Revit中可以将导入的实体分解,这样便可以对实例进行其他体量操作,如幕墙网格分割等,如图1-93所示。

图1-93
提示1
实体构件曲率很大时不能分解。
提示2
Dynamo文件只能在当前Revit项目运行,在其他Revit项目中无法运行;如果要在另一个Revit项目中运行,需要关闭当前Dynamo文件,重新在需要运行的Revit项目界面重新再打开一次。