语法

注记用于向规则或属性添加其他信息。 注记是可选的,不会影响规则的语义,因此不会对模型生成产生任何影响。 注记通常用于为用户界面元素(例如检查器)提供有关如何呈现属性或规则的附加提示。

注记

示例

@Angle

在检查器中添加 °(度)单位,介于 [0, 360] 之间的无限制范围,默认通过滑块进行设置。 使用 @Range 可指定其他范围。

示例:

@Angle
attr angle = 180

@Color

将属性标记为颜色属性,用于在检查器中显示颜色选取器。

示例:

@Color
attr userColor = "#000000"

@Description(“description”)

向属性或规则添加说明,以在检查器中显示为工具提示或在起始规则选择器或样式管理器中显示为说明。 使用 \n 作为换行符。

示例:

@Description("The building width")
attr width = 40

@Directory

将属性标记为目录名称。 检查器将显示一个目录选择器。

示例:

@Directory
attr assets = "/assets/lod" + lod

@Distance

在检查器中添加米或英尺单位(取决于场景所用的坐标系)。

示例:

@Distance
attr distance = 1852

@Enum(value_1, value_2, …, restricted=true)

使用特定值设置枚举。 值可以为 float 或 string。 参数 restricted 为可选参数(默认值为 true)。 如果为 true,则其他值无法在检查器中输入或通过控点进行设置。

示例:

@Enum("low", "mid", "high")
attr lod = "low"

@Enum(10, 20, 30, restricted = false)
attr height = 20

如果 @Enum 注记应用于数组属性,则将为数组元素定义枚举。

示例:

@Enum("Residential", "Commercial")
attr floorUsage = ["Residential"]

@Enum(valuesAttr=name, restricted=true)

使用特定值设置枚举。 值通过名为 valuesAttr(类型为 float, float[], string or string[])的属性动态设置。 参数 restricted 为可选参数(默认值为 true)。 如果为 true,则其他值无法在检查器中输入或通过控点进行设置。

例如:

@Enum(valuesAttr = lods)
attr lod = lods[0]
@Hidden
attr lods = ["low", "mid", "high"]

@Enum(valuesAttr = heights, restricted = false)
attr height = heights[1]
@Hidden
attr heights = [10, 20, 30]

如果 @Enum 注记应用于数组属性,则将为数组元素定义枚举。

例如:

@Enum(valuesAttr = usage)
attr floorUsage = [usage[0]]

@Hidden
attr usage = ["Residential", "Commercial"]

@File

将属性标记为文件名。 检查器将显示一个文件选择器。

示例:

@File
attr asset = "myfile.obj"

@File(“ext_1”, …, “ext_n”)

将属性标记为文件名。 检查器将针对给定文件扩展名 (“ext_1″, … , “ext_n“) 显示一个文件选择器。

示例:

@File("tif", "tiff")
attr texture = "tex0.tiff"

@Group(“level_1-group”, …, “level_n-group”)

设置以下属性组(检查器将相应地对属性进行分组)。 将在不同导入中保留当前组。 要离开当前组,请使用 @Group

示例:

@Group("First", "Second", "Third")
attr grouped = 0

@Group(“level_1-group”, …, “level_n-group”, order)

在检查器中设置组以及组/子组的排序顺序(类似于属性的 @Order)。 其中 order 为数值。

示例:

@Group("First", "Second", "Third", 1)
attr grouped = 0

@Handle(handle_params)

向以下属性添加交互式控点

示例:

@Handle(shape=Solid, align=right)
attr dimension = 40

@Hidden

将规则或属性标记为隐藏。 隐藏的属性不会显示在检查器中,但是它们仍自动连接到匹配的对象属性。 隐藏的规则不会显示在起始规则选择器中。 import 语句之前的 @Hidden 将隐藏检查器中的所有导入属性。 @Hidden 注记将以递归的方式传播到隐藏导入的导入。

例如:

@Hidden
attr hide_me = 0

@Hidden
import hide_me: "rule.cga"

@Hidden(attribute_1, … , attribute_n)

@Hidden 也可以用于隐藏 import 语句之前的一组导入属性。

示例:

@Hidden(attribute_1, attribute_2)
import rule: "rule.cga"

@In{Line|Mesh|Point|PointCloud|Polygon}

这些注记可用于传达起始形状的预期几何类型。 尽管这些注记当前在 CityEngine 中不起任何作用,ArcGIS Pro 希望使用预期输入类型(从 ArcGIS Pro 2.4 开始,仅支持 @InPolygon@InMesh@InLine 和 @InPoint)对每个起始规则进行注记(见上文)。 如果没有,则默认为 @InPolygon。 因此,如果导出 rpk 以在 ArcGIS Pro 中与不同几何类型配合使用,请确保添加这些注记之一。

@Order(order)

设置属性在检查器中的排序顺序,其中 order 为数值。

示例:

@Order(1)
attr i_m_1st = 0
@Order(2)
attr i_m_2nd = 0
@Order(3)
attr i_m_3rd = 0

@Out(granularity=separatedShapes|combinedShape)

此注记可用于传达输出几何的建议颗粒度。 默认值为 combinedShape。 尽管此注记当前在 CityEngine 中不起任何作用,但是对于在 ArcGIS Pro 中触发叶形状生成是必要的。 在该情况中,将其添加到起始规则。

@Percent

在检查器中添加 % 单位以及显示为 [0,100] 的无限制范围 [0, 1]。 使用 @Range 可指定其他范围。 在 CGA 文件中,必须将值初始化为实际值(对于 10%,为 0.1)。 检查器将以百分比形式显示值(例如 10%)。 用户必须以百分比形式在检查器中输入该值。

示例:

@Percent
attr inflation = 0.012

@Range(min=value_1, max=value_2, stepsize=0, restricted=true)

通过参数 min 和 max(包含二者)设置属性的数值范围。 参数 stepsize 为可选参数(默认值为 0)。 如果设置为 >0,将在相应的步骤中设置可能的值,从最小值开始。 检查器中的滑块会遵循步长。 参数 restricted 为可选参数(默认值为 true)。 如果设置为 true,任何数值输入值将在检查器设置为最接近的可能值。

例如:

@Range(min=5, max=50)
attr height = 20

@Range(min=0, max=45, stepsize=15, restricted=false)
attr angle = 30

如果 @Range 注记应用于数组属性,则将为数组元素定义范围。

示例

@Range(min=2.5, max=7)
attr floorHeights = [4, 5.5, 5.5]

@StartRule

将规则标记为起始规则选择器的起始规则。

示例:

@StartRule
Start-->NIL