描画コマンド

<< 目次を表示 >>

ページ位置:  Enterprise Architectの拡張(SDK) > 描画スクリプト > 描画スクリプトの作成 >

描画コマンド

描画スクリプト内で図形の描画を行う場合には、描画コマンドを利用します。

 

描画時に指定可能な内容としては、以下のようなものが挙げられます。

 

なお、エディタ内では、Ctrl + スペースキー を押すことで、コマンド名を(補完)入力することができます。

 

 

文法:

<コマンド名> "(" <引数> ")";";

 

 

例:

shape main

{

//属性の設定 - 属性の設定はコマンドよりも前にしなければなりません。

noshadow = "true";

h_align = "center";

 

//コマンドの呼び出し

rectangle(0,0,100,100);

println("foo bar");

}

 

 

コマンド:

コマンド名

説明

addsubshape

(string shapename

 [,int width, int height])

別の描画スクリプトを追加します。この描画スクリプトは同じステレオタイプに対して定義されていなければなりません。(別のステレオタイプの描画スクリプトで定義されている内容を呼び出すことはできません。)

appendcompartmenttext

(string compartmenttext)

 

区画に表示される内容を追加します。

追加した内容が表示される区画は、事前に実行されたsetcompartmentnameによって決まります。

このコマンドは、区画が表示される前に実行しなければなりません。

arc

(int left,

int top,

int right,

int bottom,

int startingpointx,

int startingpointy,

int endingpointx,

int endingpointy)

(left,top) (right,bottom)で定義される四角形に内接する円を描きます。

描画開始位置は、円の中心から(startingpointx,startingpointy)へ引いた線と円の外周が交差する場所になります。

同様に、描画終了位置は、円の中心から(endingpointx,endingpointy)へ引いた線と円の外周が交差する場所になります。

 

例:

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)

現在の描画内容に続く形で、(left,top) (right,bottom)で定義される四角形に内接する円の、(startingpointx,startingpointy)から(endingpointx,endingpointy)間での範囲の弧を描きます。

bezierto

(int controlpoint1x,

int controlpoint1y,

int controlpoint2x,

int controlpoint2y,

int endpointx,

int endpointy)

現在の描画内容に続く形で、ベジエ曲線を描画します。

defSize

(int width,

int height)

要素の既定のサイズを設定します。

この関数は、IF文の中で使用し、状況に応じた初期値を指定することもできます。次の例をご覧ください。:

 

if(HasTag("horizontal","true")) {

          defSize(100,20);

          rectangle(0,0,100,100);

 }

 else {

          defSize(20,100);

          rectangle(0,0,100,100);

 }

 

上の例では、タグ付き値horizontalが変わると、既定のサイズも変わります。既定のサイズが設定されている場合には、Alt + Zキー を押すと指定したサイズに戻ります。

 

注意:

int width および int heightの最小値は、いずれも10です。

drawnativeshape()

DrawNativeShapeはEnterprise Architectの通常の描画方法で要素を描画します。通常の描画内容に追加する場合に便利です。

このコマンドは要素の描画スクリプトでのみ有効です。

drawparentshape()

独自に定義した要素や接続をさらに拡張した場合に利用できます。

このコマンドは、継承元の親要素に定義されている描画スクリプトの内容をもとに、外見を表示します。親要素で描画スクリプトが定義されていない場合、drawnativeshape() と結果は同じになります。

