属性是在具有以下属性的规则文件中定义的一组全局变量:
- 相对于规则文件的范围而言,这些属性为全局属性。
- 每个属性都将在规则文件中初始化为一个特定的值。
- 属性值可以根据每个形状分别进行更改。
更改操作可以在检查器的规则窗格中完成。
注:
不同于函数,系统在生成过程开始时仅会评估一次属性。
示例
attr height = 150
attr landuse = "residential"
Lot --> extrude(height) Envelope(landuse)
此处,可使用 attr 关键字定义两个属性:height(其类型为浮点型)和 landuse(其类型为字符串型)。 这些属性将在 Lot 规则中使用。
属性也可以是条件属性或随机属性:
attr landuse = 50% : "residential"
else : "industrial"
此处,landuse 有 50% 的机会被评估为“住宅”,还有 50% 的机会被评估为“工业”。 对于每种形状,系统都会评估一次条件/随机属性,并在生成过程中使其保持不变。
可通过相同的方式使用 rand() 函数:
attr height = rand(30,50)
Lot --> extrude(height) Envelope
Envelope -->
case height < 40 : SmallBuilding
else: LargeBuilding
对于具有初始规则 Lot 的每个形状,height 的估算值将介于 30 到 50 个单位之间。 该高度为恒定值,且可用于规则文件中的任意位置。
更改检查器中的属性
可以在检查器中为每个初始形状分别设置标有 attr 的函数值。 例如,下面的定义将在规则参数部分中产生一个条目。
@Range(min=10, max=40)
attr height = 20
多分配
可以通过一种方便的方法将值手动分配给多个初始形状。 以下是将属性分配给多个形状的示例:
- 选择两个初始形状,这些形状需要具有被分配了 height、roofColor 和 roofType 属性的规则文件。
- 将高度值更改为 40。
所选两个形状的高度值均已更改。
- 仅选择一种形状(或模型),然后将高度更改回规则默认值 20。
- 将两个模型全部选中。
height 值将显示为问号 ?,表示两个所选模型没有相同的此属性值。