Annotations are used to add additional information to a rule or an attribute. Annotations are optional and do not affect the semantics of a rule and thus have no influence on the model generation. Annotations are mostly used to give additional hints for user interface elements such as the Inspector on how to present attributes or rules.
Syntax
Annotations
- @Angle
- @Color
- @Description("description")
- @Directory
- @DisplayName("name")
- @Distance
- @Enum(value_1, value_2, ..., restricted=true)
- @Enum(valuesAttr=name, restricted=true)
- @File
- @File("ext_1", ..., "ext_n")
- @Group("level_1-group", ..., "level_n-group")
- @Group("level_1-group", ..., "level_n-group", order)
- @Handle(handle params)
- @Hidden
- @Hidden(attribute_1, ... , attribute_n)
- @In{Line|Mesh|Point|PointCloud|Polygon}
- @Order(order)
- @Out(granularity=separatedShapes|combinedShape)
- @Percent
- @Range(min=value_1, max=value_2, stepsize=0, restricted=true)
- @StartRule
Examples
@Angle Adds a ° (degree) unit in Inspector and an unrestricted [0, 360] range by default with slider. Use @Range to specify a different range. Example:
|
@Color Mark an attribute as a color attribute which will present a color picker in the Inspector. Example:
|
@Description("description") Adds a description to an attribute or rule which will be displayed as tool tip in the inspector or as description in the start rule chooser or style manager. Use \n for line breaks. Example:
|
@Directory Mark an attribute as a directory name. The Inspector will present a directory chooser. Example:
|
@DisplayName("name") Adds a descriptive name to an attribute which will be displayed in the Inspector instead of the attribute name. Example:
|
@Distance Adds a meter or foot unit (depending on the Coordinate System used by the scene) in Inspector. Example:
|
@Enum(value_1, value_2, ..., restricted=true) Sets an enumeration with specific values. Values can be float or string. Parameter restricted is optional (default is true). If true no other values can be entered in the inspector or set by a handle. Example:
If the @Enum annotation is applied to an array attribute, the enumeration is defined for the elements of the array. Example:
|
@Enum(valuesAttr=name, restricted=true) Sets an enumeration with specific values. The values are dynamically set by an attribute with name valuesAttr(of type float, float[], string or string[]). Parameter restricted is optional (default is true). If true no other values can be entered in the inspector or set by a handle. Examples:
If the @Enum annotation is applied to an array attribute, the enumeration is defined for the elements of the array. Examples:
|
@File Mark an attribute as a file name. The inspector will present a file chooser. Example:
|
@File("ext_1", ..., "ext_n") Mark an attribute as a file name. The Inspector will present a file chooser for the given file extensions ("ext_1", ... , "ext_n") Example:
|
@Group("level_1-group", ..., "level_n-group") Set the group of the following attributes (the inspector will group attributes accordingly). The current group is maintained across imports. To leave the current group, use @Group. Example:
|
@Group("level_1-group", ..., "level_n-group", order) Set the group and the sort order for groups/subgroups in the inspector (similar to @Order for attributes). Where order is a numeric value. Example:
|
@Handle(handle_params) Adds an interactive handle to the following attribute. Example:
|
@Hidden Mark an attribute or rule as hidden. Hidden attributes won't appear in the Inspector, but they will still be connected to matching object attributes automatically. Hidden rules won't appear in the start rule chooser. @Hidden before an import statement will hide all imported attributes in the Inspector. The @Hidden annotation will be recursively propagated to the imports of the hidden import. Examples:
|
@Hidden(attribute_1, ... , attribute_n) @Hidden can also be used to hide a set of imported attributes before an import statement. Example:
|
@In{Line|Mesh|Point|PointCloud|Polygon} These annotations can be used to communicate the expected geometry type of the start shape. While these annotations currently have no effect in CityEngine, ArcGIS Pro expects each start rule (see above) to be annotated with the expected input type (as of ArcGIS Pro 2.4, only @InPolygon, @InMesh, @InLine and @InPoint are supported). If there is none, it defaults to @InPolygon. So if you export a rpk to be used with different geometry types in ArcGIS Pro, make sure you add one of these annotations. |
@Order(order) Sets the sort order for an attribute in the Inspector, where order is a numeric value. Example:
|
@Out(granularity=separatedShapes|combinedShape) This annotation can be used to communicate the suggested granularity of the output geometry. The default is combinedShape. While this annotation currently has no effect in CityEngine, it is essential to trigger leaf shape generation in ArcGIS Pro. Add it to the start rule in that case. |
@Percent Adds a % unit in Inspector and an unrestricted [0, 1] range that displays as [0,100]. Use @Range to specify a different range. In the CGA File, the value has to be initialized to the real value (e.g. 0.1 for 10%). The Inspector will display the value in percent (e.g. 10%). The user has to enter the value in percent in the Inspector. Example:
|
@Range(min=value_1, max=value_2, stepsize=0, restricted=true) Sets the numeric range of an attribute by parameters min and max (inclusive). Parameter stepsize is optional (default is 0). If set to >0, possible values are set in respective steps starting from the minimum value. Sliders in the Inspector respect the step size. Parameter restricted is optional (default is true). If set to true any numerical input value is set to the nearest possible value in the Inspector. Examples:
If the @Range annotation is applied to an array attribute, the range is defined for the elements of the array. Example
|
@StartRule Mark a rule as a start rule for the start rule chooser. Example:
|