
1.11 例题10:应用Dynamo批量放置线性植被
1.解题思路
用Revit进行道路景观设计时,不可避免地会有在道路两旁批量放置树木等重复性工作;更重要的是,道路是一条空间曲线,工作量及其准确性不容小觑。例题9是在体量环境中运行Dynamo脚本文件,而本题则是在项目环境中运行。
读取Revit项目中放置树木路径的空间曲线,并在Dynamo中进行等分处理,最后将Revit中的树族放在对应的等分点上(图1-94)。
依然沿用例题9的思路,从结果(终节点)出发,逆向寻找节点。

图1-94
2.知识点
● Family Instance. ByPoint
● Family Types
● Select Model Element
● Element. Geometry
● Curve. PointAtParameter
● Integer Slider
● Dynamo播放器
3.例题详解
在Revit项目环境中,创建一个内建体量,用“通过点的样条曲线”命令,创建两条空间曲线,分别模拟放置不同树木的路径;如图1-95所示。

图1-95
首先明确,最终目的是实现在Revit中放置族构件。
切换至Dynamo界面。因为涉及与Revit的交互,且需要按特定要求放置族实例,所以在Revit→Elements(图元)→FamilyInstance(放置族)中寻找,如图1-96所示。需要按等分点放置族构件,FamilyInstance.ByPoint(通过点放置族)节点即符合要求。

图1-96
如图1-97所示,FamilyInstance.ByPoint(通过点放置族)节点需要输入两个参数:

图1-97
(1)需要放置的族构件。
(2)等分点。
接下来问题的关键便是解决这两个输入端口。
familyType(族类型)需要选择已经载入项目中的族,这里按族类型进行选择。在Revit下的Selection(选择)中寻找目标节点,如图1-98所示;很显然Family Types(族类型)节点便是。

图1-98
选择项目中已载入的“白杨3D”,并连接FamilyInstance.ByPoint(通过点放置族)节点,如图1-99所示。

图1-99
最后便是解决point(点)的问题。
首先,读取Revit中的图元信息到Dynamo。其次,在Dynamo中处理完成后再次将其导入Revit。由于两条路径上的树木种类可能不一样,这里需要分别处理两条路径。
选择路径,同样在Revit下的Selection(选择)中寻找。
如图1-100所示,Select Model Element(选择Reivt实体图元)节点是选择Revit中的图元;Select Model Elements(选择Reivt实体图元)节点则是框选Revit中的多个图元。

图1-100
选择Revit中的图元,其Element(图元)后的数字便是Revit中图元的ID号,表示已被选择,如图1-101所示。

图1-101
获取Revit图元信息到Dynamo,这样才能在Dynamo中处理。
利用Revit→Elements(图元)中的Element.Geometry(获取Revit图元的几何图形)节点便可将图元几何信息读取到Dynamo中,如图1-102所示。
连接节点后,便可以在Dynamo中看见Revit的图元信息,如图1-103所示。

图1-102

图1-103
在曲线上找等分点,则回到了Dynamo自身的问题。
利用Geometry(几何学)→Curves(线)→Curve(线)中的Curve.PointAtParameter(获取曲线参数处的点)节点,按曲线位置参数取点(图1-104)。

图1-104
这里为了更加灵活,可以将等分的个数设置成数字(整数)滑块,如图1-105所示。同时,在Curve.PointAtParameter(获取曲线参数处的点)节点上单击鼠标右键,将连缀改为最长(连缀在后续章节中将单独讲解)。

图1-105
接入FamilyInstance.ByPoint(通过点放置族)节点,便完成了一条路径的布置,如图1-106所示。

图1-106
选择另一条路径,改变树的类型和等分点个数,运行脚本,如图1-107所示。这时候发现,原来已经完成的路径上的树却没有了,也就是说,脚本只能被执行一次。

图1-107
为了解决这个问题,需要引入Dynamo播放器。
将上述完成的节点文件保存,命名为“批量放置线性植被.dyn”。
“管理”→“可视化编程”中的“Dynamo播放器”,如图1-108所示。

图1-108
Dynamo播放器在使用前还需要进行设置:将此节点文件的3个输入端口均勾选上“是输入”,如图1-109所示。

图1-109
启动Dynamo播放器,打开“查看当前文件夹”,将之前写的Dynamo脚本文件放在里面,并单击刷新按钮,如图1-110所示。
单击运行“批量放置线性植被”脚本文件,可以对三个输入端进行操作。这样运行脚本更加方便,不需要再打开Dynamo脚本文件,如图1-111所示。此时便完成了批量放置线性植被的工作。

图1-110

图1-111