下载app免费领取会员
在CodeBlock中,我们可以使用快捷方式构建在一定区间的数字列表,也有几种简单的表达格式,也是在日常编程中最常用的:
a..b
这里要特别说明一下a..b..c这个格式。在这里A与B是数字范围的两个边界,C是间隔一般的理解上,形成的数列应该是类似于{A,X1,X2…B}这样的列表。但有时候Dynamo给出结果的最后元素却不是B,而是一个比B小一些的数字。下面我们可以先用几个简单的数字来示意:
1..20..3返回{1,4,7,10,13,16,19}
可以看到结果序列的最后的数字并不是我们指定边界数字,这也很好理解,因为间距不是整除数,最后的边界数字是不满足递增条件的。
但是很明显,我们设定边界数据是有需要的,有时候是需要达到边界数字的,做到这样就有几个方法:
使用#直接指定等分数目,由程序去自行计算间距这两种情况下,都需要我们对已有的ABC数字先进行一定的运算,再修改其值来构造序列,这也是比较符合日常逻辑的方式。
但其实DesignScript是比较智能的程序,有一个特殊的符号可以帮助我们省却这些枯燥的运算过程,仅仅使用已知的ABC本身就构造出符合要求(末位数字为B)的序列。这个符号就是“~”。
我们只需要将a..b..c改写成a..b..~c,就可以会生成{A,X1,X2…B},保证AB分别为列表的首末元素,即使C并不是整除间距。因为如果C不是能整除的间距,我们就需要进行X=(B-A)/C这样的运算得到份数,但是这个份数是小数,需要进行取整Y=Math.Floor(X),之后再使用Y构件数列a..b..#Y。
依然用之前的例子,我们可以看一下增加“~”控制符后,数据的结果有何不同:
有的时候,在精度范围内,可能我们使用a..b..~c+0.1或者a..b..~c-0.1,都可以得到与a..b..~c同样的结果。这在我们对一条曲线按照需要的长度进行等分时非常有帮助,因为曲线的长度可能是变化的非整数,直接使用“~”将省去大量的数学计算而一次获得需要的数据。
转载请注明来源本文地址:https://www.tuituisoft/bim/20100.html
上一篇:没有了
下一篇:没有了