Dynamo数据淘金——06//使用For循环批量赋值

对元素的多个参数进行赋值时,需要复制多个SetParameterByName节点,后期修改与维护较为困难.本节将一步步深入使用该节点,直至发现其不足后,通过Python Sript节点,使用Python语言的For循环语句来批量实现赋值功能.

我们将一步步通过单个元素、多个元素的赋值开始.
(一)单个元素
1.单个参数赋值
(1)打开Revit自带的案例文件,激活Level 1平面.

(2)打开Dynamo,新建文件,编写如下节点,选择左侧房间:

(3)运行后,该房间的"注释"参数被赋文字--"参数被赋值".

2.多个参数赋值
如何执行多个参数赋值?假定要对该房间的"注释"\"占用"\"部门"都赋值--"该参数被赋值",节点应该如下,运行后完成了多个参数赋值:

如果参数过多(这种现象常见),就要复制过多的参数节点.能否仅使用一个节点来实现一次性对多个参数赋值?编辑以下节点,运行后,发现可行.

(二)多个元素
实际应用中,不可能仅仅对一个房间元素进行赋值,往往是多个元素一起赋值.而多个元素同时赋值一个参数是没问题的,那么是否可以实现同时对多个元素的多个参数进行赋值呢?
把节点修改如下:

运行后发现,输出仅为7个房间,因此肯定有误(整个模型房间不止7个)!那么能否修改"连缀"属性(后续会提到连缀),但是想来想去,还是算了.毕竟三个列表之间的连缀很难实现.
(三)使用Python Script节点
这时我们可以使用Python Script节点通过For循环语句来实现批量赋值(请保证dynamo已按照第1节进行了升级).
(1)首先新建Python Script节点,并把接入三个输入端口.

(2)双击打开节点,添加代码,导入Revit节点,以便使用SetParameterByName节点.

(3)添加代码,接收输入端.

(4)添加For循环语句.有一点注意,SetParameterByName()方法在使用时只能一次对一个元素的一个参数进行赋值.

(5)运行后,赋值成功.
有一点特别需要注意,就是在实际应用中,data_list 数据不可能是相同的内容--"该参数被赋值",本案例仅仅为了方便而已.实际的data_list 数据应该是二级嵌套列表.因此,实际上,SetParameterByName()方法中的代码应该为:
element_list[j].SetParameterByName(para_list[i],data_list[j][i])
源文件都在该专栏的链接里面哈,所以,今天你又学废了吗?