Example Scripts

Below is a selection of example Shape Scripts.
 

Code

Result

// BASIC SHAPES

shape main

{

setfillcolor(255,0,0); // (R,G,B)

rectangle(0,0,90,30);  // (x1,y1,x2,y2)

 

setfillcolor(0,255,0); // (R,G,B)

ellipse(0,30,90,60);  // (x1,y1,x2,y2)

 

setfillcolor(0,0,255); // (R,G,B)

rectangle(0,60,90,90);   // (x1,y1,x2,y2)

}

 

ShapeScripts_Example1

// SINGLE CONDITIONAL SHAPE

shape main

{

if (HasTag("Trigger","Link"))

{// Only draw if the object has a Tagged Value
 // Trigger=Link

// Set the fill color for the path

setfillcolor(0,0,0);

startpath(); // Start to trace out a path

moveto(23,40);

lineto(23,60);

lineto(50,60);

lineto(50,76);

lineto(76,50);

lineto(50,23);

lineto(50,40);

endpath();  // End tracing out a path

// Fill the traced path with the fill color

fillandstrokepath();

return;

}

}

 

ShapeScrips_Example4

// MULTI CONDITIONAL SHAPE

shape main

{

startpath();

ellipse(0,0,100,100);

endpath();

fillandstrokepath();

ellipse(3,3,27,27);

 

if (HasTag("Trigger","None"))

{

return;

}

 

if (HasTag("Trigger","Error"))

{

setfillcolor(0,0,0);

startpath();

moveto(23,77);

lineto(37,40);

lineto(60,47);

lineto(77,23);

lineto(63,60);

lineto(40,53);

lineto(23,77);

endpath();

fillandstrokepath();

return;

}

if (HasTag("Trigger","Message"))

{

rectangle(22,22,78,78);

moveto(22,22);

lineto(50,50);

lineto(78,22);

return;

}

}

 

ShapeScrips_Example6

 

ShapeScrips_Example7

// SUB SHAPES

shape main

{

rectangle(0,0,100,100);

 

addsubshape("red",   10,  20);

addsubshape("blue",  30,  40);

addsubshape("green"50,  20);

addsubshape("red",   10020);

 

shape red

{

setfillcolor(20050100);

rectangle(0,0,100,100);

}

 

shape blue

{

setfillcolor(10050200);

rectangle(0,0,100,100);

}

 

shape green

{

setfillcolor(50200100);

rectangle(0,0,100,100);

}

}

 

SubShapes

// EDITABLE FIELD SHAPE

shape main

{

rectangle(0,0,100,100);

 

addsubshape("namecompartment"10020);

addsubshape("stereotypecompartment"100, 40);

 

shape namecompartment

{

h_align = "center";

editablefield = "name";

 

rectangle(0,0,100,100);

println("name: #name#");

}

 

shape stereotypecompartment

{

h_align = "center";

editablefield = "stereotype";

 

rectangle(0,0,100,100);

println("stereotype: #stereotype#");

}

}

 

Editable Field Shape

// RETURN STATEMENT SHAPE

shape main

{

if(hasTag("alternatenotation""false"))

{

//draw ea's inbuild glyph

drawnativeshape();

//exit script with the return statement

return;

}

 

//alternate notation commands

//...

rectangle(0,0,100,100);

}

ReturnStatement2

RetrnStatement1

//EMBEDDED ELEMENT SHAPE POSITION ON PARENT EDGE

shape main

{

 defsize(60,60);

 startpath();

 

 if(hasproperty("parentedge","top"))

 {

         moveto(0,100);

         lineto(50,0);

         lineto(100,100);

 }

 

 if(hasproperty("parentedge","bottom"))

 {

         moveto(0,0);

         lineto(50,100);

         lineto(100,0);

 }

 

 if(hasproperty("parentedge","left"))

 {

         moveto(100,0);

         lineto(0,50);

         lineto(100,100);

 }

 

 if(hasproperty("parentedge","right"))

 {

         moveto(0,0);

         lineto(100,50);

         lineto(0,100);

 }                

 endpath();

 setfillcolor(153,204,255);

 fillandstrokepath();

 

}

Script 2

 

Script 1Script 4Script 3

// CLOUD PATH EXAMPLE SHAPE

shape main

{

    StartCloudPath();

    Rectangle(0,0,100,100);

    EndPath();

    FillAndStrokePath();

}

CloudPathExample

// CONNECTOR SHAPE

shape main

{

// draw a dashed line

noshadow=true;

setlinestyle("DASH");

moveto(0,0);

lineto(100,0);

}

 

shape source

{

// draw a circle at the source end

rotatable = true;

startpath();

ellipse(0,6,12,-6);

endpath();

fillandstrokepath();

}

 

shape target

{

// draw an arrowhead at the target end

rotatable = true;

startpath();

moveto(0,0);

lineto(16,6);

lineto(16,-6);

endpath();

fillandstrokepath();

}

 

NewConnector

// DOUBLE LINE

shape main

{

setlinestyle("DOUBLE");

moveto(0,0);

lineto(100,0);

}

 
                DoubleLineConn

// ROTATION DIRECTION

shape main

{

moveto(0,0);

lineto(100,0);

setfixedregion(40,-10,60,10);

rectangle(40,-10,60,10);

if(hasproperty("rotationdirection","up"))

 

moveto(60,-10);

lineto(50,0);

lineto(60,10);

}

if(hasproperty("rotationdirection","down"))

{

moveto(40,-10);

lineto(50,0);

lineto(40,10);

}

if(hasproperty("rotationdirection","left"))

{

moveto(40,-10);

lineto(50,0);

lineto(60,-10);

}

if(hasproperty("rotationdirection","right"))

{

moveto(40,10);

lineto(50,0);

lineto(60,10);

}

}

 

 

                      ROTDIR1

 

                            ROTDIR2