欢迎光临散文网 会员登陆 & 注册

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

2023-02-10 19:57 作者:非天生建筑师  | 我要投稿

这一节,将以第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)修改节点,右键将连缀属性改为”叉积”,显示正确.

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


Dynamo数据淘金——07//列表的层级与连缀属性的评论 (共 条)

分享到微博请遵守国家法律