可以针对不同的条件生成不同的后继。 可以通过规则参数、形状属性或几何函数来表示条件。
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
在此示例中,规则 Footprint 采用字符串类型的一个参数 type。 如果该字符串等于 “residental”,则采用第一个后继(即,将当前形状拉伸 10 个单位)。
- 如果字符串不等于 “residential”,并且当前形状的几何的面积小于 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 演示了嵌套条件和布尔运算。
注:
case 和 else 语句必须构建一个连续的块,并且不能被后继中断(就像一个块,它们与熟知的编程语言中的 if 语句不同)。
case 和 else 语句必须构建一个连续的块,并且不能被后继中断。 它们类似于 switch-case 块,并且不同于熟知的编程语言中的 if 语句。