属性是在具有以下属性的规则文件中定义的一组全局变量:
- 相对于规则文件的范围而言,这些属性为全局属性。
- 每个属性都将在规则文件中初始化为一个特定的值。
- 可以基于每个形状单独更改属性值。
您可以在检查器窗口的规则窗格中执行此操作。
注:
不同于函数,系统在生成过程开始时仅会评估一次属性。
示例
attr height = 150
attr landuse = "residential"
Lot --> extrude(height) Envelope(landuse)
在本例中,使用 attr 关键字定义了两个属性:height(其类型为浮点型)和 landuse(其类型为字符串型)。 这些属性将在 Lot 规则中使用。
属性也可以是条件属性或随机属性:
attr landuse = 50% : "residential"
else : "industrial"
在本例中,landuse 有 50% 的可能性被评估为 “residential”,还有 50% 的可能性被评估为 “industrial”。 对于每种形状,系统都会评估一次条件或随机属性,并在生成过程中使其保持不变。
同样,您可以使用 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。
两个所选形状的高度值均已更改。
- 仅选择一个形状(或模型),然后将 height 值更改回规则默认值 20。
- 将两个模型全部选中。
height 值将显示为问号 (?),表示两个所选模型的此属性值不同。