Dynamo数据淘金——07//列表的层级与连缀属性

这一节,将以第4节为基础,讲解列表的两个重要属性:层级与连缀.同样的,仍以Revit自带的案例(rac_basic_sample_project)作为数据源.

一、层级
前面已经强调过,dynamo与Excel交互时,所有数据都是以列表的结构形式存储的.这些数据对应到Excel中,每一行就是一个列表,很多行组成了一个工作表单,而工作表单是更大的一个列表.
如果用列表的方式存储,就是:
工作表单第一行数据:list 0
工作表单第二行数据:list 1
工作表单第三行数据:list 2
……
工作表单第N行数据:list (N-1)
所有这些数据汇总成整个工作表单:
整个工作表单(列表list)=[list0, list1, list2, …,list(N-1)]
如果用Dynamo的呈现形式则为:
list
0 list
1 list
2 list
……
(N-1)list
0,1,2,……,N-1,这些数字是索引值.
由上可知,用列表存储数据时,不可避免的出现了列表的嵌套,因此就形成了列表的层级.
整个工作单形成的列表是第一层级:@L1
每一行数据形成的列表是第二层级: @L2
每一行数据的单个数据是第三层级:@L3
通过实际操作演示一下
(1)创建如下节点,根据标高把房间成组:

由结果可知,通过标高把房间成组,成组(groups)后的输出为三级列表.
第一层级为整个大列表list
第二层级分别为0 list, 1list
第三层级分别为Level 2、Level 1的房间
(2)获取对成组后的房间的编码,根据编码数字大小排序.

可知,编码可以获取,但是排序报错!
List.SortByKey节点是列表的一个排序方法,操作对象是列表.我们想排序的是201,202,203这些数字,它们是属于第二层级0 list列表的元素,因此List.SortByKey节点操作的列表级别应该是第二层级.否则默认是第一层级.
(3)修改节点的列表层级后,运行正确.

(4)列表有层级后,一旦对内部层级的列表进行操作,就需要一直对节点进行层级的选择,会带来不便.因此,有时候会根据需要把列表的层级取消,一般使用List.Flatten节点.

二、连缀
连缀属性是两个列表之间的对应关系.为了更好的理解,仍然续接上面的节点,以获取房间的参数数据为例.
(1)编辑节点获取房间的三个参数数据:

(2)节点过于冗余,优化节点,通过一个节点实现,只需将参数以列表形式存储即可:

显示结果并不正确.因为左侧房间有14个,右侧仅显示三个数据.
Element.GetParameterByName节点输入端连接的是两个列表,一个是包含14个房间的列表,另一个是包含3个参数的列表.
两个列表的映射关系可以有好几种方式:
假定两个列表表示为
List 1 =[房间1,房间2,房间3,……,房间14]
List 2 =[参数1,参数2,参数3]
//连缀属性--最短
房间1—参数1
房间2—参数2
房间3—参数3
剩下房间不再执行操作
//连缀属性--最长
房间1—参数1
房间2—参数2
房间3—参数3
剩下房间执行最后一个参数
房间1-14—参数3
//连缀属性—叉积
房间1-14—参数1
房间1-14—参数2
房间1-14—参数3
默认情况下,节点自动选择连缀属性.这三个连缀属性适用于不同的数据处理.可知,我们想要实现的功能是”叉积”
(3)修改节点,右键将连缀属性改为”叉积”,显示正确.

以上就是列表的层级与连缀属性.