可以针对不同的条件生成不同的后继。条件可以通过规则参数、形状属性或几何函数来表示。
PredecessorShape -->
case condition1 : Successor1
case condition2 : Successor2
...
else: SuccessorN
示例 1
Footprint(type) -->
case type == "residential" : extrude(10)
case geometry.area/2 < 200 : extrude(30)
else : NIL
在此示例中,足迹规则采用字符串类型的一个参数type。如果字符串等于“residental”,则取第一个后继(即当前形状被挤压 10 个单位)。
- 如果字符串不等于“住宅”,并且当前形状的几何面积小于 400,则取第二个后继(即当前形状被挤压 30 个单位)。
- 如果以上两个条件都不为真,则取第三个后继并生成NIL形状(NIL是特殊形状符号,意思是“不生成形状”)。
- 条件可以任意与运算符&&和||组合 (布尔和/或运算),并且可以使用数学表达式。
- 也可以嵌套条件。嵌套级别没有限制。
示例 2
Footprint(type) -->
case type == "residential" || type == "park":
case geometry.area/2 < 200 && geometry.area > 10 : extrude(10)
else: extrude(15)
case type == "industrial" : extrude(100)
else : NIL
示例 2 演示了嵌套条件和布尔运算。
笔记:
and 语句必须构建一个连续的块,并且不能被后续块打断(就像一个块,它们与众所周知的编程语言中的if语句非常不同)。
case和else语句必须构建一个连续的块,并且不能被后继者打断。它们类似于switch-case块,但不同于众所周知的编程语言中的 if 语句。