(参照:UML以外の要素の拡張

ellipse

(int left,

int top,

int right,

int bottom)

left,top,right,bottomで定義される楕円を描画します。

endpath()

描画パスの記録を終了します。

fillandstrokepath()

描画パスを現在のペンの色で描画し、現在の塗りつぶし色で塗りつぶします。

fillpath()

描画パスを現在の塗りつぶし色で塗りつぶします。

getdefaultfillcolor()

要素の既定の塗りつぶし色を取得します。取得できる色は、ユーザーオプションで設定されている内容に依存します。

(参考:書式設定標準の色

getdefaultlinecolor()

要素の既定の線の色を取得します。取得できる色は、ユーザーオプションで設定されている内容に依存します。

(参考:書式設定標準の色

hidelabel

(string labelname)

指定した位置のラベルを非表示にします。labelname の値は、次のいずれかになります。

  • middletoplabel
  • middlebottomlabel
  • lefttoplabel
  • leftbottomlabel
  • righttoplabel
  • rightbottomlabel

この方法で非表示にすると、内容が変更になった場合でもラベルを再表示させることはできません。状況によって表示するかどうかを指定する場合には、以下のようにして、ラベルの内容を空にすることをお勧めします。

 

例:ステレオタイプのラベルを非表示にする場合

shape middlebottomlabel

{

   print("");

}

image

(string imageId,

int left,

int top,

int right,

int bottom)

「画像の管理」ダイアログで登録されている画像を、指定した範囲に描画します。画像は、ステレオタイプが利用されるプロジェクト内に存在しなければなりません。存在しない場合には、リファレンス情報として読み込む必要があります。

 

もし画像がMDGテクノロジーファイル内に存在する場合には、

<technology ID>::<imagename>.<extension> の形式で指定します。

lineto

(int x,

int y)

指定された位置まで線を引きます。

moveto

(int x,

int y)

描画のためにカーソルを移動します。

polygon

(int centerx,

 int centery,

 int numberofsides,

 int radius,

 float rotation) 

ポリゴンを描画します。

中心が (centerx, centery)でnumberofsidesが側面の数になります。

print

(string text)

指定した文字列を表示します。

表示するフォントの種類やサイズ・色を変更することはできません。

printifdefined

(string propertyname,

string truepart

(, string falsepart)

)

指定されたプロパティに値が存在し値が空でない場合、truepartの内容を表示し、それ以外の場合にはfalsepartの内容を出力します。

 

表示するフォントの種類やサイズ・色を変更することはできません。

println

(string text)

指定した文字列を表示します。必要に応じて改行します。

表示するフォントの種類やサイズ・色を変更することはできません。

printwrapped

(string text)

指定した文字列を表示します。文字列の長さが描画領域の幅よりも大きい場合には、改行します。

 

表示するフォントの種類やサイズ・色を変更することはできません。

rectangle

(int left,

int top,

int right,

int bottom)

left,top,right,bottomで定義される四角形を描画します。Values are percentages.

roundrect

(int left,

int top,

int right,

int bottom,

int abs_cornerwidth,

int abs_cornerheight)

角の丸い四角形を描画します。四角形の大きさはleft,top.right,bottomで指定します。

それぞれの角のサイズは abs_cornerwidth と abs_cornerheight で指定します。角のサイズは要素の大きさの変化には追随しません。

setattachmentmode(string)

接続と要素の接点(端点)を、辺上であれば自由に配置できる("normal")か、それとも各辺の中央のみに制限する("diamond")かを指定します。 (ビルド1620以降で利用可能)

描画スクリプトのサンプル」のページもご覧ください。

setcompartmentname

(string)

区画を新規に追加します。

このコマンドはappendcompartmenttextの前に実行します。その後appendcompartmenttextを実行して区画の内容を追加します。

setdefaultcolors()

描画および塗りつぶしをする色を既定値に戻します。場合によってはユーザー定義の色に戻します。詳細は「色情報の取得」をご覧ください。

setfillcolor

(int red,

int green,

int blue)

 

setfillcolor

(Color newColor)

塗りつぶしの色を指定します。

色の指定方法として、RGBそれぞれを値として設定する方法と、色情報の取得の結果を渡す方法があります。後者の場合、以下のいずれかを利用します。

  • GetUserFillColor()
  • GetUserBorderColor()

 

setfillcolorは他の設定より優先的に適用されます。

setfixedregion

(int xStart,

int yStart,

int xEnd,

int yEnd)

サブシェイプの描画をサイズなどによらず固定にしたい場合に利用します。接続の向きや長さによらず、固定の大きさで描画されます。

 

利用例は、「描画スクリプトのサンプル」をご覧ください。

setfontcolor

(int red,

int green,

int blue)

 

setfontcolor

(Color newColor)

文字の色を指定します。

RGB値を指定して色を指定するか、以下のコマンドを利用して色情報を取得して指定します。

 

  • GetUserFontColor()
  • GetUserFillColor()

 

このコマンドは、他のテキスト出力コマンドの前に実行すると、有効になります。

setlinestyle

(string linestyle)

描画する方法を変更します。

 

linestyle: 以下のいずれかを選択してください。

  • solid
  • dash
  • dot
  • dashdot
  • dashdotdot
  • double

(このページ末尾の「注意事項」もご覧下さい。)

setorigin

(string relativeTo,

int xOffset,

int yOffset)

要素の名前がラベルとして表示される場合など、相対的な位置指定が可能な場合に、配置位置を指定します。

 

  • relativeToN, NE, E, SE, S, SW, W, NW, CENTER のいずれかになります。
  • xOffsetyOffsetは指定した位置からの相対的な位置(ピクセル)です。負の値を指定することも可能です。

setpen

(int red,

int green,

int blue,

int penwidth)

 

setpen

(Color newcolor,

int penwidth)

描画色を指定します。線の太さを同時に指定することもできます。

 

このコマンドで設定される内容は、線の描画のみに影響します。文字の描画には影響しません。

(参照:色情報の取得

setpencolor

(int red,

int green,

int blue)

 

setpencolor

(Color newColor)

描画ペンの色を指定します。

色の指定方法として、RGBそれぞれを値として設定する方法と、色情報の取得の結果を渡す方法があります。

後者の場合、通常は GetUserFontColor()の戻り値を渡します。

 

このコマンドは、文字列の描画には影響しません。

setpenwidth

(int penwidth)

描画する線の太さを1から5の間で指定します。

このコマンドは、文字列の描画には影響しません。

showlabel

(string labelname)

指定した位置のラベルを表示します。labelnameの値は、次のいずれかになります。

  • middletoplabel
  • middlebottomlabel
  • lefttoplabel
  • leftbottomlabel
  • righttoplabel
  • rightbottomlabel

startcloudpath

(puffWidth,

puffHeight,

noise)

StartPathコマンドと同様に利用できますが、「雲」の形で描画します。

引数:

  • float puffWidth (default = 30) 雲の間の距離です。
  • float puffHeight (default = 15) 雲の高さです。
  • float noise (default = 1.0) 雲の位置や大きさを乱数により変化させるための値です。

startpath()

描画パスの記録を開始します。

strokepath()

描画パスを現在のペンの色で描画します。

 

注意:

接続に対する描画スクリプトを設定する場合に、接続がいくつかの区画に分かれていて、区画ごとに異なる描画にしたい場合、中央となる区画以外は最初に定義されたスタイルで描画され、中央となる区画は2番目に定義されたスタイルで描画されます。以下はこの例です。

shape main

{

             noShadow=true;

            // この設定は、実際に描画していないので無視されます。

            setpen(0,0,0,1);

            SetLineStyle("solid");

 

           // この描画内容は、中央となる区画以外の線の描画にも

             // 利用されます。

            setpen(255,0,0,2);

            SetLineStyle("dash");

            moveto(0,0);

            lineto(50,0);

 

            // この描画内容は、中央となる区画のみに利用されます。

            setpen(0,255,0,1);

            SetLineStyle("dot");

            lineto(100,0);

 

            // この内容も、中央となる区画のみに利用されます。

            setpen(0,0,0,1);

            SetLineStyle("solid");

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

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

         }

 

依存の接続にこの描画スクリプトを適用した例が下の画像です。