最近一直在写Dynamo程序,但是很多东西是不能分享出来的,但是一些方法是可以分享的,整理了一些,今天先分享几个给大家。话不多说,直接进入主题:
1、快速筛选出一组物体中,有哪些物体与另一组物体相交
这里,我一般都会直接想到利用
List.FilterByBoolMask,用步布尔值进行过滤,既方便又准确。
我们利用两个物体的BoundingBox,进行Intersects,就能得到哪些相交,注意这里,要把连缀方式改成叉积,不然并不能逐个比对。
然后就是构造出和这组布尔值格式相同的原数据列表,方法如下:
通过获取原列表的长度,将另一组数据重复为相同长度,然后对列表进行转置,就可以匹配格式了,最后利用List.FilterByBoolMask就能把每组数据中心我们需要的那组数据提取出来了。
2、获取族类型参数
用过Dynamo的都知道,正常情况下,我们利用Element.GetParameterValueByName是无法获取族类型参数的,那么需要类型参数的时候该怎么做呢?
其实很简单,只需要在中间添加两个节点,对图元进行转换,得到对应的族名称和族类别,就可以提取族类型参数,如下图;
之后通过
Element.GetParameterValueByName就可读取族类型参数了。
当然了,现在有很多节点包可以帮我们解决这个问题,现在只需要下载一个Rhythm节点包,就能利用下面这个节点,直接读取族的类型参数:
3、如何简单的,将列表中相同的数据进行分组呢?
这个其实也很简单,和第一条里面的方法差不多,利用List.FilterByBoolMask进行过滤。
我们先利用List.UniqueItems获取列表中的唯一项的新列表,然后通过“=="进行比对得到一组布尔值,然后在过滤就可以了,如下图:
4、创建指定位数的编号
这个在车位编号之类的操作时候,很常用,将模型排好序以后,我们创建对应长度的编号,写入参数就行,这里就不多解释了,直接上节点:
上面List.Count的级别设置为2,是因为我多列表里有多个子列表,要分别排序,如果你是单个列表,直接取消级别即可。
好了,今天先简单分享这么几个方法,有时间我会继续分享的。