The SHAPE_PARTS structure is an array of objects, each representing a single shape part. The shape part's ~type attribute defines the type of SVG element that will be created. All the basic SVG element types can be used, including ~rect, ~circle, ~ellipse, ~line, ~polyline, ~polygon, ~path, ~text, and ~image. The remaining attributes are visual attributes specific to the shape part's type. See the SVG 1.1 Specification (www.w3.org/TR/2003/REC-SVG11-20030114) for more details.
All shape part attributes (except for type) can be expressed using dynamic formulas. A dynamic formula is string containing a valid JavaScript expression that involves one or more GML property references. A GML aspect property reference is written by adding the \@ prefix (e.g., \@fontSize). A GML object property reference is written by adding both the \@ prefix and ! suffix (e.g., \@name!). The ! suffix can be omitted from an object property reference, provided there is no aspect property with the same name.
NOTES:
Dynamic formulas that depend on shape size cannot be used for the body parts of auto-sized shapes. Otherwise, cyclic dependencies will be created, resulting in inconsistent shape resize behavior.
If the part is part of object's wireframe you can only use the following properties: ~x1, ~x2, ~y1, ~y2, ~w, ~h.
The invalidated property is repainted without actually committing it. As a result, all dependant aspect properties will be recomputed accordingly. This is required to ensure correctness of subsequent geometric calculations within the transaction.
Therefore, it follows that during the transaction the properties on the base object may not reflect the actual values on the aspect and should not be used in calculations. Only the aspect properties can be used for calculations during this period.
Once the transaction is committed, the base object properties will be set to their valid values.