Autodesk Revit参数化设计之道:Dynamo实战剖析
上QQ阅读APP看书,第一时间看更新

1.12 例题11:应用Dynamo批量放置阶梯座椅

1.解题思路

如图1-112所示,根据要求创建5行7列的阶梯座椅。要达到这个效果,需要两个步骤:

(1)在Revit中按要求插入座椅。

(2)让每行座椅Z轴方向发生偏移。

涉及Revit中构件的调用,很容易就可以想到前面讲的FamilyInstance.ByPoint(通过点放置族)这个节点。有关方向的问题,回顾已有的数学知识,可以猜到和向量有关。

图1-112

2.知识点

● 连缀

● Geometry. Translate(direction)

● Vector. ByCoordinates

● List. Transpose

3.例题详解

生成5行7列的点阵,并将其输入FamilyInstance.ByPoint(通过点放置族)节点即可完成阶梯座椅的放置。

接下来主要研究如何生成点阵。

假定间距为2个单位,Revit中的项目单位为“m”,这样X方向需要有7个点,Y方向需要有5个点;结合列表的知识,输入Point.ByCoordinates(通过坐标系生成点)节点,得到点阵,如图1-113所示。

图1-113

从结果看,7个X坐标只与5个Y坐标进行了运算。但这并不符合题目要求,符合题目要求的结果应该是7个X坐标与5个Y坐标一一运算,形成35个点。

这里就要引入连缀的概念。Dynamo中多数节点都有三种运算方式:最短、最长和叉积。

为了表述更加清楚,创建两组平行的点阵,并用Line.ByStartPointEndPoint(通过两点生成直线)节点连接两点,让大家更容易理解,如图1-114所示。

在最终进行运算的Line.ByStartPointEndPoint(通过两点生成直线)节点上,单击鼠标右键,分别选择连缀的三种运算方式,观察效果,如图1-115所示。

图1-114

图1-115

提示

默认连缀方式为“自动”,而“自动”即为“最短”。

连缀的三种运算效果如图1-116所示。具体应用时,可以视项目情况进行选择。

图1-116

提示

“最短”为按索引序列对应运算,运算到索引长度最短的列表时终止运算。

“最长”为按索引序列对应运算,运算到索引长度最短的列表时,以最短列表的最后一项,与索引长度较长的列表的剩余项,一一运算,以确保索引最长的列表每项数据都有运算。

“叉积”为两列表项一一对应运算,以确保列表的每一项都与其他列表的所有项一一运算。

很明显,5行7列的点阵中,需要使用“叉积”进行处理。运算完成后,切换到Revit界面,即完成5行7列椅子的放置,如图1-117所示。

接下来就是处理“阶梯”的问题。

图1-117

回到Dynamo中,对点进行处理(即把点阵处理成阶梯状),最后再在对应点处放置椅子。

对几何图元的处理,选择Geometry(几何学)→Modifiers(修改)→Geometry(几何学)→Translate(direction)(通过向量移动几何图形)节点,如图1-118所示,通过向量移动几何图元。

图1-118

寻找合适的向量,并输入direction(方向)接口即可。

利用Geometry(几何学)→Abstract(抽象的)→Vector(向量)→ByCoordinates(通过坐标系生成向量)节点,如图1-119所示,根据点创建向量。

图1-119

将5行点阵沿Z轴方向移动一定的距离。

这里假定高度间隔差为0.5个单位。创建5个间距为0.5的列表,接入Vector.ByCoordinates(通过坐标系生成向量)节点的z口,如图1-120所示。

图1-120

可以看到出问题了,希望的结果是沿Y轴方向递增,而目前的结果恰恰相反,是沿X轴方向递增,所以只有5列。这是因为Point.ByCoordinates(通过坐标系生成点)节点生成的列表行列分组反了,如图1-121所示,此时需要转换行和列。

图1-121

在线性代数中有行列式的转置,在Dynamo中也有这样的节点。

如图1-122所示,在List(列表)→Organize(组织)中选择Transpose(列表转置),List.Transpose(列表转置)节点用于列表的转置。

转换列表的行与列后,连入原有节点中,即可完成对点的修改,如图1-123所示。

将视图切换到Revit界面,即可看到完成的5行7列阶梯座椅,如图1-124所示。

图1-122

图1-123

图1-124

提示

应用该脚本放置软件自带的座椅族时,并不能按阶梯放置。是因为软件自带的座椅族默认是基于标高的族,不能设置其标高偏移量。

解决方案:将放置的族更换为可设置标高偏移量的族。应用“公制常规模型”或“公制家具”族样板新建的族均可设置其标高偏移量。