「ラインシンボルエディタ」
拡張ラインシンボルはシンプルで高度なスクリプト言語です。明確に例えば矢印ライン、並行ライン、正確なダッシュライン、ギザギザのラインなどを作成することができます。
シンタックスとロジック
・すべてのパラメータ(GOTOを除く)は相対的であり、描画位置から形状に沿ってカーソルを移動します。X座標はカーソルを水平方向に移動し、Y座標はカーソルを垂直方向に移動します。
・図形には必要な数のコマンドを含めることができます。
・GOTO(0)を使うと、既に描かれている線に重ねて描く事ができます。
・FOR...ENDループは別のループに埋め込む事はできません。
・複雑なシンボルになるほど描画スピードが遅くなります。
■コマンド
フル |
ショート |
説明 |
サンプル |
ショートサンプル |
; |
|
コメント(1行全部) |
;これはコメントです |
|
GOTO(x) |
G |
描画位置を図形に沿って任意の位置に移動します。 |
GOTO(10%) |
G(10%) |
MOVE(dx,dy) |
M |
dx,dyの値により線分に沿って移動します。 |
MOVE(10,-10) |
M(10,-10) |
DRAW(x1,y1 x2,y2..xn,yn) |
D |
線図形を描きます。 |
DRAW(5,5 5,-5) |
D(+5+5+5-5) |
OUTLINE(x1,y1 x2,y2..xn,yn) |
O |
現在の描画位置から回転ポイントでラインシンボルを描きます。シンボル全体は同じパラメータで回転します。 |
OUTLINE(5,5 -10,0 0,-10 10,0 0,-10) |
O(+5+5-10+0+0-10+10+0+0-10) |
FILL(x1,y1 x2,y2..xn,yn) |
I |
現在の描画位置から回転ポイントで塗りつぶしシンボルを描きます。現在の描画位置から回転角点でラインシンボルを描きます。シンボル全体は同じパラメータで回転します。 |
FILL(5,5 -10,0 0,-10 10,0 0,-10) |
I(+5+5-10+0+0-10+10+0+0-10) |
LINE(x) |
L |
現在の描画位置からオフセットで平行線を描きます。 |
LINE(100%) |
L(100%) |
FOR(x) |
F |
ループを開始します。数値はループが繰り返される度合いです。デフォルトは100%です。マイナス値は後ろから計算して開始されることを意味します。例えば、FOR(-45%)は後ろから計算して行全体の45%の度合い分繰り返しします。
|
FOR(50%) |
F(50%) |
END() |
E |
ループを終了します。 |
END() |
E() |
WIDTH(x) |
W |
線幅を変更します。 |
WIDTH(10W) |
W(10W) |
COLOR(r,g,b) |
C |
色を変更します。 |
COLOR(255,0,0) |
C(255,0,0) |
COLOR(mode) |
C |
色の変更先を指定します。0(線/面) または 1(アウトライン) |
COLOR(0) |
C(1) |
■オプション値
シンボル |
内容 |
サンプル |
指定なし |
デバイス毎の1ピクセル(96dpi) デフォルトは次の「X」と同じ。 |
GOTO(1) |
X |
デバイス毎の1ピクセル(96dpi) |
GOTO(1X) |
P |
スクリーンピクセル |
GOTO(1P) |
T |
Twip(1/1440 of inch) |
GOTO(1P) |
W |
線幅(ラインでセットされている)10倍の数値を指定します。15Wは1.5を意味します。 |
GOTO(15W) |
S |
線幅(デバイスに依存しない縮尺に応じたピクセルです。Xに似ている)縮尺は太い線が比例して拡大されることを意味します。細い線の10Xは実際には10Xと同じ事を意味しますが、太い線の場合は見栄えを良くするために小さい値で表現されます。
|
GOTO(10S) |
コーティング
・値は半角スペース、半角カンマ、半角プラス(+)、半角マイナス(-)で分ける事ができます。
・シンボルはTGIS_SymbolList.Prepareを追加します。ショートスタートは"&"です。
Line.Symbol = &F()DRAW(5 5 5 -5)MOVE(5 0)E()
・すべてのコマンドは1行で記述します。
FILL(0 0 20 5 0 -10) M(45,0) FOR(-45) DRAW(0,6 6,0 0-6) M(10,0) END() GOTO(100%) COLOR(255,0,0) FILL(0 0
-20 5 0 -10)
ショートでは次のように表現することができます。
I(0+0+20+5+0-10)M(45+0)F(-45)D(0+6+6+0+0-6)M(10+0)E()G(100%)C(255,0,0)I(0+0-20+5+0-10)
コーディングとサンプル
サンプル1
FILL(0 0 20 5 0 -10)
M(45,0)
FOR(-45)
DRAW(0,6,6,0 0 -6)
M(10,0)
END()
GOTO(100%)
COLOR(255,0,0)
FILL(0 0 -20 5 0 -10)
サンプル2
M(0W-25W)F()D(0W50W50W+0W0W-50W50W0W)E()
サンプル3
M(0S-25S)F()D(0S50S50S+0S0S-50S50S0S)E()
サンプル4
MOVE(0T-60T)
WIDTH(1)
COLOR(0,0,255)
LINE(100%)
GOTO(0%)
WIDTH(2)
COLOR(255,0,0)
FOR()
LINE(90T)
MOVE(90T0T)
END()
サンプル5
M(0T60T)C(255,0,0)L(100%)G(0%)M(0T-60T)C(0,128,0)L(100%)G(0%)M(0T0T)C(64,64,64)W(3)F()L(90T)M(90T0T)E()
実際のダイアログ
マチルダでは、レジェンドコントロールのプロパティダイアログの中にラインシンボルエディタが含まれています