Write Scripts

To create an alternative representation for an element or connector, you write a Shape Script that defines the size, shape, orientation and color of the representation. A Shape Script contains a number of sections for defining different aspects of the shape; for an element these include:

·Main object
·Decoration (for example, a Document element might contain an icon depicting a document)

For a connector the sections include:

·Main object
·Shape Source
·Shape Target

Shape Scripts operate on the basis that the default (UML) representation is used unless the script contains an alternative definition. That is:

·If you have a Shape Script containing just a decoration, this decoration is added on top of the normally-drawn object
·If you have an empty shape routine, it overrides the default; so, a blank 'shape label' prevents the creation of the normal floating text label for elements that have them

You can also comment your scripts using C-style comments; for example:


// C Style Single Line comment

/* Multi Line

comment supported */


Scripting is not case-sensitive: 'Shape' is the same as 'shape'.

Script Structure



See also

Example of Element Script Layout

shape main


   // draw the object



shape label


     // draw a floating text label



decoration <identifier>


      // draw a 16x16 decoration inside the object




The <identifier> string is an alphanumeric word.



Example of Connector Script Layout

shape main


      // draw the line



shape target


      // draw the shape at the target end



shape source


      // draw the shape at the source end



label <positionLabel>


      // define the text for the label



The <positionLabel> string can be any of:




A shape can have Sub-shapes, which must be declared after the main Shape Script, but called from the Method commands.

This is an example of the ordering for declarations:


shape main


 // Initialisation Attributes - these must be
// before drawing commands

 noshadow = "true";

 h_align = "center";


 //drawing commands (Methods)


 println("foo bar");


 // call the sub-shape

 addsubshape("red",   20,  70);


 // definition of a sub-shape

 shape red


         setfillcolor(200, 50, 100);





//definition of a label

shape label



 println("Object: #NAME#");




//definition of a Decoration

decoration triangle



 // Draw a triangle for the decoration













The shape resulting from this script is:



Drawing Methods

Order of declaration

Shapes can consist of Attribute declarations, Command calls and Sub-shape definitions, which must appear in that order; that is, Attribute declarations must appear before all Command calls and Sub-shape definitions must appear last.


Shape Attributes


Learn more

Learning Center topics

·(Alt+F1) | Enterprise Architect | Modeling Languages | Defining Shapes | Defining an Element Shape