$olist
- A
- $olist.addselection
- $olist.and
- $olist.append
- B
- C
- $olist.canvas
- $olist.clear
- $olist.clip
- $olist.compress
- $olist.copy
- $olist.cross
- D
- $olist.data
- $olist.delete
- $olist.deleteflag
- $olist.deleteobj
- E
- $olist.eraseobj
- $olist.exists
- $olist.extract
- F
- $olist.find
- $olist.flash
- $olist.flashstop
- G
- $olist.gdi
- H
- I
- $olist.incref
- $olist.inobj
- $olist.inpolygon
- $olist.insideobj
- $olist.insidepolygon
- J
- K
- L
- $olist.list
- $olist.lock
- M
- $olist.merge
- $olist.mergea
- N
- $olist.nearline
- $olist.nearnode
- $olist.node
- $olist.num
- O
- $olist.obj
- P
- $olist.paint
- $olist.protection
- $olist.pushafter
- $olist.pushbefore
- $olist.pushnew
- Q
- $olist.queryfield
- $olist.queryid
- $olist.querylayer
- $olist.queryname
- $olist.querynameall
- $olist.querynamefirst
- $olist.querynameglob
- $olist.querynameinclude
- $olist.queryobj
- $olist.queryxy
- R
- $olist.range
- $olist.redraw
- $olist.removeobj
- $olist.reverse
- S
- $olist.savemap
- $olist.savemapxy
- $olist.savemem
- $olist.savememxy
- $olist.savetile
- $olist.savetilexy
- $olist.select
- $olist.selectfile
- $olist.sort
- $olist.subst
- T
- $olist.transform
- $olist.type
- U
- $olist.unique
- $olist.unlock
- $olist.update
- V
- W
- $olist.where
- X
- $olist.xor
- Y
- Z
$olist.addselection
gdi $olist.AddSelection
return olist
オブジェクトリストに含まれるオブジェクトをセレクションリストに追加します
セレクションリストハンドルを返します
$olist.and
gdi $olist.and $olist1 ...
return newolist
オブジェクトリストolistとアーギュメントに与えられたオブジェクトリストに共通に含まれるオブジェクト
を新しいオブジェクトリストハンドルで返します
$olistがmdbリストの場合も有効です。その場合mdbリストが返ります。
$olist.append
gdi $olist.append $obj ...
return olist
オブジェクトリストにオブジェクトを追加します
同じオブジェクトリストを返します
オブジェクトリストを追加する場合はgdi $olist.mergeを使います
$olistがmdbリストの場合も有効です。ただしその場合には$objもmdbオブジェクトでなければなりません
$olist.canvas
gdi $olist.canvas
return canvas
オブジェクトリストが所属するキャンバスを返します
$olist.clear
gdi $olist.clear
return num
オブジェクトリストをクリアします
クリアされたオブジェクト数が返ります
$olist.clip
gdi $olist.clip copy [$new_event [$del_event]]
gdi $olist.clip cut [$new_event [$del_event]]
return num
オブジェクトリストに含まれるオブジェクトをクリップボードにコピー/カットします
オブジェクトの個数が返ります
クリップボードはWindowsのそれではなく、gdiのクリップボードです
$olist.compress
gdi $olist.compress
return num
除外フラグが立っているオブジェクトをリストから除外し、個数を返します
mdbオブジェクトリストにも有効です
参照: gdi $olist.subst
$olist.copy
gdi $olist.copy
return newlist
オブジェクトリストのコピーを返します
$olistがmdbリストの場合も有効です。その場合mdbリストが返ります。
$olist.cross
gdi $olist.cross [$guiname] [$format]
return {obj1 obj2 x y ....}
オブジェクトリスト内で互いに交差するオブジェクトを探し交差した両オブジェクトの
オブジェクトハンドルと交点座標をTclリストで返します
例えば交点が2カ所あれば8要素のリストが返ります
guiname とformatには途中経過を表示したい場合にguiコントロール名と表示
フォーマット(c言語の整数タイプ置換フォーマット)を与えます
$olist.data
gdi $olist.data $obj [$data]
return data
オブジェクトリストに含まれるオブジェクトのデータを参照します
-99が返るとデータが無いことを意味します
$data与えると変更します
成功すると同じ値が返ります
失敗すると$dataから99を減じた値が返ります
$olist.deleteflag
gdi $olist.deleteflag
リスト内オブジェクトに削除フラグを立てます
$olist.deleteobj
gdi $olist.deleteobj [$del_event [$new_event]]
return num
リスト内オブジェクトを削除します
ただしdeleteイベントが1を返した場合だけです
削除したらUndoバッファに登録し、redoバッファをクリアします
削除された個数が返ります
$olist.delete
gdi $olist.delete
return refcount
参照カウンタが0ならオブジェクトリストを削除します
0以外なら参照カウンタを減じます
参照カウンタ値を返します
-1が返れば削除されたことを意味します
オブジェクトリストがロックされている場合は何もしません
$olistがmdbリストの場合も有効です。
$olist.eraseobj
gdi $olist.eraseobj
オブジェクトリストに含まれるオブジェクトを一時的に非表示にします
(削除するのではありません)
$olist.exists
gdi $olist.exists $obj
return true
オブジェクトリストに$objが含まれているかを調べます
含まれていれば1を返します
$olist.extract
gdi $olist.extract $hlayer
return olist
オブジェクトリストから指定レイヤハンドルのオブジェクトを抽出します
抽出されたオブジェクトがオブジェクトリストで返ります
$olistからは抽出されたオブジェクトが除外されます
$olist.find
gdi $olist.find $obj
return index
オブジェクトリストに$objが含まれているかを調べます
含まれていればindexを返します
$olist.flashstop
gdi $olist.flashstop
オブジェクトリストのオブジェクトだけ点滅表示OFFします
参照
gdi $obj.flashstop
gdi $canvas.flashstop
gdi $olist.flash
gdi $obj.flash
$olist.flash
gdi $olist.flash [$times]
オブジェクトリストを点滅表示します
$timeには点滅回数を与えます
点滅は表示0.15秒、非表示0.1秒間隔
$olist.gdi
gdi $olist.gdi
$olist.incref
gdi $olist.incref
参照カウンターをアップします
アップ後の参照カウンタ値を返します
オブジェクトリストがロックされている場合は何もしません
$olistがmdbリストの場合も有効です。
参照:gdi $olist.delete
$olist.inobj
gdi $olist.InObj $obj
return olist
オブジェクトリストを調べ、渡されたオブジェクト(obj)の中に一部でも含まれる
オブジェクトを新しいオブジェクトリストで返します
$olist.inpolygon
gdi $olist.InPolygon $x1 $y1...
return olist
オブジェクトリストを調べ、座標値で指定された領域中に一部でも
含まれるオブジェクトを新しいオブジェクトリストで返します
$olist.insideobj
gdi $olist.InsideObj $obj
return olist
オブジェクトリストを調べ、渡されたオブジェクト(obj)の中に完全に含まれる
オブジェクトを新しいオブジェクトリストで返します
$olist.insidepolygon
gdi $olist.InsidePolygon $x1 $y1...
return olist
オブジェクトリストを調べ、座標値で指定された領域中に完全に含まれる
オブジェクトを新しいオブジェクトリストで返します
$olist.list
gdi $olist.list
オブジェクトリストに含まれる全オブジェクトをTclリストで返します
gdi foreachで処理するより、
foreach obj [gdi $olist.list]
と記述したほうが高速です
$olist.lock
gdi $olist.lock
オブジェクトリストをロックします
ロックされたオブジェクトリストは削除できません
削除するためにはgdi $olist.unlockを実行します
$olistがmdbリストの場合も有効です。
参照:gdi $olist.unlock
$olist.merge
gdi $olist.merge $olist1 ...
return newlist
オブジェクトリスト(olist)にオブジェクトリスト(olist1 ...)のオブジェクトをマージします
同じオブジェクトリストが返ります。ユニーク処理が行われます。
$olistがmdbリストの場合も有効です。ただしユニーク処理は行われません。
mdbリストでユニーク処理を伴うmergeは{mdb $olist.or}で行います
gdi lmerge $olist1 $olist2 ... コマンドを使うとマージされた結果が新しい
オブジェクトリストで返されます
オブジェクトを追加する場合はgdi $olist.appendを使います
$olist.nearline
gdi $olist.nearline $x $y $distance
return {obj x y}
指定した位置(x,y)から指定距離内(distance)にありかつ最短距離
のオブジェクトを検索し、オブジェクトハンドルと座標値のTclリストで返します
検索はオブジェクトの辺に降ろした垂線の長さで判定されます
返される座標は垂線との交点座標です(最寄りの座標)
指定範囲内にある頂点も検索されます
現バージョンでは円は検索しません
円弧、扇形の場合、リターンされる座標はおよその位置です
$olist.nearnode
gdi $olist.nearnode $x $y $distance
return olist
指定した位置(x,y)から指定距離内(distance)に頂点があるオブジェクト
(オブジェクトリストの中)を検索し、オブジェクトリストにその頂点番号とともに
格納して返します
頂点番号はgdi $olist.nodeコマンドで取り出すことができます
$olist.node
gdi $olist.node $index
return no
オブジェクトリストにindex番目に格納されているオブジェクトの頂点番号を取り出します
オブジェクトリストはgdi $olist.nearnodeコマンドで作成されたものに限ります
indexは0からです
$olist.num
gdi $olist.num
return num
オブジェクトリストに格納されているオブジェクトの個数を返します
$olistがmdbリストの場合も有効です。
$olist.obj
gdi $olist.obj $index
return obj
オブジェクトリストにindex番目に格納されているオブジェクトのハンドルを返します
indexは0からです
$olistがmdbリストの場合も有効です
$olist.paint
gdi $olist.paint {$vlay | -1}
return vlayer2
一時着色用の揮発レイヤをセット/リセットします
$vlayに0を与えるか省略するとリセットします
$vlayに負数を与えるとオブジェクトは非表示になります。
オブジェクトの揮発レイヤにはプライマリ/セカンダリの2つがあります
このコマンドはセカンダリ揮発レイヤを操作します
もしセレクションオブジェクトに適用するとセレクション表示を一時的に変更する
処理になります。セレクションが解除されると元に戻されます。
参照:gdi $canvas.selection.color}
$olist.protection
gdi $olist.protection $protection
return num
オブジェクトリストに含まれるオブジェクトのプロテクトを変更します
$protection には0,1,2,3のいずれかを与えます
gdi $obj.protectionを参照
$olist.pushafter
gdi $olist.PushAfter $event
return num
Undoバッファに修正後のオブジェクトを登録します
登録されたオブジェクトの個数が返ります
eventにはこのオブジェクトがRedoにより再生されるときに実行する
Tclプロシージャをアーギュメント込みで指定します
ただしアーギュメントからオブジェクトは除外して与えます
修正前のオブジェクトを登録するのはgdi $olist.PushBeforeです
このコマンドとペアで使用されます
$olist.pushbefore
gdi $olist.PushBefore $event
return num
Undoバッファに修正前のオブジェクトを登録します
登録されたオブジェクトの個数が返ります
eventにはこのオブジェクトがUndoにより戻されるときに実行する
Tclプロシージャをアーギュメント込みで指定します
ただしアーギュメントからオブジェクトは除外して与えます
修正後のオブジェクトを登録するのはgdi $olist.PushAfterです
このコマンドとペアで使用されます
$olist.pushnew
gdi $olist.PushNew [$new_event [$del_event]]
return num
Undoバッファに新規作成オブジェクトを登録します
登録されたオブジェクトの個数が返ります
$olist.queryfield
gdi $olist.QueryField $index $val [$ope]
フィールド値での検索
opeを省略すると正規表現での検索(文字列検索)、
opeを与えると数値比較での検索を行います
ただし、opeに"not"を与えると正規表現での検索結果の偽を採用します
index | 属性項目番号 0から |
val | 比較数値または正規表現文字列 |
数値の場合(opeが指定された場合)、下記の比較演算子(ope)の | |
右辺値を与えます | |
(field_val ope val) | |
ope | = |
> | |
>= | |
< | |
<= | |
!= | |
not 正規表現での評価の偽を採用 | |
省略 正規表現で評価 |
$olist.queryid
gdi $olist.QueryID $id
return obj
オブジェクトリストからIDでオブジェクトを検索します
オブジェクトハンドルが返されます
発見できなかった場合には0が返ります
$olist.querylayer
gdi $olist.QueryLayer $hlay1 ... $hlayn
return olist
オブジェクトリストから指定されたレイヤハンドルに属するオブジェクトを抽出し
新しいオブジェクトリストに格納して返します
$olist.querynameall
gdi $olist.QueryNameAll $name
return olist
nameフィールド値の完全一致検索
検索結果はオブジェクトリストで返される
$olist.querynamefirst
gdi $olist.QueryNameFirst $name
return olist
nameフィールド値の先頭一致検索
検索結果はオブジェクトリストで返される
$olist.querynameglob
gdi $olist.QueryNameGlob $name
return olist
nameフィールド値のGlob形式検索
検索結果はオブジェクトリストで返される
$olist.querynameinclude
gdi $olist.QueryNameInclude $name
return olist
nameフィールド値の部分一致検索
検索結果はオブジェクトリストで返される
$olist.queryname
gdi $olist.QueryName $name [$ope]
return olist
nameフィールド値で検索する
検索結果はオブジェクトリストで返される
name : 比較数値または正規表現文字列
ope : 数値比較の場合はopeに比較演算子を与える
opeを省略するとnameは正規表現とみなされ正規表現による文字列比較が行われる
ただしopeに"not"を与えると正規表現評価の「偽」が「真」とみなされる
ope 数値比較演算子(左辺がオブジェクト値、右辺が比較数値)
"=" ">" ">=" "<" "<=" "!="
$olist.queryobj
gdi $olist.QueryObj $obj
return true
オブジェクトリスト(olist)にオブジェクト(obj)が含まれているかを調べます
含まれていれば1を、含まれていなければ0を返します
$olistがmdbリストの場合も有効です
gdi $olist.exists と同じです
$olist.queryxy
gdi $olist.queryXY $x $y [$id]
return {obj|olist}
オブジェクトリストに含まれるオブジェクトを始点座標とIDで検索し
合致した最初のオブジェクトを返します
IDが省略された場合は始点座標で検索しオブジェクト集合をオブジェクトリストで返します
参照
gdi $canvas.QueryXY
$olist.range
gdi $olist.range [family]
return {xmin ymin xmax ymax}
オブジェクトリストを包含する最小範囲(レンジ)座標
を座標リストで返します
$olistがmdbリストの場合も有効です。
"family"をアーギュメントに与えると子供全員の範囲を返します
olistに含まれている子供は無視されます(親だけ評価される)
このオプション機能はmdbリストには無効です
$olist.redraw
gdi $olist.redraw
オブジェクトリストを再描画します
$olist.removeobj
gdi $olist.removeobj
return num
オブジェクトリストに含まれるオブジェクトを削除します
削除した個数を返します
Undoが効かない削除です
$olist.reverse
gdi $olist.reverse
オブジェクトリスト内のオブジェクトの座標順を反転します
$olist.savemapxy
gdi $olist.SaveMapXY $fname [$maptype] [-family]
return success
オブジェクトリストのオブジェクトを保存します
座標値は内部XY座標値で格納されます
fnameにはファイル名、maptypeにはマップ種別文字列を与えます
マップ種別はユーザーが自由に命名できます(32文字以内)
-familyを与えるとリンクオブジェクトを検索してすべて保存します
$olist.savemap
gdi $olist.SaveMap $fname [$maptype] [-family]
return success
オブジェクトリストのオブジェクトを保存します
座標値は経緯度で格納されます
fnameにはファイル名、maptypeにはマップ種別文字列を与えます
マップ種別はユーザーが自由に命名できます(32文字以内)
-familyを与えるとリンクオブジェクトを検索してすべて保存します
$olist.savememxy
gdi $olist.SaveMemXY $mapname [$maptype] [-family]
return webmap
オブジェクトリストのオブジェクトをメモリに保存します
マップファイルのイメージをwebmapエンコードして返します
座標値は内部XY座標値で格納されます
maptypeにはマップ種別文字列を与えます
マップ種別はユーザーが自由に命名できます(32文字以内)
-familyを与えるとリンクオブジェクトを検索してすべて保存します
$olist.savemem
gdi $olist.SaveMem $mapname [$maptype] [-family]
return base64
オブジェクトリストのオブジェクトをメモリに保存します
マップファイルのイメージをwebmapエンコードして返します
座標値は経緯度で格納されます
maptypeにはマップ種別文字列を与えます
マップ種別はユーザーが自由に命名できます(32文字以内)
-familyを与えるとリンクオブジェクトを検索してすべて保存します
$olist.savetilexy
gdi $olist.SaveTileXY $fname [$xmin $ymin $xmax $ymax] [$maptype]
return success
指定範囲内のオブジェクトを内部座標のままタイルマップファイルに保存します。
olistに含まれるオブジェクトが対象になります
fnameは保存ファイル名です
xmin ymin xmax ymax で抽出矩形範囲を指定します
省略すると範囲抽出は行われません(olistの全オブジェクト)
maptype はマップタイプです。省略可能です
保存したオブジェクト数がかえります
保存オブジェクトが無かった場合はファイルも作成されません
矩形境界のオブジェクトはBREC_CLONEレコードとともに保存されます
矩形外のオブジェクトでも内部オブジェクトとリンクしていれば保存されます
$olist.savetile
gdi $olist.SaveTile $fname $xmin $ymin $xmax $ymax [$mapname]
return num
指定範囲内のオブジェクトを経緯度座標でタイルマップファイルに保存します。
olistに含まれるオブジェクトが対象になります
fnameは保存ファイル名です
xmin ymin xmax ymax で矩形範囲を指定します
maptype はマップタイプです。省略可能です
保存したオブジェクト数がかえります
保存オブジェクトが無かった場合はファイルも作成されません
矩形境界のオブジェクトはBREC_CLONEレコードとともに保存されます
矩形外のオブジェクトでも内部オブジェクトとリンクしていれば保存されます
$olist.selectfile
gdi $olist.selectfile $filename
return num
指定したマップファイルからロードされたオブジェクトだけを残します
オブジェクト数が返ります
$olist.select
gdi $olist.select [root] [unlock]
return num
root : 親オブジェクトだけを残します
unlock : 編集可能なオブジェクトだけ残します
オブジェクト数が返ります
$olist.sort
gdi $olist.sort
オブジェクトリストをレイヤでソートします
オブジェクト数を返します
mdbオブジェクトリストにも有効です
$olist.subst
gdi $olist.subst {$obj|$olist2} ["flag"]
return num
オブジェクトobjをブジェクトリストolistから除外します
またはolist2のオブジェクトをolistから除外します
除外後のオブジェクト数が返ります
$olistがmdbリストの場合も有効です。ただしその場合には$obj,$olistもmdbオブジェクトでなければなりません
このコマンドを実行するとリストのオブジェクト数も減少しますのでgdi foreachループ処理の中で自分に含まれる
オブジェクトを除外したい場合には"flag"アーギュメントを与えて除外フラグを立てるだけにし、ループ処理後に
gdi $olist.compress
を実行してください。
"flag"アーギュメントを与えた場合の戻り値は除外フラグを立てたオブジェクトの個数です
$olist.type
gdi $olist.type
return type
オブジェクトリストのタイプを返します
"gdi"か"mdb"が返ります
$olist.unlock
gdi $olist.unlock
オブジェクトリストのロックを解除します
オブジェクトリストが削除できるようになります
$olistがmdbリストの場合も有効です。
参照:gdi $olist.lock
$olist.unique
gdi $olist.unique
オブジェクトリストから重複するオブジェクトを除去します
オブジェクト数を返します
$olist.update
gdi $olist.update [set|clear]
return success
setを与えると現在の時刻をupdateプロパティ(編集時刻)にセットします
clearを与えると編集時刻をクリアします
その時同時にmrec(修正前レンジ)もクリアされます
$olist.where
gdi $olist.where $exp
return num
オブジェクトリストにコレクションされているデータオブジェクトをスキャンし、条件に適合しないオブジェクトをリストから除外します
$olistがmdbリストの場合も有効です
適合オブジェクトの数が返ります
$expにはクエリ式を与えます
クエリ式はTclのifコマンドの条件式と同じ機能、書式です(必ず { } で挟んで下さい)。
この条件式には、オブジェクトの属性値をインデックスで指定できます。
属性インデックスは番号の前に#を付けます。
インデックス番号は変数も使えます
条件式を省略するか空文字を与えると全てを抽出する指定になります。
使用例
gdi $olist.where {#40>10.0 && #42=="ABC"}
gdi $olist.where {#$len_field>$ten && #$type_field==$abc}
条件式の評価はifコマンドを用いていますが、条件式の評価の前に、前処理として条件式
を書き替えています。それは、#が頭に付いている項をインデックス指定項とみなし、それを
属性値に置き換える、というものです。インデックスは変数置換で与えることができますが
インデックスをコマンド置換では与えられませんので注意して下さい
ダメな例(コマンド置換でインデックスを指定)
gdi $olist.where {#[getFieldIndex 区間距離] >10.0}
条件式にコマンド置換を記述できないということではありません
コマンド置換使用例
gdi $olist.where {[regexp ^K #$no_field] && #$distance_field > 10.0}
フィールドインデックスに下記の負数を与えると属性以外の項目も検索条件に含めることができます
インデックス | 比較値 |
-1 | name値 |
-2 | ID |
-3 | レイヤ名 |
-4 | 長さ |
-5 | 面積 |
-6 | 始点X座標値 |
-7 | 始点Y座標値 |
$olist.xor
gdi $olist.xor $olist1 ...
return olist
複数のオブジェクトリストに重複していないオブジェクトのみを抽出し
その結果を新しいリストにセットします
$olistがmdbリストの場合も有効です。その場合mdbリストが返ります。