属性是在规则文件中定义的一组全局变量,具有以下属性:
- 它们相对于规则文件的范围是全局的。
- 每个属性都被初始化为规则文件中的特定值。
- 可以基于每个形状单独更改属性值。
这可以在检查器的规则窗格中完成。
笔记:
与functions相比,属性仅在生成过程开始时评估一次。
例子
attr height = 150
attr landuse = "residential"
Lot --> extrude(height) Envelope(landuse)
这里,使用attr关键字定义了两个属性: float 类型的height和字符串类型的landuse 。属性用于Lot规则。
属性也可以是有条件的或随机的:
attr landuse = 50% : "residential"
else : "industrial"
在这里,土地利用有 50% 的机会评估为“住宅”,有 50% 的机会评估为“工业”。对于每个形状,条件/随机属性被评估一次,并在生成过程中保持不变。
同样,可以使用rand()函数:
attr height = rand(30,50)
Lot --> extrude(height) Envelope
Envelope -->
case height < 40 : SmallBuilding
else: LargeBuilding
对于具有起始规则Lot的每个形状,高度计算为 30 到 50 个单位之间的值。这个高度是恒定的,可以在规则文件的任何地方使用。
在检查器中更改属性
可以为Inspector中的每个初始形状单独设置带有 attr 标记的函数的值。例如,下面的定义在规则参数部分产生一个条目。
@Range(min=10, max=40)
attr height = 20
多重分配
可以以方便的方式手动为多个初始形状分配一个值。以下是为多个形状分配属性的示例:
- 选择两个初始形状,它们的规则文件分配有height、roofColor和roofType属性。
- 将高度值更改为 40。
两个选定的形状都更改了它们的高度值。
- 仅选择一种形状(或模型),并将高度更改回规则默认值 20。
- 选择这两个模型。
高度值显示为问号?,说明两个选定模型不共享此属性的相同值。