您可以使用函数来封装在规则中多次使用的评估。 与规则不同,函数需要输入(即函数会返回值)且不会更改当前形状。 函数可以为参数化函数、条件函数和随机函数。
示例
getHeight(area) =
case area > 1000 : 300
case area > 500 :
20% : 200
50% : 150
else : 100
else : rand(20,50)
getHeight 函数采用了一个浮点参数 (area),并可根据该参数返回高度。 如果 area 大于 1000,则返回 300。 如果 area 大于 500(但小于或等于 1000),则返回值将为 200、150 或 100,且概率为 0.2、0.5 和 0.3。 如果 area 小于或等于 500,则会返回 20 与 50 之间的随机值。 使用 getHeight 的规则可能如下所示:
Lot --> extrude(getHeight(geometry.area)) Envelope
注:
不同于属性,每个调用中都会对函数进行评估。 这意味着下方这样的函数只有在用于专用目的时才有意义,因为每次使用该函数时都会返回不同的值:
height = rand(30, 50)
常量函数
您可以使用 const 关键字将函数设置为常量函数。 这些函数的行为与属性相同,唯一的区别是 const 函数在规则文件内部,且无法在检查器窗口中进行映射。