CGA 属性

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

  • 相对于规则文件的范围而言,这些属性为全局属性。
  • 每个属性都将在规则文件中初始化为一个特定的值。
  • 属性值可以根据每个形状分别进行更改。

更改操作可以在检查器规则窗格中完成。

注:

不同于函数,系统在生成过程开始时仅会评估一次属性。

示例

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 个单位之间。 该高度为恒定值,且可用于规则文件中的任意位置。

注:
  • 您可以单击并编辑该值,或使用滑块修改该值。 有关如何使用不同的源来控制规则属性输入的详细信息,请参阅属性、源和连接
  • 可以通过 CGA 注记来控制检查器中属性的显示。
  • 可将交互式控点用于在 3D 视图中编辑属性。

更改检查器中的属性

可以在检查器中为每个初始形状分别设置标有 attr 的函数值。 例如,下面的定义将在规则参数部分中产生一个条目。

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

多分配

可以通过一种方便的方法将值手动分配给多个初始形状。 以下是将属性分配给多个形状的示例:

  1. 选择两个初始形状,这些形状需要具有被分配了 heightroofColorroofType 属性的规则文件。

    被分配了具有 height、roofColor 和 roofType 属性的规则的所选形状

  2. 将高度值更改为 40。

    所选两个形状的高度值均已更改。

    高度值已更改的所选形状

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

    height 值将显示为问号 ?,表示两个所选模型没有相同的此属性值。