Prev | Next |
Drawing Methods
When you create a shape using a Shape Script, you define the values of the shape using methods. The values include things such as:
- What the shape is - a rectangle, a line, a sphere
- The size of the shape
- The colors of the shape and borders
- The compartments and compartment text the shape has
- The text and labels displayed in and around the shape
- Whether the shape consists of or includes a captured image
You can list the valid methods (commands) for any point in a script by pressing
.Method Syntax
<MethodName> "(" <ParameterList> ")";";
Example
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");
}
Methods
Method Name |
Description |
See also |
---|---|---|
addsubshape(string shapename(int width, int height)) |
Adds a sub-shape with the name 'shapename' that must be defined within the current shape definition. |
|
appendcompartmenttext(string) |
Appends additional strings to a compartment's text. The compartment the text is added to depends on the compartment name set using 'setcompartmentname' prior to using 'appendcompartmenttext'. This method must be called to have the compartment displayed. |
Add Custom Compartments to Element |
arc(int left, int top, int right, int bottom, int startingpointx, int startingpointy, int endingpointx, int endingpointy) |
Draws an elliptical anticlockwise arc with the ellipse having extents at left, top, right and bottom. The start point of the arc is defined by the intersection of the ellipse and the line from the center of the ellipse to the point (startingpointx, startingpointy). The end of the arc is similarly defined by the intersection of the ellipse and the line from the center of the ellipse to the point (endingpointx, endingpointy). For example: Arc(0, 0, 100, 100, 95, 0, 5, 0);
|
|
arcto(int left, int top, int right, int bottom, int startingpointx, int startingpointy, int endingpointx, int endingpointy) |
As for the arc method, except that a line is drawn from the current position to the starting point of the arc, and then the current position is updated to the end point of the arc. |
|
bezierto(int controlpoint1x, int controlpoint1y, int controlpoint2x, int controlpoint2y, int endpointx, int endpointy) |
Draws a bezier curve and updates the pen position. |
|
defSize(int width, int height) |
Sets the default size of the element. This can appear in IF and ELSE clauses with different values in each, and causes the element to be resized automatically each time the values change. if(HasTag("horizontal","true")) { defSize(100,20); rectangle(0,0,100,100); } else { defSize(20,100); rectangle(0,0,100,100); } This example sets the shape to the specified default size each time the Tagged Value 'horizontal' is changed. When this is set, also resizes the shape to the defined dimensions. The minimum value for both int width and int height is 10. |
|
drawnativeshape() |
Renders the shape in its usual, non Shape Script notation; subsequent drawing commands are superimposed over the native notation. This method is only supported for element Shape Scripts; line Shape Scripts are not supported. |
|
drawparentshape() |
Used when extending non-UML Object types. Renders the shape as defined from a parent stereotype. Behaves identically to drawnativeshape() if no inherited Shape Script is available. |
Create Stereotypes Extending non-UML Objects |
ellipse(int left, int top, int right, int bottom) |
Draws an ellipse with extents defined by left, top, right and bottom. |
|
endpath() |
Ends the sequence of drawing commands that define a path. |
|
fillandstrokepath() |
Fills the previously defined path with the current fill color, then draws its outline with the current pen. |
|
fillpath() |
Fills the previously defined path with the current fill color. |
|
getdefaultfillcolor() |
Gets the default fill color for an element. This can be the standard fill color for all elements or, if the 'Use Element Group Style' option is selected on the 'Diagram > Appearance' page of the 'Preferences' dialog, the default fill color defined for the element type. |
Diagram Appearance Options Standard Colors |
getdefaultlinecolor() |
Gets the default line color for an element. This can be the standard line color for all elements or, if the 'Use Element Group Style' option is selected on the 'Diagram > Appearance' page of the 'Preferences' dialog, the default line color defined for the element type. |
Standard Colors Diagram Appearance Options |
hidelabel(string labelname) |
Hides the label specified by labelname, where labelname is one of these values:
Note: This functions by setting the specified label to hidden. Any subsequent changes to the script will not show the label again. The recommended way to suppress a label is to override that shape. For example, suppress the default stereotype label: shape middlebottomlabel { print(""); } |
|
image(string imageId, int left, int top, int right, int bottom) |
Draws the image that has the name imageId in the Image Manager. The image must exist within the model in which the stereotype is used; if it does not already exist in the model, you must import it as reference data or select it from within a technology file. If the image is in a technology file, it should have a filename of the format <technology ID>::<imagename>.<extension>. |
Import Reference Data Add Images |
lineto(int x, int y) |
Draws a line from the current cursor position to a point specified by x and y, and then updates the pen cursor to that position. (See the Notes section also.) |
|
moveto(int x, int y) |
Moves the pen cursor to the point specified by x and y. |
|
polygon(int centerx,int centery, int numberofsides, int radius, float rotation) |
Draws a regular polygon with center at the point (centerx, centery), and numberofsides number of sides. |
|
print(string text) |
Prints the specified text string. You cannot change the font size or type of this text. |
|
printifdefined(string propertyname, string truepart(, string falsepart)) |
Prints the 'truepart' if the given property exists and has a non-empty value, otherwise prints the optional 'falsepart'. You cannot change the font size or type of this text. |
|
println(string text) |
Appends a line of text to the shape and a line break. You cannot change the font size or type of this text. |
|
printwrapped(string text) |
Prints the specified text string, wrapped over multiple lines if the text is wider than its containing shape. You cannot change the font size or type of this text. |
|
rectangle(int left, int top, int right, int bottom) |
Draws a rectangle with extents at left, top, right, bottom. Values are percentages. |
|
roundrect(int left, int top, int right, int bottom, int abs_cornerwidth, int abs_cornerheight) |
Draws a rectangle with rounded corners, with extents defined by left, top, right and bottom. The size for the corners is defined by abs_cornerwidth and abs_cornerheight; these values do not scale with the shape. |
|
SetAttachmentMode() |
Defines how connectors attach to the element shape, either at any point on the element edge (parameter "normal") or at the center point of each edge (parameter "diamond"), depending on the setting of the 'Rectangle Notation' option. See the Example Scripts Help topic. |
Example Scripts |
setcompartmentname(string) |
Sets a compartment name to the string provided. This method must be used before calling appendcompartmenttext; calling this after calling appendcompartmenttext clears any text that has already been added to the compartment. |
Add Custom Compartments to Element |
setdefaultcolors() |
Returns the brush and pen color to the default settings, or to the user-defined colors if available. |
Color Queries |
setfillcolor(int red, int green, int blue) or
|
Sets the fill color. You can specify the required color by defining RGB values or using a color value returned by any of the Color Queries such as: GetUserFillColor() or GetUserBorderColor() In all cases setfillcolor takes precedence over any color definition that applies to the element. |
Color Queries |
setfixedregion(int xStart, int yStart, int xEnd, int yEnd) |
Fixes a region in a connector into which a sub-shape can be drawn, so that the sub-shape is not rescaled with the length or orientation of the connector line. For an example, see the 'Rotation Direction' script in the Example Scripts topic. |
Example Scripts |
setfontcolor(int red, int green, int blue) or
|
Sets the font color of a text string. You can specify the required color by defining RGB values or using a color value returned by any of the Color Queries such as: GetUserFontColor() or GetUserFillColor() You can use this command with any of the text print commands. |
Color Queries |
setlinestyle(string linestyle) |
Changes the stroke pattern for commands that use the pen. string linestyle: has these valid styles:
(See the Notes section also.) |
|
setorigin(string relativeTo, int xOffset, int yOffset) |
Positions floating text labels relative to the main shape.
|
|
setpen(int red, int green, int blue, int penwidth) or setpen(Color newcolor, int penwidth) |
Sets the pen to the defined color and sets the pen width. This method is only for line-drawing commands. It does not affect any text print commands. |
Color Queries |
setpencolor(int red, int green, int blue) or setpencolor(Color newColor) |
Sets the pen color. You can specify the required color by defining RGB values or using a color value returned by any of the Color Queries such as: GetUserFillColor() This method is only for line-drawing commands. It does not affect any text print commands. |
Color Queries |
setpenwidth(int penwidth) |
Sets the width of the pen. Pen width should be between 1 and 5. This method is only for line-drawing commands. It does not affect any text print commands. |
|
showlabel(string labelname) |
Reveals the hidden label specified by labelname, where labelname is one of these values:
|
|
startcloudpath(puffWidth, puffHeight, noise) |
Similar to startpath, except that it draws the path with cloud-like curved segments (puffs). Parameters:
|
|
startpath() |
Starts the sequence of drawing commands that define a path. |
|
strokepath() |
Draws the outline of the previously defined path with the current pen. |
Notes
- If you draw a Shape Script for a line consisting of several segments and define different line styles for the segments, all segments except for the center segment use the first line style defined; the center segment uses the second line style defined, as shown:
shape main
{
noShadow=true;
// This pen style will be ignored because nothing is drawn.
setpen(0,0,0,1);
SetLineStyle("solid");
// This pen style will be used for non-center segments because it is
// the first that is used for drawing.
setpen(255,0,0,2);
SetLineStyle("dash");
moveto(0,0);
lineto(50,0);
// This line style is used in the center segment, but no others because it
// isn't the first one drawn with.
setpen(0,255,0,1);
SetLineStyle("dot");
lineto(100,0);
// This line style is used for an annotation in the center segment only.
setpen(0,0,0,1);
SetLineStyle("solid");
setfixedregion(40,-10,60,10);
ellipse(40,-10,60,10);
}
A Dependency connector with this Shape Script might resemble this: