属性是在规则文件中定义的一组全局变量,具有以下属性:

  • 它们相对于规则文件的范围是全局的。
  • 每个属性都被初始化为规则文件中的特定值。
  • 可以基于每个形状单独更改属性值。

这可以在检查器的规则窗格中完成。

笔记:

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 中属性的显示可以通过CGA 注释来控制。
  • 交互式手柄可用于编辑 3D 视图中的属性。

在检查器中更改属性

可以为Inspector中的每个初始形状单独设置带有 attr 标记的函数的值。例如,下面的定义在规则参数部分产生一个条目。

@Range(min=10, max=40)
attr height = 20

 

多重分配

可以以方便的方式手动为多个初始形状分配一个值。以下是为多个形状分配属性的示例:

  1. 选择两个初始形状,它们的规则文件分配有heightroofColorroofType属性。

    GUID-86A48041-C499-4E77-BC92-1B8487F52A60-web

     

  2. 将高度值更改为 40。

    两个选定的形状都更改了它们的高度值。

    GUID-32A46C90-F035-46D2-9C41-835193BBFCE0-web

     

  3. 仅选择一种形状(或模型),并将高度更改回规则默认值 20。
  4. 选择这两个模型。

    高度值显示为问号,说明两个选定模型不共享此属性的相同值。