$obj
- A
- $obj.addline
- $obj.addselection
- $obj.addxy
- $obj.align
- $obj.and
- $obj.angle
- $obj.angle2
- $obj.appstyle
- $obj.area
- B
- $obj.bmpcolor
- $obj.brother
- C
- $obj.canvas
- $obj.cap
- $obj.center
- $obj.centering
- $obj.check
- $obj.children
- $obj.childrenex
- $obj.clock
- $obj.connect
- $obj.copy
- $obj.copyproperty
- $obj.cross
- $obj.cutline
- $obj.cutpoint
- D
- $obj.delete
- $obj.deleteflag
- $obj.dib
- $obj.display
- $obj.disppixel
- $obj.dms
- E
- $obj.edge
- $obj.erase
- F
- $obj.family
- $obj.familyex
- $obj.field
- $obj.field($index)
- $obj.fielducs
- $obj.fieldutf
- $obj.fieldutf($index)
- $obj.file
- $obj.filetype
- $obj.fit
- $obj.flash
- $obj.flashstop
- $obj.free
- G
- $obj.gdi
- $obj.getvlayer
- H
- $obj.hole
- I
- $obj.id
- $obj.inner.num
- $obj.inner.olist
- $obj.inner.set
- $obj.inner.set.symbol
- $obj.insert
- $obj.inside
- J
- K
- L
- $obj.layer
- $obj.layername
- $obj.length
- $obj.line
- $obj.link
- $obj.lock
- $obj.log
- $obj.logdelete
- $obj.lognew
- $viewobj.logicalscale
- M
- $obj.maxid
- $obj.move
- N
- $obj.name
- $obj.nameucs
- $obj.near
- $obj.num
- O
- $obj.overlap
- P
- $obj.paint
- $obj.parent
- $obj.parents
- $obj.pixel2xy
- $obj.polygonclip
- $obj.protection
- $obj.pushafter
- $obj.pushbefore
- $obj.pushcreateobj
- Q
- R
- $obj.radius
- $obj.range
- $obj.rect
- $obj.rectclip
- $obj.redraw
- $obj.reference
- $obj.referenceid
- $obj.remove
- $obj.reverse
- $obj.root
- $obj.rotate
- $obj.rotatecopy
- S
- $obj.scalecopy
- $obj.scaling
- $obj.source
- T
- $obj.type
- U
- $obj.unlink
- $obj.update
- V
- $obj.view
- $obj.view.area
- $obj.view.source
- $obj.vlayer
- W
- $obj.width
- X
- $obj.x($i)
- $obj.xy
- $obj.xy($i)
- $obj.xy2pixel
- $obj.xyex
- Y
- $obj.y($i)
- Z
$obj.addline
gdi $obj.addline $L1xs $L1ys L1xe L1ye ... $Lnxs $Lnys $Lnxe $Lnye
return num_line
polygon型のオブジェクトにハッチングラインを追加します
ライン本数が返ります
座標値はラインの始終点座標列で与えます
参照 gdi $obj.line
$obj.align
gdi $obj.align [$align]
return oldalign
AreTextの配置調整モードをセットします
元のモードが返ります
文字列は範囲をはみ出すとカットされます
$align
fit | 均等配置 |
left | 左詰め |
right | 右詰め |
center | 中心 |
$obj.addxy
gdi $obj.addxy $x $y ....
return {num}
オブジェクトに頂点を追加します
頂点数が返ります
円、円弧、扇形、シンボル、テキストオブジェクトの場合、2点目以降の追加は無視さ
れます
プロテクトされているオブジェクトには働きません
$obj.addselection
gdi $obj.Addselection
return selectionlist
セレクションリスト(内部のオブジェクトリスト)へオブジェクトを追加します
オブジェクトリストであるセレクションリストが返ります
セレクションリストは削除不要です(試みても無視されます)
ただしオブジェクトのプロテクトが3に設定されている場合は拒否されます
$obj.and
gdi $obj.and $obj2
return {x1 y1 ... xn yn}
オブジェクト(obj)とオブジェクト(obj2)とのAND部を座標列で返します
両オブジェクトはポリゴンでなければなりません
完全内包はAND部と見なされません(このコマンドに先立ちチェックしてください)
gdi $obj.and $x1 $y1 .... $xn $yn
return {x1 y1 ... xn yn}
オブジェクト(obj)と座標で与えられた領域とのAND部を座標列で返します
オブジェクト(obj)はポリゴンでなければなりません
$obj.angle2
gdi $obj.angle2
return angle
円弧、扇形オブジェクトの開き角度を返します
他のオブジェクトの場合は0.0を返します
$obj.angle
gdi $obj.angle
return angle
テキスト、シンボル、bmp、円弧、扇形の角度を返します
円弧、扇形の場合は開始角度を返します
他のオブジェクトの場合は0.0を返します
gdi $obj.angle $angle
テキスト、シンボル、bmpの角度を設定します
円弧、扇形の場合は開始角度を設定します
他のオブジェクトの場合は何もしません
プロテクトされているオブジェクトには働きません
gdi $obj.angle $sa $wa
円弧、扇形の開始角度、開き角度を設定します
他のオブジェクトの場合は何もしません
プロテクトされているオブジェクトには働きません
$obj.appstyle
gdi $obj.appstyle $index [s1 $s1] [s2 $s2] [s3 $s3] [w $w] [Ls $Ls] [Le $Le] [Lm $Lm] [L0 $L0] [L1 $L1]
シンボルラインとシンボルポリゴンオブジェクトのappスタイルパラメータを変更します
gdi $canvas.newstyleコマンドで作成したスタイルはレイヤのappstyle
プロパティにセットして使用しますが、オブジェクト毎にスタイルパラメータを変
更する為のコマンドです。シンボルは表示OFF/ON設定しかできません。
indexには変更するスタイルインデックスを与えます
例えばレイヤプロパティが下記のとき
appstyle {2 私の破線 僕のシンボル}
「僕のシンボル」の値を変えたいならindexに1を与えます
s1 のあとに0か1を与え表示OFF/ONします(省略可能です)
s2 のあとに0か1を与え表示OFF/ONします(省略可能です)
s3 のあとに0か1を与え表示OFF/ONします(省略可能です)
w のあとに線幅を与えます(省略可能です)
Lsのあとに始点側オフセット値を与えます(省略可能です)
L0の後に繰り返しピッチ0を与えます(省略可能です)
L1の後に繰り返しピッチ1を与えます(省略可能です)
Leの後に終点側オフセット値を与えます(省略可能です)
Lmの後にシンボル配置オフセット値を与えます(省略可能です)
indexのみアーギュメントに与えるとスタイルパラメータのキャンセルになります
即ちレイヤ設定での描画になります
$obj.area
gdi $obj.area
return area
オブジェクトの面積を返します(内部単位)
ロード、ライン、シンボルライン、円弧の場合は0.0を返します
参考 gdi area
$obj.bmpcolor
gdi $obj.bmpcolor $index [$r $g $b]
return {r g b}
ビットマップオブジェクトの指定インデックスのカラーを設定します
カラーを与えなければ現在のカラーを返します
ビットマップオブジェクトでなければ何もしません
プロテクトされているオブジェクトはカラーを変更できません
$obj.brother
gdi $obj.brother
return olist
兄弟オブジェクトをオブジェクトリストで返します
返されたオブジェクトリストは呼び出し側で削除して下さい
$objがmdbオブジェクトの場合も有効です
$obj.canvas
gdi $obj.canvas
return canvas
オブジェクトのキャンバスを返します
$obj.cap
gdi $obj.cap [$cap]
return cap
ロードオブジェクトのキャップタイプを返します
ロードオブジェクトで無ければヌルを返します
プロテクトされているオブジェクトは変更できません
キャップタイプ
-1:未設定(レイヤ設定に従う)
0 :capなし
1 :始点cap
2 :終点cap
3 :始終点cap
$obj.centering
gdi $obj.centering
オブジェクトが中心になるようキャンバス表示範囲を変更します
表示スケールは変えません
自動再表示もしません
$objがmdbオブジェクトの場合はタイルマップが自動ロードされgdiオブジェクトを得てから実行します
$obj.center
gdi $obj.center
return {x y}
オブジェクトの中心座標{x y}を返します
現バージョンではレンジ中心です
重心は
lscan [eval gdi Garea [gdi $obj.xy]] gx gy
で求めてください
$obj.check
gdi $obj.check [cross]
return {x1 y1 ... xn yn}
オブジェトのねじれ(辺の交差)をチェックして全ての交差点の座標リストを返します
交差点がない場合、または円、ビットマップ、円弧、扇形、テキストオブジェクトの場合 /// はヌル文字を返します
gdi $obj.check doublepoint
return {x1 y1 ... xn yn}
オブジェトの全ての2重頂点の座標リストを返します
2重頂点がない場合、または円、ビットマップ、円弧、扇形、テキストオブジェクトの場
合はヌル文字を返します
$obj.childrenex
gdi $obj.childrenEx [num]
return {olist|num}
子供オブジェクトをオブジェクトリストで返します
numが与えられたら子供の数を返します
子供オブジェクトに削除フラグが立っていても抽出するところがgdi $obj.childrenと異なります
返されたオブジェクトリストは呼び出し側で削除して下さい
$objがmdbオブジェクトの場合も有効です
参照
gdi $obj.link
gdi $obj.unlink
gdi $obj.parent
gdi $obj.parents
gdi obj.root
$obj.children
gdi $obj.children [num]
return {olist|num}
子供オブジェクトをオブジェクトリストで返します
numが与えられたら子供の数を返します
返されたオブジェクトリストは呼び出し側で削除して下さい
$objがmdbオブジェクトの場合も有効です
参照
gdi $obj.link
gdi $obj.unlink
gdi $obj.parent
gdi $obj.parents
gdi obj.root
$obj.connect
gdi $obj.connect {start|end} [{selection|$olist}]
return olist
オブジェクト端点と接続するオブジェクトをオブジェクトリストで返します
第1アーギュメントにはstartかendを与えます
"start"を与えると始点接続、"end"を与えると終点接続
第2アーギュメントに"selection"を与えるとセレクション可のオブジェクトのみ対象となり、
$olistを与えると$olistのオブジェクトのみ対象となります
$obj.copyproperty
gdi $obj.copyproperty $obj2
obj2にobjのプロパティ(name,field,座標値)をコピーします
obj2の色塗り揮発レイヤはクリアされます
objとobj2はレイヤが異なっても良いが、図形タイプは同じであること
obj2がプロテクトされていたら何もしません
$obj.copy
gdi $obj.copy [$x $y]
return obj
始点がx,yの位置にobjのコピーを作成して新しいオブジェクトハンドルを返します
name,fieldもコピーされます
objに親がいても独立したオブジェクトになります(linkはコピーされません)
x y を省略すると完全なコピーオブジェクトを返します
色塗り揮発レイヤはクリアされます
$obj.cross
gdi $obj.cross [$olist]
return {$obj1 x1 y1 ... objn xn yn}
$objと辺が交差するオブジェクトとその座標を求めます
即ち$objの辺を切断するためのものです
$objの始終点が他の返上に乗っている時も交点とみなされます
対象はolistに含まれるオブジェクトです
olistを省略するとマップ全体(表示ON && セレクションON)が対象です
ただし非線形オブジェクトは除外されます
リターン値は交差しているオブジェクトハンドルと交点座標(計3要素)の繰り
返しです。
$obj.cutline
gdi $obj.cutline $index $x $y
return obj
ラインタイプのオブジェクトをindex番目の辺で分割して新しいオブジェクトハンドルを返し
ます
切断が失敗した場合は0が返ります
indexは1からです
新しいオブジェクトは終点側に生成されます
切断座標は与えられた座標がそのまま採用されます
頂点でも切断可。ただし始終点での切断は許されません
新しいオブジェクトは$obj.copyと同じ処理がされます(座標を除き)
ポリゴンタイプのような、ラインタイプ以外のオブジェクトには何もしません
色塗り揮発レイヤはクリアされます
$obj.cutpoint
gdi $obj.cutpoint $index
return n
ラインタイプのオブジェクトをindex番目の頂点を削除します
indexは0からです
ラインを分割し新しいオブジェクトを作成するのはgdi $obj.cutlineです
色塗り揮発レイヤはクリアされます
$obj.deleteflag
gdi $obj.deleteflag [?]
オブジェクトの座標を無効にし非表示にします(削除フラグ)
?を与えると現在の状態が返ります(1か0)
リファレンスオブジェクトが対象です
このコマンドにより削除フラフが立ったオブジェクトは
gdi $canvas.QueryDeleted
gdi $canvas.QueryInsideLockObj
で検索できますし、保存/読み込み可能です
削除フラグがセットされるとき、修正前のファミリィレンジがrootオブジェクトのmrecプロパティに自動セットされます
このmrecプロパティは、タイルマップ更新gdi $canvas.TileUpdate時に、タイルマップから旧オブジェクトを除外する処理で参照されます
$obj.delete
gdi $obj.delete [$del_event] [$new_event]
return num
オブジェクトを削除します
ただしclass::deleteイベントが1を返した場合だけです
削除したらUndoバッファに登録し、redoバッファをクリアします
削除された個数が返ります
$del_eventにはundoされた時のイベントプロシージャを与えます
$new_eventにはredoされた時のイベントプロシージャを与えます
いずれのイベントプロシージャも引数にオブジェクトハンドルが渡されます
$obj.dib
gdi $obj.dib
return dib
bmpタイプオブジェクトのDIBイメージハンドルを返します
DIBハンドルをTclBMP.DLLのGetDibInfo関数に渡すことによりイメージ情報を取得
することができます
また、TCL_RAS.DLLのrotation関数やtriming関数で回転、トリミング処理ができ /// ます
加工されたDIBイメージはbmpタイプオブジェクトに$obj.nameコマンドで再セットしたり、
BMZファイルに保存することなどもできます
このコマンド取得したDIBハンドルを破棄する処理はあり得ません
$obj.display
gdi $obj.display $xorswitch
xorswitchに1を与えるとオブジェクトを排他的論理和表示します
オブジェクトを非表示にしたいときに用います
通常表示されている場合、このコマンドの奇数回目のコールで非表示になり、偶数 /// 回目のコールで表示になります
ただし、他のオブジェクトが重なって表示されている場合は完全に非表示になら /// ない場合があります
このコマンドに類似した$obj.redrawは単なる再表示ですが、他のオブジェクトが重 /// なっていても正しく再表示されます
xorswitchに0を指定すると単なる再表示になります
$obj.disppixel
gdi $obj.disppixel $onoff
return oldonoff
viewオブジェクトにのみ有効です
ソースキャンバスのピクセルサイズのオブジェクを表示するか否か設定します
変更前の値が返ります
$obj.dms
gdi $obj.dms $latitude1 $altitude1 ....
return n
経緯度座標をオブジェクトにセットします
頂点数を返します
gdi $obj.xy コマンドの経緯度単位バージョンです
このコマンドに先立ち、gdi $canvas.fitdmsxy が実行されていなければなりま /// せん
つまり線形投影パラメータが設定されている場合にのみ有効です
経緯度は秒に10のn乗倍して求めた整数です
ここで10のn乗値はgdi $canvas.fitdmsxy で第1アーギュメントにセットされた値で
す
$obj.edge
gdi $obj.edge [$edge]
return edge
道路タイプ(road)の道路縁幅をセットします
edgeを省略すると現在の幅を返します
道路タイプ以外のオブジェクトの場合は空文字を返します
$obj.erase
gdi $obj.erase
オブジェクトを表示OFFします
一時的ですので次の再描画時には表示されます
このコマンドはオブジェクトを削除する前にコールします
削除前に非表示にして削除したことを知らせる為です
$obj.familyex
gdi $obj.familyEx
return olist
オブジェクトにリンクする全てのオブジェクトをオブジェクトリストで返します
自分自身もリストに含まれます
返されたオブジェクトリストは削除して下さい
$objがmdbオブジェクトの場合も有効です
deleteflagが立っているオブジェクトも含めるところがgdi $obj.family
と異なります
$obj.family
gdi $obj.family
return olist
オブジェクトにリンクする全てのオブジェクトをオブジェクトリストで返します
自分自身もリストに含まれます
返されたオブジェクトリストは削除して下さい
$objがmdbオブジェクトの場合も有効です
$obj.fieldutf($index)
gdi $obj.fieldutf($index) [$val]
return field_value
index番目のフィールドにUcsHexコード値をセットします
valの漢字コードはUcsHexコードであるべきです。
valを省略すると現在値を返します。返される文字コードは内部値のままです
つまり文字コードはユーザー自身が判断しなければなりません。
この場合には[gdi $obj.field($index)]と同じです
UcsHexコードとはgdi特有のコードで、漢字をユニコードHEX表現文字で表し、漢字部 /// の前後がESC(0x1B)で挟まれます
UcsHexコードをShift-JISに変換する手段は提供されていません
UcsHexコードをユニコードに変換する手段はapiコマンドで提供されます
$obj.field($index)
gdi $obj.field($index) [$val]
return field_value
index番目のフィールドに値valをセットします
valの漢字コードはShift-JISコードであるべきです
モード2以上でプロテクトされているオブジェクトには機能しません
値を省略すると現在値が返されます
この場合には、$objがmdbオブジェクトの場合も有効です
$obj.fielducs
gdi $obj.fielducs [$list]
return field_value
$listが省略されると現在のフィールド値をそのまま返します(Tclリスト)
この場合にはgdi $obj.fieldと全く同じ動作です。
$listを与える場合には、それらはUcsHexコードであること
オブジェクトフィールドには渡されたままのリストがセットされるが内部でUcsHexコードであ /// ることを意味するフラグが立ち、表示時に配慮されます
$obj.fieldutf
gdi $obj.fieldutf [$list]
gdi $obj.fielducsと同
互換性維持
$obj.field
gdi $obj.field [$list]
return field_value
$listが省略されると現在のフィールド値をそのまま返します(Tclリスト)
この場合には、$objがmdbオブジェクトの場合も有効です
$listが与えられるとオブジェクトフィールド値を変更します
モード2以上でプロテクトされているオブジェクトには機能しません
$obj.filetype
gdi $obj.fileType
return type
オブジェクトをロードしたファイル(リファレンスファイル)のタイプを返します
ただしアクティブオブジェクトの場合は空文字が返ります
$obj.file
gdi $obj.file
return filename
オブジェクトをロードしたファイル名(リファレンスファイル名)を返します
$objがmdbオブジェクトの場合も有効です
ただしアクティブオブジェクトの場合は空文字が返ります
アクティブオブジェクトとは、新規作成されたオブジェクトか、書き込みモードでロードされたファイルに含まれていたオブジェクト
$obj.fit
gdi $obj.fit
オブジェクトを画面全体に表示します
表示範囲は図形レンジから求められます
シンボルの場合は幅、高さ100000の範囲が表示されます
つまり、1ドットが1mmのマップ単位の場合にはシンボルを中心として100m範囲が表
示されます
結果を表示するにはgdi $canvas.redrawが必要です
$obj.flashstop
gdi $obj.flashstop
オブジェクトの点滅表示をOFFします
$obj.flash
gdi $obj.flash [$times]
オブジェクトを点滅表示します
$timeには点滅回数を与えます
$timesを省略するとgdi $canvas.flashstopが実行されるまで点滅を継続します(ver3.0)
点滅は表示0.15秒、非表示0.1秒間隔で行われます
$objがmdbオブジェクトの場合はタイルマップが自動ロードされgdiオブジェクトを得てから実行します
$obj.free
gdi $obj.free
ビットマップオブジェクトのメモリイメージを一時的に解放します
再表示されるときに再ロードされます
$obj.gdi
gdi $obj.gdi
return gdiobj
gdiオブジェクトハンドルを返します
このコマンドはobjがmdbオブジェクトの時に意味があります
objがgdiオブジェクトの時コールされると同じobjが返されます
$obj.getvlayer
gdi $obj.getvlayer
return vlayer
オブジェクトが記憶する揮発レイヤにはプライマリとセカンダリの2つがあります
0が返ればプライマリ、セカンダリ揮発レイヤが共にセットされていないことを意味します
この判定の為にのみ使用してください
参照
gdi $obj.vlayer
gdi $obj.paint
$obj.hole
gdi $obj.hole
return numhole
オブジェクトのホール数(飛び地数)を返します
$obj.id
gdi $obj.id [$id]
return id
オブジェクトのIDを返します
$objがmdbオブジェクトの場合も有効です
IDはオブジェクトが発生するときに振られ、永久に不変です
IDはファイル単位でユニークです
つまり複数のファイルからオブジェクトがロードされた場合には同じID
のオブジェクトが存在しますが、オブジェクトのリファレンスIDとの組み合
わせで区別することが出来ます
オブジェクトのリファレンスIDを求めるにはgdi $obj.ReferenceIDを
使用します
オブジェクトのファイル名を得るにはgdi $obj.fileを使用します
アーギュメントに$idを与えるとIDを変更します
リファレンスオブジェクト編集が許可されている場合、保存する際にユニーク
なIDをアプリケーション側で振り直す必要があります。
参照: {
gdi $canvas.EditReference
gdi $obj.maxid
$obj.inner.set.symbol
gdi $obj.inner.set.symbol [$index $symobj ...]
return success
TEXTオブジェクト($obj)の文字列にシンボルオブジェクト($symobj)を外字として挿入します。
TEXTオブジェクトにのみ有効なコマンドです。
挿入されたシンボルオブジェクトのハンドルは無効になります。
既にシンボルオブジェクトが存在する場合はクリアしてから再セット処理が行われます。
$indexはシンボルの挿入位置であり、バイトアドレスで与えます。
シンボルが挿入されるTEXTオブジェクトの文字列は、シンボルが挿入される範囲にスペース文字
が必要です。
アーギュメントを省略して実行すると挿入オブジェクトの全クリアになります
シンボルオブジェクトの配置座標と角度は自動設定されますが、サイズは変更されません。
(現実的にはシンボルサイズの微調整が必要だからです)
シンボルの座標は挿入位置の左下座標になります。
挿入されたシンボルオブジェクトは親TEXTオブジェクトの修正に連動して自動修正されます。
ただし、
TEXTオブジェクトの文字数が変更された場合はインナーオブジェクトの位置も変更する必要が
あるので再セットしなければなりません(インナーオブジェクトで再セットしてはいけません)
このコマンドはgdi $obj.inner.setと排他的です
例:シンボルオブジェクト☆を用いて "つのだ☆ひろお" と表示する
set text [gdi $textlay.newobj]
gdi $text.name "つのだ ひろお"
set symbol [gdi $symlay.newobj]
gdi $text.inner.set.symbol 6 $sym
参照
gdi $obj.inner.set
gdi $obj.inner.num
gdi $obj.inner.olist
$obj.inner.set
gdi $obj.inner.set [$innerobj ...]
return num
オブジェクト($obj)にオブジェクト($innerobj)を挿入します。
インナーオブジェクト数が返ります
既にインナーオブジェクトが存在する場合はクリアしてから再セット処理が行われます。
挿入されたオブジェクトは親オブジェクトの修正に対し連動して自動修正されます。
つまり複数のオブジェクトを一つのオブジェクトとして扱えるようになります。
挿入されたオブジェクトのハンドルは無効になります
アーギュメントを省略して実行するとインナーオブジェクトの全クリアになります
このコマンドはgdi $obj.inner.set.symbolと排他的です
参照
gdi $obj.inner.set.symbol
gdi $obj.inner.num
gdi $obj.inner.olist
$obj.inner.num
gdi $obj.inner.num
return num
オブジェクト($obj)のインナーオブジェクト数を返します
参照
gdi $obj.inner.set
gdi $obj.inner.set.symbol
gdi $obj.inner.olist
$obj.inner.olist
gdi $obj.inner.olist
return olist
オブジェクト($obj)のインナーオブジェクトをオブジェクトリストで返します
オブジェクトリストは使用後に呼び出し側で削除して下さい
参照
gdi $obj.inner.set
gdi $obj.inner.set.symbol
gdi $obj.inner.num
$obj.insert
gdi $obj.insert $index $x $y
return n
頂点を挿入します
新頂点数が返ります
頂点数固定のオブジェクトに対しては無意味です
$indexは挿入後の頂点番号(0から現在の頂点数までの範囲)
$x $yは挿入頂点座標
既存頂点と同じ座標には挿入できません(2重頂点禁止)
また現在の頂点数が1の場合には無視されます
プロテクトオブジェクトには機能しません
$obj.inside
gdi $obj.inside $x $y
return inside
座標$x,$yの位置がオブジェクトの内部に含まれているか否かを返します
inside=1が返れば内部点、0が返れば外部点です
境界線上の場合は2が返ります
$obj.layername
gdi $obj.layername
return layername
オブジェクトのレイヤ名を返します
$objがmdbオブジェクトの場合も有効です
$obj.layer
gdi $obj.layer [$layer]
return {layer|obj}
$layerを省略するとオブジェクトのレイヤハンドルを返します
$objがmdbオブジェクトの場合はレイヤ名を求めてからハンドルを求め直して下さい
例:
set layername [gdi $obj.layername]
set layer [gdi $canvas.layer $layername]
レイヤハンドル$layerを与えると、オブジェクトをそのレイヤに移動します
移動先は原則的に同じ図形タイプのレイヤでなければなりません
図形タイプが異なっていてもエラーではありません
新しいオブジェクトハンドルが返ります
プロテクトオブジェクトには機能しません
$obj.length
gdi $obj.length
return length
オブジェクトの長さを実数値で返します
シンボル以外の全てのオブジェクトが値を返します
シンボルの場合には0.0が返ります
$obj.line
gdi $obj.line $L1xs $L1ys L1xe L1ye ... $Lnxs $Lnys $Lnxe $Lnye
return n
polygon型のオブジェクトにハッチングラインをセットします
ライン本数が返ります
座標値はラインの始終点座標列で与えます
参照 gdi $obj.addline
$obj.link
gdi $obj.link $parentobj
オブジェクトリンクを作成します
$objは$parentobjの子供になります
参照
gdi $obj.unlink
gdi $obj.parent
gdi $obj.parents
gdi obj.root
gdi $obj.children
$obj.lock
gdi $obj.lock
return bool
オブジェクトが修正禁止か否かを返します
0が返れば修正可です
0以外の値は修正禁止(オブジェクトがプロテクトされている)です
このコマンドは下記のコマンドを複合したものです
gdi $canvas.protectionがonの時はgdi $obj.protection
の値がそのまま返ります。
gdi $canvas.protectionがoffの時は常に0が返ります
ただしレイヤの修正ロックがかかっている場合は常に1を返します
$obj.logdelete
gdi $obj.logdelete $event $arg1 ...
return success
ログファイルにオブジェクト削除を記録します
成功したら1、失敗したら0が返ります
このコマンドを使用する際はログファイルが作成されている必要があります
ログファイルを作成するコマンドは
gdi $canvas.LogCreate $filename
です
オブジェクトを削除する直前に実行します
$eventは、オブジェクトを削除する時に実行するイベントプロシージャ名です
$arg1 ... はイベントプロシージャのアーギュメントです
$viewobj.logicalscale
gdi $viewobj.logicalscale $scale
$obj.lognew
gdi $obj.lognew $event $arg1 ...
return success
ログファイルにオブジェクトが作成されたことを記録します
成功したら1、失敗したら0が返ります
このコマンドを使用する際はログファイルが作成されている必要があります
ログファイルを作成するコマンドは
gdi $canvas.LogCreate $filename
です
オブジェクトが作成され座標や属性のセットが完了してから実行します
$eventは、オブジェクトが作成されたときに実行したイベントプロシージャ名です
$arg1 ... はイベントプロシージャのアーギュメントです
$obj.log
gdi $obj.log $event $arg1 ...
return success
ログファイルにオブジェクト修正を記録します
成功したら1、失敗したら0が返ります
このコマンドを使用する際はログファイルが作成されている必要があります
ログファイルを作成するコマンドは
gdi $canvas.LogCreate $filename
です
オブジェクト修正が完了した直後に実行します
$eventは、オブジェクトが修正されたときに実行したイベントプロシージャ名です
$arg1 ... はイベントプロシージャのアーギュメントです
$obj.maxid
gdi $obj.maxid
return maxid
オブジェクトが属するファイルに格納されているオブジェクトの
最大IDを返します
$obj.move
gdi $obj.move $x $y
return n
オブジェクトの始点が($x,$y)になる位置に移動します
頂点数を返します
プロテクトオブジェクトには機能しません
$obj.nameucs
gdi $obj.nameucs [$name]
return name
$nameが省略されると現在のname値をそのまま返します。
この場合にはgdi $obj.nameと全く同じ動作です。
$nameを与えるとname値を変更します(プロテクトオブジェクトには機能しません)
$nameを与える場合には、それらはUcsHexコードであること
オブジェクトには渡されたままの文字列がセットされるが内部でUcsHexコードである
ことを意味するフラグが立ち、表示時に配慮されます
$obj.name
gdi $obj.name [$name]
return name
ビルトインプロパティであるname値を操作します
nameはオブジェクトによっては特別な役割も持ちます
$nameが省略されると現在のname値をそのまま返します
この場合、$objがmdbオブジェクトの場合も有効です
$nameを与えると変更します(プロテクトオブジェクトには機能しません)
gdiオブジェクトに対してのみ有効です
テキスト,エリアテキストオブジェクトのname値
name値は表示文字列になります
ビットマップオブジェクトのname値
name値はイメージファイル名です
この場合,ファイル名と矩形範囲をリストで与えることも出来ます
gdi $obj.name [list $filename $xmin $ymin $xmax $ymax]
これは
gdi $obj.name $filename
gdi $obj.xy $xmin $ymin $xmax $ymax
と同じです
座標付きのname値をセットした場合でも、参照するとファイル名しか返りません
また、既に作成済みのdibハンドルを与えることもできます
この場合、アーギュメントは2つ与えることになります
gdi $obj.name $dib $filename
gdi $obj.name $dib [list $filename $xmin $ymin $xmax $ymax]
$dibが現在のdibと異なるなら旧メモリイメージが解放され,入れ替えられます
与えた$dibは作成側が削除しなければなりません(メモリイメージは削除しないモード)
ただしdibを別のビットマップオブジェクトから得た場合(gdi $obj.dib)には削除
してはいけません
dibに関してはtclexgau_bmp.dllの関数で操作します
アイコンオブジェクトのname値
name値はアイコンをリソースとしてもっているexe,dllファイル名です
小さいアイコンを優先して採用します
name値に"filing"を与えるとファイリング用のFボタンアイコンを表示します
クエリ
name値へのクエリコマンドが独立して提供されています
参照
gdi $olist.QueryName
gdi $olist.QueryNameInclude
gdi $olist.QueryNameGlob
gdi $olist.QueryNameFirst
gdi $olist.QueryNameAll
$obj.near
gdi $obj.near $x $y $distance
return {index x y}
オブジェクトが指定点($x,$y)から$distance以内に有るか否かを返します
離れていれば空文字を返します
範囲内ならば{index x y}リストを返します
index : 最近傍辺番号(0から)
x y : 指定点から辺に降ろした垂線との交点座標
$obj.num
gdi $obj.num
return n
頂点数を返します
負数が返されたらそれはdeleteフラグが立ったオブジェクトです
$obj.overlap
gdi $obj.overlap [$onoff]
return onoff
タイル跨りであるかその真偽を返します
$obj.paint
gdi $obj.paint [{$vlay|?}]
一時着色用の揮発レイヤをセット/リセットします
$vlayに0を与えるか省略するとリセットします
$vlayに負数を与えるとオブジェクトは非表示になります。
オブジェクトの揮発レイヤにはプライマリ/セカンダリの2つがあります
このコマンドはセカンダリ揮発レイヤを操作します
もしセレクションオブジェクトに適用するとセレクション表示を一時的に変更する
処理になります。セレクションが解除されると元に戻されます。
参照:gdi $canvas.selection.color}
$vlayに"?"を与えると現在のセカンダリ揮発レイヤハンドルを返します
プライマリ揮発レイヤへのアクセスはgdi $obj.vlayerコマンドです
$obj.parents
gdi $obj.parents [num]
return {olist|num}
リンクを辿り全ての親オブジェクトをオブジェクトリストで返します
numが与えられたら親の数を返します
オブジェクトリストは使用後削除して下さい
$objがmdbオブジェクトの場合も有効です
参照
gdi $obj.link
gdi $obj.unlink
gdi $obj.parent
gdi obj.root
gdi $obj.children
$obj.parent
gdi $obj.parent
return obj
親オブジェクトを返します
複数の親がいる場合、最後に親とされたオブジェクトが返ります
$objがmdbオブジェクトの場合も有効です
参照
gdi $obj.link
gdi $obj.unlink
gdi $obj.parents
gdi obj.root
gdi $obj.children
$obj.pixel2xy
gdi $obj.pixel2xy $px $py
return {x y}
ビットマップオブジェクトのラスタ座標(px,py)をマップ座標(x,y)に変換します
{x y}リストが返ります
$obj.polygonclip
gdi $obj.polygonclip $stringobj
return {L1xs L1ys L1xe L1ye L2xs L2ys... Lnxe Lnye}
ポリゴンオブジェクト領域で線形オブジェクトをクリッピングします
クリッピング結果として線分座標値リストを返します
空リストが返れば内部に含まれる辺がないことを意味します
gdi $obj.polygonclip $x1 $y1 ...
return {L1xs L1ys L1xe L1ye L2xs L2ys... Lnxe Lnye}
ポリゴンオブジェクト領域で座標アーギュメントで与えられたラインをクリッピングします
クリッピング結果として線分座標値リストを返します
空リストが返れば内部に含まれる辺がないことを意味します
$obj.protection
gdi $obj.protection [$mode]
return protected
$modeに1またはonを与えるとオブジェクトの座標修正がプロテクトされます
$modeに2を与えるとオブジェクトの座標及び属性修正がプロテクトされます
$modeに3を与えると更にオブジェクトのセレクションもプロテクトされます
$modeに0またはoffを与えるとオブジェクトのプロテクトを解除します
$modeを省略すると現在の設定状態が返ります
ただし、キャンバスのプロテクトモードがOFFの場合にはプロテクト機能は働きません
キャンバスのプロテクトモードは[gdi $canvas.protection $onoff]で設定します
キャンバスの初期設定はプロテクションモードがONです。
$obj.pushafter
gdi $obj.pushAfter [$event]
return success
変更後のオブジェクトをUndoバッファに積みます
eventにはUndoされた後に実行するイベントスクリプトを与えます
このイベントスクリプトは変更の際に実行されるものと同じです
スクリプトはTclリスト形式で、先頭要素がコマンド名、以降の要素がアーギュメントです
Redoのときには、コマンド名の次ぎにオブジェクトハンドルが挿入されて実行されます
従ってコマンドは第一アーギュメントにオブジェクトハンドルを受け取るものとして定義され
ている必要があります
eventは省略可能です
PushBeforeした後に修正し、その直後にPushAfterをコールしてください
尚、オブジェクトの更新時刻がupdateプロパティに自動セットされます
$obj.pushbefore
gdi $obj.pushBefore [$event]
return success
変更前のオブジェクトをUndoバッファに積みます
eventにはUndo後Redoされた時に実行するスクリプトを与えます
このスクリプトは変更が戻される時に実行されるものなので、移動などの場合には、
変更の際に実行されたスクリプトとアーギュメントが逆の値(符号逆転)を与えます。
スクリプトはTclリスト形式で、先頭要素がコマンド名、以降の要素がアーギュメントです
Redoのときには、コマンド名の次ぎにオブジェクトハンドルが挿入されて実行されます
従ってコマンドは第一アーギュメントにオブジェクトハンドルを受け取るものとして定義され
ている必要があります
eventは省略可能です
PushBeforeした後に修正し、その直後にPushAfterをコールしてください
gdi $obj.PushAfter参照
$obj.pushcreateobj
gdi $obj.pushCreateObj [$new_event [$del_event]]
return success
新規作成されたオブジェクトをUndoバッファに積みます
尚、オブジェクトの変更時刻が自動セットされます
$obj.radius
gdi $obj.radius [$radius]
return radius
円、円弧、扇形の半径を返します
$radiusが与えられると半径を変更します
半径を持たないオブジェクトに対しては何もしません(空文字を返します)
プロテクトオブジェクトの半径は変更出来ません
$obj.rectclip
gdi $obj.rectclip $stringobj
return {line line2 ...}
オブジェクトレンジで、線形オブジェクトをクリッピングします
クリッピング結果としてライン座標を複合リストで返します
例:{x1 y1 x2 y2 ... yn} {x1 y1 x2 y2 ... yn}
空リストが返れば内部に含まれる辺がないことを意味します
gdi $obj.rectclip $x1 $y1 ...
return {line line2 ...}
オブジェクトレンジで、座標アーギュメントで与えられたラインをクリッピングします
$obj.range
gdi $obj.range [{old | family | oldfamily}]
return {xmin ymin xmax ymax}
オブジェクトのレンジを返します
レンジとはオブジェクト全体を囲む最小の矩形範囲です
objがmdbオブジェクトの場合も有効です
"old"を与えると編集前レンジを返します
編集レンジがなければ空リストを返します
"family"を与えると家族全体の範囲を返します
"oldfamily"を与えると、マップからロードされた状態(編集前)の家族全体の範囲を返します
このオプション機能はmdbオブジェクトには無効です
$obj.rect
gdi $obj.rect [{old | family | oldfamily}]
return {xmin ymin xmax ymax}
gdi $obj.rangeと同じです
旧バージョンとの互換性のため残されています
$obj.referenceid
gdi $obj.referenceID [$id]
return referenceid
オブジェクトのリファレンスIDを返します
0が返ればオブジェクトはアクティブオブジェクトです
$idを与えるとリファレンスIDをセットします
その時、IDも更新されます
$obj.reference
gdi $obj.reference [$notsave]
return {1 | 0}
オブジェクトがリファレンスオブジェクトであるか否かを返します
1が返ればリファレンスオブジェクト、0が返ればアクティブオブジェクトです
リファレンスオブジェクトとは、gdi $canvas.LoadRefMapコマンドで参照用としてファイルか
らロードされたオブジェクトです
これらのオブジェクトはファイルに保存されません
修正が可能で、ファイルに保存できるオブジェクトがアクティブオブジェクトです
gdi $canvas.LoadMapコマンドでロードされたか、新規入力されたオブジェクトです
アーギュメントに1を与えると擬似的にリファレンスオブジェクトにすることができます
ただしアクティブオブジェクトに対してのみ有効です
保存したくない場合などに擬似的リファレンスオブジェクトにします
アーギュメントに0を与えると擬似的にリファレンスオブジェクトにされていたオブジェクトをアクティブ
に戻します
リファレンス編集可能モードの時はリファレンスオブジェクトでも0が返ります
参照: gdi $canvas.EditReference
$obj.redraw
gdi $obj.redraw
オブジェクトを再描画します
実際にはオブジェクトのレンジ全体を再描画します
$obj.remove
gdi $obj.remove
オブジェクトを削除します(Undoできない削除です)
削除しても再表示コマンドを実行しませんと確認できません
キャンバス全体を再表示すると効率が悪いので下記のように処理します
gdi $obj.erase
gdi $obj.remove
つまり先に非表示にします
プロテクトオブジェクトには機能しません
$obj.reverse
gdi $obj.reverse
オブジェクトの座標順を反転します
ポリゴンや線形タイプオブジェクトにのみ有効です
プロテクトオブジェクトには機能しません
$obj.root
gdi $obj.root
return obj
リンクを辿り、最上位の親オブジェクトを返します
親が居なければ0を返します
$objがmdbオブジェクトの場合も有効です
参照
gdi $obj.link
gdi $obj.unlink
gdi $obj.parent
gdi $obj.parents
gdi $obj.children
$obj.rotatecopy
gdi $obj.rotatecopy $x $y $ang
return newobj
($x,$y)を中心にして$ang度回転したコピーオブジェクトを返します
色塗り揮発レイヤはクリアされます
$obj.rotate
gdi $obj.rotate $x $y $ang
オブジェクトを($x,$y)を中心にして$ang度回転します
プロテクトオブジェクトには働きません
$obj.scalecopy
gdi $obj.scalecopy $x $y $sx $sy
return newobj
($x,$y)を中心にしてx方向に$sx倍、y方向に$sy倍したコピーオブジェクトを返し
ます
色塗り揮発レイヤはクリアされます
$obj.scaling
gdi $obj.scaling $x $y $sx $sy
オブジェクトを($x,$y)を中心にしてx方向に$sx倍、y方向に$sy倍します
プロテクトオブジェクトには働きません
$obj.type
gdi $obj.type
return type
オブジェクトの図形タイプを返します
$objがmdbオブジェクトの場合も有効です
load
circle
arc
fan
string
polygon
text
areatext
symbol
symbolline
symbolpolygon
bmp
rectangle
square
view
icon
$obj.unlink
gdi $obj.unlink
オブジェクトのリンクを解除します
プロテクトオブジェクトには働きません
参照
gdi $obj.link
gdi $obj.parent
gdi $obj.parents
gdi obj.root
gdi $obj.children
$obj.update
gdi $obj.update [set|clear|$second|before|after $buffadr]
return {update_time|buffadr}
アーギュメントを省略するとオブジェクトの修正時刻を秒で返します
setを与えると現在の時刻をセットします
clearを与えると修正時刻をクリアします
その時同時にmrec(修正前レンジ)もクリアされます
時刻を与えると([clock second])その時刻をセットします
beforeを与えると修正前のオブジェクトの状態を記憶し,そのバッファアドレスを返します
afterを与えると修正後のオブジェクトの状態を調べ修正があれば修正時刻をセットします
afterに続けてバッファアドレスを渡す必要があります
gdi $obj.pushAfter,gdi $obj.pushCreateObjコマンドが実行されると、自動的に
gdi $obj.update set
がコールされます
$obj.view.area
gdi $obj.view.area [$xmin $ymin $xmax $ymax [wms]]
return {xmin ymin xmax ymax}
viewオブジェクトの表示範囲(マップ座標)を設定します
gdi $obj.view.area $x0 $y0 $x1 $y1 $x3 $y3
viewオブジェクトの表示範囲の座標軸(マップ座標)を設定します
プロテクトオブジェクトは設定できません
アーギュメントを省略すると現在値を返します
※viewオブジェクトの大きさが変更されると表示範囲は自動調節されます
自動調節は中心維持、スケール維持で行われます
$obj.view.source
gdi $obj.view.source [$canvas]
return canvas
viewオブジェクトが表示するマップを開いているキャンバス(ソースキャンバス)を設定します
アーギュメントを省略すると現在値(キャンバスハンドル)を返します
$obj.vlayer
gdi $obj.vlayer [{$vlayer|?}]
return $vlayer
オブジェクトの揮発レイヤにはプライマリ/セカンダリの2つがあります
このコマンドはプライマリ揮発レイヤを書き換えます
揮発レイヤ($vlayer)をアーギュメントに与えるとオブジェクトの表示が変更されます
その時、セカンダリ揮発レイヤ(着色用)は無条件にクリアされます
$vlayerに0を与えるか省略すると解除になります
(セカンダリが設定されている場合はセカンダリ揮発レイヤで表示されます)
$vlayerに-1を与えると「非表示」指定になります
ただしプライマリ揮発レイヤは変更されずにセカンダリ揮発レイヤに-1がセットされます
したがって非表示設定は[gdi $obj.paint -1]を使用すべきです
このコマンドは恒久的な(マップを閉じるまで)表示変更の為に用いられます
更に、このコマンドで与えた揮発レイヤのsavemapフラグが立っている場合には
プライマリ揮発レイヤはマップに保存され、ロード時に再アタッチが試みられます。
(非表示設定は保存されません)
$vlayerに"?"を与えるとプライマリ側の現在値を返します
0が返ってもセカンダリ側に揮発レイヤがセットされている場合がありますので
オブジェクトは着色表示されています(参照:gdi $obj.getvlayer)
このコマンドにオブジェクトプロテクションは関与しません
$obj.width
gdi $obj.width [$width]
return width
道路、円弧オブジェクトにのみ有効です
$widthを省略すると現在の幅(厚さ)が返ります
$widthを与えると道路幅、円弧の厚さを変更します
プロテクトオブジェクトは変更できません
$obj.xy($i)
gdi $obj.xy($i) [$x $y]
return {x y}
アーギュメントを省略するとオブジェクトのi番目の座標値を返します
この場合には、$objがmdbオブジェクトの場合も有効です
iは頂点番号であり始点は0です
iが負数の場合は最終点からのオフセットになります
-1が最終点です
$x $yを与えると座標値を変更します
プロテクトされたオブジェクトは変更出来ません
$obj.x($i)
gdi $obj.x($i) [$x]
return x
オブジェクトのi番目のx座標値を返します
iは頂点番号であり始点は0です
iが負数の場合は最終点からのオフセットになります
-1が最終点です
$xを与えるとi番目のx座標値を変更します
ただしこの使い方は推奨されません。座標はx,yペアで与えるべきものなの
で[gdi $obj.xy($i) $x $y]を使用して下さい
プロテクトされたオブジェクトは変更出来ません
$obj.xy2pixel
gdi $obj.xy2pixel $px $py
return {x y}
ビットマップオブジェクトのイメージ座標(ピクセル座標)をマップ座標に変換して返します
$px,$pyはイメージデータサイズ外でも構いません(例えば負数)
オブジェクトがビットマップオブジェクトでない場合には与えた座標がそのまま返りま
す
$obj.xyex
gdi $obj.xyEx
return {座標値リスト及びパラメータ}
オブジェクトの座標値リストとともに、オブジェクトが円、円弧、扇形、道路、シンボル、 /// テキストの場合には固有の値も返します
circle | x y r | rは半径 |
arc | x y r sa wa w | rは半径,saは開始角,waは開き角wは厚さ |
fan | x y r sa wa | rは半径,saは開始角,waは開き角 |
symbol | x y ang | angは角度 |
text | x y ang | angは角度 |
road | Ww Eedge Ccap x1 y1 ... xn yn | |
wは幅員,edgeは道路縁幅,capは端末処理フラグ | ||
それぞれW,E,Cはキーワードです | ||
w,edge,capがオブジェクトにセットされていなければ戻 | ||
り値リストに現れません |
$obj.xy
gdi $obj.xy [$x1 $y1 ... xn yn]
return {x1 y1 ...xn yn}
オブジェクトの座標値リストを返します
座標値リストを与えると座標値を変更します
変更はプロテクトされたオブジェクトには機能しません
オブジェクト固有の幾何情報も戻り値リストに含まれます。
$obj.xyExと異なる点は、シンボル、テキスト、道路の場合に座標値しか返さない点
です
座標以外のパラメータ(半径や角度)に限り、それらを与えることも、省略する
ことも出来ます
(シンボル、テキストの角度は取得は出来ませんが、与えることはできます)
このコマンドの仕様は分かりにくいものがあります
互換性を維持しながら拡張してきた結果、分かりにくくなっています
基本的に、座標値を一括して(リストとして)取り出すには、オブジェクトタイプに
より下表のコマンドを使い分けて下さい
gdi $obj.xyを使用するオブジェクトタイプ(頂点数不定)
string, polygon, road, symbolline, symbolpolygon,
square, areatext
gdi $obj.xy(0)を使用するオブジェクトタイプ(中心座標のみ)
circle,arc,fan,symbol,text
gdi $obj.rectを使用するオブジェクトタイプ(矩形範囲)
bmp, rectangle
※ bmpオブジェクト座標を{gdi $obj.xy]で取得すると5頂点座標が返ります /// す
※ squareオブジェクト座標を[gdi $obj.xy]で取得すると2頂点座標が返り
ます
半径や角度など、座標以外の幾何情報の取得、設定にはそれぞれにコマンドが
用意されているのでそれらを使用して下さい
$obj.y($i)
gdi $obj.y($i) [$y]
return y
オブジェクトのi番目のy座標値を返します
iは頂点番号であり始点は0です
iが負数の場合は最終点からのオフセットになります
-1が最終点です
$yを与えるとi番目のy座標値を変更します
ただしこの使い方は推奨されません。座標はx,yペアで与えるべきものなの
で[gdi $obj.xy($i) $x $y]を使用して下さい
プロテクトされたオブジェクトは変更出来ません