可以对规则进行参数化处理,即可以定义带有参数的特征文件,并在生成过程中选择匹配的特征文件。
注:
不需要显式参数类型。 CGA 编译器将自动查找参数的类型。 CGA 语法中有三种类型:浮点型、布尔型和字符串型。 浮点类型适用于所有数字(也包括整数)。 对于每种类型,还有一个数组变量:浮点型数组、布尔型数组和字符串型数组。
示例 1
Lot --> s('0.8,'1,'0.8)
center(xz)
Footprint(20)
Footprint(height) --> extrude(height*0.8)
在 Lot 规则运行期间,将生成具有形状符号 Footprint 和浮点参数 20 的新形状。 同样,height 参数的值为 20。
注:
可以使用浮点参数来构建任意数学表达式。
示例 2
Lot --> s('0.8,'1,'0.8)
center(xz)
Footprint(20,geometry.area)
Footprint(height, area) --> t(0,0,1)
extrude(height)
Envelope(area)
Envelope(area) --> split(y) { ~4 : Floor(area) }*
Footprint 规则将采用两个参数,而 Envelope 和 Floor 规则将采用一个参数。
注:
请注意 area 是如何在规则间传递的。
示例 3
Lot --> Footprint("just an example")
Footprint(height,area) --> t(0,0,1)
extrude(height)
Envelope(area)
Footprint(text) --> print(text)
示例 3 中显示了规则重载。 一共有两个 Footprint 规则,一个带有两个浮点参数,另一个带有一个字符串参数。 编译器会自动确保在形状创建过程中仅使用匹配的参数(即在运行上述 Lot 规则期间,将创建带有字符串参数的 Footprint 形状)。
注:
如果不存在匹配规则,则将生成新叶子。