Please note : This help page is not for the latest version of Enterprise Architect. The latest help can be found here.

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
·Labels
·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
·Labels
 

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

Layout

Description

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:

·lefttoplabel
·leftbottomlabel
·middletoplabel
·middlebottomlabel
·righttoplabel
·rightbottomlabel
 

 

Sub-shapes

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)

 rectangle(0,0,100,100);

 println("foo bar");

 

 // call the sub-shape

 addsubshape("red",   20,  70);

 

 // definition of a sub-shape

 shape red

 {

         setfillcolor(200, 50, 100);

         rectangle(50,50,100,100);

 }

}

 

//definition of a label

shape label

{

 setOrigin("SW",0,0);

 println("Object: #NAME#");

}

 

 

//definition of a Decoration

decoration triangle

{

 

 // Draw a triangle for the decoration

 startpath();

 moveto(0,30);

 lineto(50,100);

 lineto(100,0);

 

 endpath();

 setfillcolor(153,204,255);

 fillandstrokepath();

 

}

 

 

The shape resulting from this script is:

Shapescript_object

 

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

Sub-Shapes

Learn more

Learning Center topics

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