函数用于封装在规则中多次使用的评估。与规则不同,函数是有类型的(即它们返回一个值)并且不会改变当前的形状。函数可以是参数化的、有条件的和随机的。

例子

getHeight(area) =
   case area > 1000 : 300
   case area > 500 :
      20% : 200
      50% : 150
      else : 100
   else : rand(20,50)

 

getHeight函数采用一个浮点参数 ( area ),并根据参数返回一个高度。如果面积大于 1000,则返回 300。如果面积大于 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 函数的行为与attrs相同,唯一的区别是 const 函数在规则文件内部,不能在Inspector中映射。