完善主体资料,免费赠送VIP会员!
* 主体类型
* 企业名称
* 信用代码
* 所在行业
* 企业规模
* 所在职位
* 姓名
* 所在行业
* 学历
* 工作性质
请先选择行业
您还可以选择以下福利:
行业福利,领完即止!

下载app免费领取会员

NULL

5cdd2dc095060.jpg

Dynamo你会用吗?Dynamo如何处理封闭序列?

发布于:2021-03-08
首页/BIM专题
2207
分享

CodeBlock中,我们可以使用快捷方式构建在一定区间的数字列表,也有几种简单的表达格式,也是在日常编程中最常用的:

a..b

这里要特别说明一下a..b..c这个格式。在这里AB是数字范围的两个边界,C是间隔一般的理解上,形成的数列应该是类似于{A,X1,X2…B}这样的列表。但有时候Dynamo给出结果的最后元素却不是B,而是一个比B小一些的数字。下面我们可以先用几个简单的数字来示意:

1..20..3返回{1,4,7,10,13,16,19}

可以看到结果序列的最后的数字并不是我们指定边界数字,这也很好理解,因为间距不是整除数,最后的边界数字是不满足递增条件的。

但是很明显,我们设定边界数据是有需要的,有时候是需要达到边界数字的,做到这样就有几个方法:

确保间距为整除后数字,这很容易理解

使用#直接指定等分数目,由程序去自行计算间距这两种情况下,都需要我们对已有的ABC数字先进行一定的运算,再修改其值来构造序列,这也是比较符合日常逻辑的方式。

腿腿教学网-Dynamo你会用吗?Dynamo如何处理封闭序列?

但其实DesignScript是比较智能的程序,有一个特殊的符号可以帮助我们省却这些枯燥的运算过程,仅仅使用已知的ABC本身就构造出符合要求(末位数字为B)的序列。这个符号就是“~”

我们只需要将a..b..c改写成a..b..~c,就可以会生成{A,X1,X2…B},保证AB分别为列表的首末元素,即使C并不是整除间距。因为如果C不是能整除的间距,我们就需要进行X=B-A/C这样的运算得到份数,但是这个份数是小数,需要进行取整Y=Math.FloorX),之后再使用Y构件数列a..b..#Y

依然用之前的例子,我们可以看一下增加“~”控制符后,数据的结果有何不同:

有的时候,在精度范围内,可能我们使用a..b..~c+0.1或者a..b..~c-0.1,都可以得到与a..b..~c同样的结果。这在我们对一条曲线按照需要的长度进行等分时非常有帮助,因为曲线的长度可能是变化的非整数,直接使用“~”将省去大量的数学计算而一次获得需要的数据。

腿腿教学网-Dynamo你会用吗?Dynamo如何处理封闭序列?

转载请注明来源本文地址:https://www.tuituisoft/bim/20100.html

未标题-1.jpg

上一篇:没有了

下一篇:没有了

微信咨询
扫描客服微信
QQ咨询
联系QQ:

2158157721

电话咨询
咨询电话:

15359439502

APP下载
扫码关注
关注微信公众号
返回顶部