规则可以参数化,即可以定义带有参数的签名并在生成期间选择匹配的签名。
笔记:
不需要显式的参数类型,CGA 编译器会自动查找参数的类型。CGA 语法中共有三种类型:float、boolean 和 string。浮点类型用于所有数字(也包括整数)。对于每种类型,还有一个数组变体:浮点数组、布尔数组和字符串数组。
示例 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规则采用一个参数。
笔记:
注意区域是如何从规则传递到规则的。
示例 3
Lot --> Footprint("just an example")
Footprint(height,area) --> t(0,0,1)
extrude(height)
Envelope(area)
Footprint(text) --> print(text)
规则重载如示例 3 所示。足迹规则有两种,一种具有两个浮点参数,一种具有一个字符串参数。编译器会自动确保在形状创建期间仅使用匹配的形状(即在执行上述Lot规则期间,创建带有字符串参数的封装形状)。
笔记:
如果不存在匹配规则,则生成新的叶子。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。