【canvas】
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
【a】
gdi $canvas.axis2
gdi $canvas.axis
【b】
gdi $canvas.bl2xy
【c】
gdi $canvas.changemapname
gdi $canvas.center
gdi $canvas.closedc
gdi $canvas.close
gdi $canvas.clear
gdi $canvas.copyallsymbol
gdi $canvas.cursor
【d】
gdi $canvas.delete
gdi $canvas.dms2xyscale
gdi $canvas.dms2xy
【e】
gdi $canvas.editreference
gdi $canvas.ellipse2
gdi $canvas.ellipse
gdi $canvas.event
【f】
gdi $canvas.fitdmsxy
gdi $canvas.fitwms
gdi $canvas.fit
gdi $canvas.fullarea
【g】
gdi $canvas.gomu
【h】
gdi $canvas.hardcopy
【i】
gdi $canvas.id
gdi $canvas.inxy
【l】
gdi $canvas.layer
gdi $canvas.limitpresetscale
gdi $canvas.linearprojection
gdi $canvas.loadedmaprange
gdi $canvas.loadmapmem
gdi $canvas.loadmapvar
gdi $canvas.loadmap
gdi $canvas.loadrefmapmem
gdi $canvas.loadrefmapvar
gdi $canvas.loadrefmap
gdi $canvas.loadwebmap
gdi $canvas.logclose
gdi $canvas.logcreate
gdi $canvas.logexec
gdi $canvas.logicalscale
gdi $canvas.logicaltoreal
gdi $canvas.logicaltoscale
【m】
gdi $canvas.mapfilenames
gdi $canvas.mapid
gdi $canvas.mapprint
gdi $canvas.mappreview
gdi $canvas.maprect
gdi $canvas.maprange
gdi $canvas.maptobmp
gdi $canvas.maptodibex
gdi $canvas.maptodib
gdi $canvas.maptopng
gdi $canvas.maptoscreenrect
gdi $canvas.maptoscreen
gdi $canvas.mapunit
gdi $canvas.maxsize
【n】
gdi $canvas.name
gdi $canvas.newlist
gdi $canvas.newlayer
gdi $canvas.newstyle
gdi $canvas.newsymbol
gdi $canvas.newvlayer
gdi $canvas.nummaps
【o】
gdi $canvas.objundermouseex
gdi $canvas.objundermouse
gdi $canvas.obj
gdi $canvas.opendc
gdi $canvas.opened
gdi $canvas.outxy
【p】
gdi $canvas.pan
gdi $canvas.past
gdi $canvas.plane
gdi $canvas.presetscale
gdi $canvas.print
gdi $canvas.projection2
gdi $canvas.projection
gdi $canvas.protection
gdi $canvas.pullundo
【q】
gdi $canvas.queryactive
gdi $canvas.querychanged
gdi $canvas.queryclass
gdi $canvas.querydeleted
gdi $canvas.queryid
gdi $canvas.queryincircle
gdi $canvas.queryinrectex
gdi $canvas.queryinrect
gdi $canvas.queryinsidecircle
gdi $canvas.queryinsiderect
gdi $canvas.queryinsidelockobj
gdi $canvas.querynew
gdi $canvas.queryoverlaprectex
gdi $canvas.queryoverlaprect
gdi $canvas.querylayerex
gdi $canvas.querylayer
gdi $canvas.querynearnodeincircle
gdi $canvas.querynearnodeinrect
gdi $canvas.queryundermouseex
gdi $canvas.queryundermouse
gdi $canvas.queryunderpointlayer
gdi $canvas.queryunderpoint
gdi $canvas.queryxy
【r】
gdi $canvas.rasope
gdi $canvas.realscale
gdi $canvas.realtological
gdi $canvas.redo
gdi $canvas.redraw
gdi $canvas.removeallobjects
gdi $canvas.removelayer
gdi $canvas.removerefobjects
gdi $canvas.replacemap
【s】
gdi $canvas.s2xy
gdi $canvas.savemapareavisiblexy
gdi $canvas.savemapareavisible
gdi $canvas.savemapareaxy
gdi $canvas.savemaparea
gdi $canvas.savemapvisiblexy
gdi $canvas.savemapvisible
gdi $canvas.savemapxy
gdi $canvas.savemap
gdi $canvas.savetilexy
gdi $canvas.savetile
gdi $canvas.scale
gdi $canvas.screenrect
gdi $canvas.screentomaprect
gdi $canvas.screentomap
gdi $canvas.scrolledrect
gdi $canvas.scroll
gdi $canvas.sec2xy
gdi $canvas.selection
gdi $canvas.selrange
gdi $canvas.simple
gdi $canvas.snaparea
gdi $canvas.snap
gdi $canvas.styleproperty
gdi $canvas.symbol
【t】
gdi $canvas.transparent
gdi $canvas.tileupdate
【u】
gdi $canvas.undofinish
gdi $canvas.undostart
gdi $canvas.undo
gdi $canvas.unprotection
gdi $canvas.updateloading
gdi $canvas.update
【v】
gdi $canvas.vlayer
【w】
gdi $canvas.worldrange
【x】
gdi $canvas.xy2bl
gdi $canvas.xy2dms
gdi $canvas.xy2sec
gdi $canvas.xy2s
gdi $canvas.xylib
【z】
gdi $canvas.zorder
【layer】
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
【c】
gdi $layer.canvas
gdi $layer.copy
【d】
gdi $layer.delete
gdi $layer.display
【e】
gdi $layer.exists
【f】
gdi $layer.field
【i】
gdi $layer.import
【n】
gdi $layer.name
gdi $layer.newobject
gdi $layer.num
【p】
gdi $layer.propertyarray
gdi $layer.property
【r】
gdi $layer.remove
【s】
gdi $layer.selection
gdi $layer.symbol
【t】
gdi $layer.type
gdi $layer.tranceparent
【z】
gdi $layer.zorder
【o】
gdi $layer.objects
【vlayer】
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
【c】
gdi $vlayer.canvas
【d】
gdi $vlayer.delete
gdi $vlayer.display
【i】
gdi $vlayer.import
【n】
gdi $vlayer.name
【p】
gdi $vlayer.propertyarray
gdi $vlayer.property
【r】
gdi $vlayer.remove
【s】
gdi $vlayer.savemap
gdi $vlayer.selection
gdi $vlayer.symbol
【obj】
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
【a】
gdi $obj.align
gdi $obj.addxy
gdi $obj.addselection
gdi $obj.and
gdi $obj.angle2
gdi $obj.angle
gdi $obj.appstyle
gdi $obj.area
【b】
gdi $obj.bmpcolor
gdi $obj.brother
【c】
gdi $obj.canvas
gdi $obj.cap
gdi $obj.centering
gdi $obj.center
gdi $obj.check
gdi $obj.children
gdi $obj.clock
gdi $obj.connect
gdi $obj.copyproperty
gdi $obj.copy
gdi $obj.cross
gdi $obj.cutline
gdi $obj.cutpoint
【d】
gdi $obj.deleteflag
gdi $obj.delete
gdi $obj.dib
gdi $obj.display
gdi $obj.dms
【e】
gdi $obj.edge
gdi $obj.erase
【f】
gdi $obj.family
gdi $obj.fieldutf($index)
gdi $obj.field($index)
gdi $obj.fielducs
gdi $obj.fieldutf
gdi $obj.field
gdi $obj.filetype
gdi $obj.file
gdi $obj.fit
gdi $obj.flush
gdi $obj.free
【g】
gdi $obj.gdi
gdi $obj.getvlayer
【i】
gdi $obj.id
gdi $obj.insert
gdi $obj.inside
【l】
gdi $obj.layername
gdi $obj.layer
gdi $obj.length
gdi $obj.link
gdi $obj.logdelete
gdi $obj.lognew
gdi $obj.log
【m】
gdi $obj.maxid
gdi $obj.move
gdi $obj.mask
【n】
gdi $obj.nameucs
gdi $obj.name
gdi $obj.near
gdi $obj.num
【p】
gdi $obj.paint
gdi $obj.parents
gdi $obj.parent
gdi $obj.pixel2xy
gdi $obj.polygonclip
gdi $obj.protection
gdi $obj.pushafter
gdi $obj.pushbefore
gdi $obj.pushcreateobj
【r】
gdi $obj.rectclip
gdi $obj.rect
gdi $obj.radius
gdi $obj.range
gdi $obj.referenceid
gdi $obj.reference
gdi $obj.redraw
gdi $obj.remove
gdi $obj.reverse
gdi $obj.root
gdi $obj.rotatecopy
gdi $obj.rotate
【s】
gdi $obj.scalecopy
gdi $obj.scaling
gdi $obj.source
【t】
gdi $obj.type
【u】
gdi $obj.unlink
gdi $obj.update
【v】
gdi $obj.view
gdi $obj.vlayer
【w】
gdi $obj.width
【x】
gdi $obj.xy($i)
gdi $obj.x($i)
gdi $obj.xy2pixel
gdi $obj.xyex
gdi $obj.xy
【y】
gdi $obj.y($i)
【olist】
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
【a】
gdi $olist.and
gdi $olist.addselection
gdi $olist.append
【c】
gdi $olist.canvas
gdi $olist.clear
gdi $olist.clip
gdi $olist.cross
【d】
gdi $olist.data
【e】
gdi $olist.eraseobj
【f】
gdi $olist.flash
【p】
gdi $olist.protection
【q】
gdi $olist.queryxy
【r】
gdi $olist.removeobj
【d】
gdi $olist.deleteobj
【l】
gdi $olist.lock
【u】
gdi $olist.unlock
【d】
gdi $olist.delete
【c】
gdi $olist.compress
【i】
gdi $olist.incref
【s】
gdi $olist.sort
【u】
gdi $olist.unique
【e】
gdi $olist.exists
【f】
gdi $olist.find
【i】
gdi $olist.inobj
gdi $olist.insideobj
gdi $olist.inpolygon
gdi $olist.insidepolygon
【c】
gdi $olist.copy
【m】
gdi $olist.merge
【n】
gdi $olist.nearline
gdi $olist.nearnode
gdi $olist.node
gdi $olist.num
【o】
gdi $olist.obj
【p】
gdi $olist.pushafter
gdi $olist.pushbefore
gdi $olist.pushnew
【q】
gdi $olist.queryfield
gdi $olist.queryid
gdi $olist.querynameall
gdi $olist.querynamefirst
gdi $olist.querynameglob
gdi $olist.querynameinclude
gdi $olist.queryname
gdi $olist.queryobj
【r】
gdi $olist.range
gdi $olist.redraw
gdi $olist.reverse
【s】
gdi $olist.savemapxy
gdi $olist.savemap
gdi $olist.subst
【t】
gdi $olist.type
【x】
gdi $olist.xor
【s】
gdi $olist.savetilexy
gdi $olist.savetile
【w】
gdi $olist.where
【symbol】
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
【c】
gdi $symbol.canvas
gdi $symbol.color
【i】
gdi $symbol.import
【n】
gdi $symbol.name
【l】
gdi $symbol.layer
【n】
gdi $symbol.newobject
gdi $symbol.newlayer
【w】
gdi $symbol.width
【s】
gdi $symbol.size
【global】
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
【a】
gdi axis
gdi area
【b】
gdi bl2xy
【c】
gdi clock
gdi closeprinter
gdi clip
gdi cmpbinbase64
gdi cmpbase64
gdi cmphex
gdi createcavas
gdi createprinterdc
gdi crossex
gdi cross
【d】
gdi ddmmss2sec
gdi deleteprinterdc
gdi dib2bitmap
gdi dib2png
gdi dumpmap
【e】
gdi ellipse
【f】
gdi foreach
gdi freeprinter
【g】
gdi garea
gdi getcolorindex
gdi getindexrgb
gdi getmousepos
gdi getmousexy
【i】
gdi icon
【j】
gdi jgd2tokyo
【l】
gdi loadprinter
【o】
gdi openprinter
【p】
gdi papersizedot
gdi papersize
gdi pointisinside
gdi printerprop
【r】
gdi renamemaplayer
【s】
gdi sec2ddmmss
gdi setcolorindex
gdi setpaperlayout
gdi setpapersize
【t】
gdi tokyo2jgd
【u】
gdi uncmphex
【x】
gdi xy2bl
[戻る] gdi $canvas.axis2
|
gdi $canvas.axis2 [$xysystem]
return xysystem
キャンバスの表示用投影法を設定します
アーギュメントxysystemには座標系番号を与えます
1〜19 公共座標系
51〜56 UTM
0を与えると投影計算しません
アーギュメントを省略すると現在の設定値が返ります
測地系(回転楕円体)はgdi $canvas.ellipse2で設定します
|
[戻る] gdi $canvas.axis
|
gdi $canvas.axis [$xysystem]
return xysystem
キャンバスの投影法を設定します
アーギュメントxysystemには座標系番号を与えます
1〜19 公共座標系
51〜56 UTM
0を与えると投影計算しません
アーギュメントを省略すると現在の設定値が返ります
測地系(回転楕円体)はgdi $canvas.ellipseで設定します
|
[戻る] gdi $canvas.bl2xy
|
gdi $canvas.bl2xy $keido $ido
return {x y}
経緯度をxy座標(M単位実数)に変換します
経緯度は秒単位実数です
このコマンドを使用する前にキャンバスに投影法が設定されている必要があります
投影法の設定はgdi $canvas.projectionコマンドです
UTMの場合は,負数を避けるため東西方向に500Kmのオフセットが加算されます
ある座標系から,キャンバス座標系へ座標変換するにはgdi $canvas.inxyを使用します
|
[戻る] gdi $canvas.changemapname
|
gdi $canvas.changemapname $mapid $filename
mapidにリンクしているファイル名を変更します
このコマンドは絶対パスを設定するために用いられます
(loadWebMapコマンドでロードしたマップにはフォルダ名が付かない)
|
[戻る] gdi $canvas.center
|
gdi $canvas.center [$x $y]
return {x y}
キャンバスの表示中心座標を設定します
$x $yを省略すると現在の中心座標値が返ります
座標はマップ単位(32ビット符号付き整数)です
|
[戻る] gdi $canvas.closedc
[戻る] gdi $canvas.close
|
gdi $canvas.close
キャンバスを削除します
キャンバスのレイヤ,オブジェクトは全て削除されます
通常はキャンバスを貼ったウインドウが削除されたときに自動的に
キャンバスも削除されるので,このコマンドを使う機会はあまりありません
|
[戻る] gdi $canvas.clear
|
gdi $canvas.clear {clipbord|undo|redo|selection|mouse}
キャンバスのバッファをクリアします
クリアするバッファの種類をアーギュメントに与えます(ひとつ)
clipbord クリップボードをクリアします
undo UNDOバッファをクリアします
redo REDOバッファをクリアします
selection オブジェクトセレクションリストをクリアします
mouse 溜まっていたマウスイベントをクリアします
|
[戻る] gdi $canvas.copyallsymbol
|
gdi $canvas.copyallsymbol $canvas2
return num
キャンバスのシンボルリソースの全てを別のキャンバス(canvas2)にコピーします
コピーしたシンボルリソースの数が返ります
|
[戻る] gdi $canvas.cursor
|
gdi $canvas.cursor [$kind]
return kind
キャンバスのカーソル形状を変更します
kindにはカーソルのキーワードを与えます
kindを省略すると現在の種別が返ります
変更した場合,変更前の種別が返ります
キーワード | カーソル種別 | wait | 砂時計 | zoom | 虫眼鏡 | hand | 手(用紙指定) | arrow | 矢印 | cross | 十字 | ibeam | I形 | size | 左上右下リサイズ | sizens | 垂直リサイズ | sizewe | 水平リサイズ | sizeall | 垂直水平リサイズ | sizenesw | 右上左下リサイズ | sizenwse | sizeと同 | pan | 手(パー) | guu | 手(グー) | cut | 矢印(ラインカット) | rotateorigin | 十字(回転) | rotate | 回転 |
|
[戻る] gdi $canvas.delete
|
gdi $canvas.delete
キャンバスを削除します
アプリケーションオブジェクト(gwin++)により作成されたキャンバスなら
アプリケーションオブジェクトも削除されます
|
[戻る] gdi $canvas.dms2xyscale
|
gdi $canvas.dms2xyscale
return {xscale yscale}
キャンバスに設定されている線形変換におけるスケール値を返します
線形変換とは経緯度をxy直角座標系に投影するときx方向とy方向
それぞれのスケールを経緯度に乗ずる方式であり,正規化された地図
を扱う場合に用いられます。
X = 経度 * xscale
Y = 緯度 * yscale
x方向とy方向のスケールを持つことにより,緯度による形状の歪みを
少なくしています
ただし,上記計算によるとXY空間をmm精度にした場合32ビット整数では
日本全国を扱えないため,経緯度及びXY座標にそれぞれオフセットを加えて
内部に格納しています
従って内部座標はXY空間ですが絶対位置ではありません
スケールを設定するのはgdi $canvas.fitdmsxyコマンドです
|
[戻る] gdi $canvas.dms2xy
|
gdi $canvas.dms2xy $ws $hs
return {x y}
経緯度をXY座標に変換します
経緯度はgdi $canvas.fitdmsxyコマンドにて登録された値を乗じて整数化
した秒で与えます
通常は秒を1000倍か10000倍して求めた整数です。
|
[戻る] gdi $canvas.editreference
[戻る] gdi $canvas.ellipse2
|
gdi $canvas.ellipse2 [$ellipse]
return ellipse
キャンバスの表示用測地系を設定します
アーギュメントellipseには楕円体名を与えます
BESSEL WGS84 GRS80 GRS83 CLARKE IAU65 GRS67
空文字,{},- のいずれかを与えると投影計算しません
現在の設定値が返ります
投影法はgdi $canvas.axis2で与えます
両方同時に与えるにはgdi $canvas.projection2を用います
|
[戻る] gdi $canvas.ellipse
|
gdi $canvas.ellipse [$ellipse]
return ellipse
キャンバスの測地系を設定します
アーギュメントellipseには楕円体名を与えます
BESSEL WGS84 GRS80 GRS83 CLARKE IAU65 GRS67
空文字,{},- のいずれかを与えると投影計算しません
現在の設定値が返ります
投影法はgdi $canvas.axisで与えます
両方同時に与えるにはgdi $canvas.projectionを用います
|
[戻る] gdi $canvas.event
|
gdi $canvas.event $eventname [$procname]
キャンバスにイベントプロシージャを登録します
$eventnameはイベント種類を表すキーワードを与えます
キーワードに大文字小文字の区別はありません
キーワードに続けてイベントプロシージャ名を与えます
イベントプロシージャはそれそれアーギュメントが異なります
省略すると現在のプロシージャ名が返ります
キーワード | イベントプロシージャアーギュメント | ERR | hcanvas message | SIZE | hcanvas mode w h | PREREPAINT | hcanvas left top right bottom | REPAINT | hcanvas left top right bottom | MOVE | hcanvas x y key | LDOWN | hcanvas x y key | LDCLICK | hcanvas x y | LUP | hcanvas x y key | RDOWN | hcanvas x y key | RDCLICK | hcanvas x y | RUP | hcanvas x y key | MDOWN | hcanvas x y key | MDCLICK | hcanvas x y | MUP | hcanvas x y key | KEYDOWN | hcnavas keyname | WHEEL | hcanvas direction |
アーギュメント
アーギュメント | 値 | hcanvas | キャンバスウインドウハンドル | x y | マウス座標(マップ座標) | key | 0:キーオープン 1:CTRL 2:SHIFT | keyname | キー名 | | 特殊キーと一般キーが同時に押されている場合は | | {特殊キー名 一般キー名}のリストが返る | direction | 1:前に回転 -1:手前に回転 |
旧キーワードのLCLICKはLDOWNと同じです
同様にRCLICKはRDOWN,MCLICKはMDOWNと同じです
キーワードに大文字,小文字の区別はありません
|
[戻る] gdi $canvas.fitdmsxy
[戻る] gdi $canvas.fitwms
|
gdi $canvas.fitwms $w $h $xmin $ymin $xmax $ymax
x,y方向それぞれのスケールを設定します(screen_len/map_len)
$w,$hはスクリーンのサイズです
$xmin $ymin $xmax $ymaxはスクリーン全体に表示させるマップ範囲です。
WMSの画像生成に使用されます
解除するには gdi $canvas.fitを実行します
|
[戻る] gdi $canvas.fit
|
gdi $canvas.fit $app
gdi $canvas.fit [$app] $w $h $xmin $ymin $xmax $ymax
キャンバスのスクリーン上の範囲と,対応するマップ座標を与えることにより
表示スケールを設定します
w と h はスクリーン上でのキャンバスのサイズです(ピクセル単位)
xmin ymin xmax ymax は対応するマップの矩形範囲です
x方向とy方向のスケールは同値が用いられます。したがって
例えば縦方向に比して横方向のみを延ばした表示等はできません。
|
[戻る] gdi $canvas.fullarea
|
gdi $canvas.fullarea
マップ全体がスクリーンに表示されるように表示中心とスケールを設定します
gdi $canvas.redrawを実行すると表示されます
リファレンスオブジェクトも含まれた「全体」です
|
[戻る] gdi $canvas.gomu
|
gdi $canvas.gomu $switch [...]
ラバーバンド,十字カーソル,グリッドコマンド
gdi $canvas.gomu id
return id
使用していないラバーバンドIDが返ります
IDは0から19の範囲です。
-1が返れば全て使用済みです
ラバーバンドオブジェクトは同時に20個作成できます
全てのラバーバンドコマンドにはラバーバンドオブジェクトを特定するための
IDを与えます。IDを省略すると0と見なされます
IDは0から19の範囲です。
gdi $canvas.gomu new $x $y [$id]
ライン型ラバーバンドオブジェクト作成(頂点追加)
$x $yは始点(追加頂点)座標
gdi $canvas.gomu newrect $x1 $y1 $x2 $y2 [$id]
矩形型ラバーバンドオブジェクト作成・修正
左下,右上座標を与えます
既に存在していれば変更になります
gdi $canvas.gomu newcircle $x $y $r [$id]
円型ラバーバンドオブジェクト作成・修正
中心座標と半径を与えます
既に存在していれば変更になります
gdi $canvas.gomu newpoly $x $y [$id]
ポリゴン型ラバーバンドオブジェクト作成(頂点追加)
$x $yは始点(追加頂点)座標
gdi $canvas.gomu newobj $layer $x $y [$id]
return obj
アニメートオブジェクト新規作成
$x $yはオブジェクトの始点座標です
返されたオブジェクトのプロパティは{gdi $obj.*}コマンドで与えます
gdi $canvas.gomu animateobj $obj $x $y [$id]
return obj
既存オブジェクト(obj)をコピーしてアニメートオブジェクトを作成します
$x $yはコピーオブジェクトの始点座標です(即ち移動されて作成されます)
返されたオブジェクトのプロパティは{gdi $obj.*}コマンドで変更・参照できます
gdi $canvas.gomu mouse $x $y [$id]
現在の終点とマウスポインタの間にラバーバンドを表示します
円の場合にはマウスポインタ上に円周が乗るように半径が変更されます
矩形の場合にはマウスポインタ位置に隅が乗るように矩形サイズが変化します
アニメートオブジェクトには機能しません
gdi $canvas.gomu movestart $x $y [$id]
ラバーバンドオブジェクトを移動モードにします
$x $yは移動原点です
全てのラバーバンドオブジェクトに有効です
gdi $canvas.gomu moveend [$id]
ラバーバンドオブジェクトを移動モードを終了します
全てのラバーバンドオブジェクトに有効です
gdi $canvas.gomu ismove [$id]
return movemode
ラバーバンドオブジェクトを移動モード(1か0)を返します
1が返れば移動モードです
全てのラバーバンドオブジェクトに有効です
gdi $canvas.gomu move $x $y [$id]
ラバーバンドオブジェクトを移動します
ラバーバンドオブジェクトを移動モードに設定するときに指定した原点座標が
$x $yに重なるように移動されます
全てのラバーバンドオブジェクトに有効です
gdi $canvas.gomu modify $index $x $y [$id]
ラバーバンドオブジェクトの頂点座標を変更します
$indexは頂点番号です(0から)
$x $yは新しい座標値です
円型のラバーバンドオブジェクトの場合,index=0は中心座標変更になり,
index=1は半径($x)の変更になります。その場合$yはダミー値を与えます
矩形型ラバーバンドオブジェクトの場合,indexは0か1です
その他のラバーバンドオブジェクトの場合にはindexが頂点数を超えないように
注意して下さい(index<頂点数)
このコマンドを実行すると自動的に移動モードはOFFされます
gdi $canvas.gomu modifyB $index $x $y [$id]
ラバーバンドオブジェクトの矩形形状を維持して座標を変更します
$indexは頂点番号です(0から)
$x $yは新しい座標値です
頂点数が4以外のラバーバンドオブジェクトに対しては無効です
従って円型,矩形型には絶対に無効です。
このコマンドを実行すると自動的に移動モードはOFFされます
gdi $canvas.gomu modifyR $index $x $y [$id]
ラバーバンドオブジェクトの長方形形状を維持して座標を変更します
(全ての内角が90度であるように維持して変更)
$indexは頂点番号です(0から)
$x $yは新しい座標値です
頂点数が4以外のラバーバンドオブジェクトに対しては無効です
従って円型,矩形型には絶対に無効です。
頂点番号により下記の修正になります
頂点0 移動
頂点1 原点を頂点0にして回転のみ
頂点2 頂点0-頂点1方向のスケーリング(頂点0座標固定)
頂点3 頂点1-頂点0方向のスケーリング(頂点1座標固定)
このコマンドを実行すると自動的に移動モードはOFFされます
gdi $canvas.gomu modifyT $index $x $y [$id]
ラバーバンドオブジェクトの長方形形状を維持して座標を変更します
(全ての内角が90度であるように維持して変更)
$indexは頂点番号です(0から)
$x $yは新しい座標値です
頂点数が4以外のラバーバンドオブジェクトに対しては無効です
従って円型,矩形型には絶対に無効です。
頂点番号により下記の修正になります
頂点0 移動
頂点1 原点を頂点0にして回転のみ
頂点2 XY方向スケーリング(頂点0座標固定)
頂点3 XY方向スケーリング(頂点1座標固定)
このコマンドを実行すると自動的に移動モードはOFFされます
gdi $canvas.gomu length [$id]
return length
ラバーバンドオブジェクトの長さを返します
全てのラバーバンドオブジェクトに有効です
gdi $canvas.gomu area [$no]
return area
ラバーバンドオブジェクトの面積を返します
全てのラバーバンドオブジェクトに有効です
gdi $canvas.gomu obj [$id]
ラバーバンドオブジェクトがアニメートオブジェクトである場合にオブジェクトハンドルを返します
gdi $canvas.gomu undo [$id]
最後に入力されたラバーバンドオブジェクトの頂点をひとつ削除します
アニメートオブジェクトには無効です
矩形型,円型ラバーバンドオブジェクトの場合には削除になります
gdi $canvas.gomu delete [$id]
ラバーバンドオブジェクトを削除します
ただしラバーバンドオブジェクトがロックされている場合には削除されません
その場合にはアンロックしてからこのコマンドを実行しなければなりません
ロックの設定/解除はlock/unlockコマンドで行います
gdi $canvas.gomu erase [$id]
ラバーバンドオブジェクトを非表示にします
ラバーバンドオブジェクトの表示は自動的に行われますが,ラバーバンドオブジェクト
から座標を取得し,実際のオブジェクトを重ね書きする場合などはラバーバンド
を先に削除するか非表示にしないとラバーバンドオブジェクトの残像が残る場合
があります
gdi $canvas.gomu show
ラバーバンドオブジェクトを表示します
非表示にしたラバーバンドオブジェクトを再表示する場合に使用します
gdi $canvas.gomu lock [$id]
ラバーバンドオブジェクトをロックします
ロックされているラバーバンドオブジェクトは削除できません
gdi $canvas.gomu unlock [$id]
ラバーバンドオブジェクトをアンロックします
gdi $canvas.gomu num [$id]
return num
ラバーバンドオブジェクトの頂点数を返します
円型,矩形型の場合は必ず2が返ります
gdi $canvas.gomu geometry [$id]
return {x1 y1 ... xn yn}
ラバーバンドオブジェクトの頂点座標リストを返します
昔のコマンドはgdi gomu coo $canvas [$id]です
gdi $canvas.gomu point $index [$id]
return {x y}
ラバーバンドオブジェクトのindex番目の頂点座標を返します
indexは0からです
十字カーソル
gdi $canvas.gomu cursor {on|off}
十字カーソル(キャンバス全体の十字カーソル)の表示をON/OFFします
gdi $canvas.gomu cmove $x $y
十字カーソルの位置を移動します
通常はマウスの移動イベントプロシージャから実行します
gdi $canvas.gomu cerase
十字カーソルを非表示にします
通常は使われません
gdi $canvas.gomu credraw
十字カーソルを再表示にします
通常は使われません
グリッド
グリッドの表示のみを管理します
座標値をグリッド単位に丸める処理を行うものではありません
gdi $canvas.gomu grid $pitch $ang $x0 $y0
グリッド間隔(pitch),グリッド角度(ang),グリッド原点(x,y)を設定し
その後グリッド表示モードをONにして,直ぐに表示します
ただし表示グリッド間隔が5ピクセル未満なら表示されません
(真っ黒になってしまうので)
gdi $canvas.gomu gridxy $x $y
グリッドの原点のみ変更します
その後グリッド表示モードをONにして,直ぐに表示します
gdi $canvas.gomu gridoff
グリッド表示モードをOFFにして直ぐに非表示にします
gdi $canvas.gomu gridon
グリッド表示モードをONにして,直ぐに表示します
gdi $canvas.gomu gridredraw
グリッドが表示ONの場合にのみ再表示します
何らかの原因で表示が乱れた場合に実行します
通常は使いません
|
[戻る] gdi $canvas.hardcopy
[戻る] gdi $canvas.id
|
gdi $canvas.id
return id
これから作成されるオブジェクトに付与されるIDを取得します
|
[戻る] gdi $canvas.inxy
|
gdi $canvas.inxy $X $Y
return {x y}
表示用座標系座標(M単位)をマップ内部座標系に変換して返します
(gdi $canvas.projection2で設定されている座標系からの変換)
$X,$YはM単位の表示座標です
|
[戻る] gdi $canvas.layer
|
gdi $canvas.layer [$layername]
return {hlayer | hlayerlist}
レイヤ名(layername)を与えるとレイヤハンドルを返します
省略すると,全てのレイヤハンドルリストを表示順で返します
|
[戻る] gdi $canvas.limitpresetscale
|
gdi $canvas.LimitPresetScale $index
小縮尺の限界をセットします
指定した論理スケールに達するとズームアウト禁止になります
|
[戻る] gdi $canvas.linearprojection
|
gdi $canvas.LinearProjection [$ido $res]
return secunit
線形投影パラメータを設定します
idoには中心緯度を秒単位実数で与えます
resには内部で秒を整数で持つための整数化乗数を与えます
整数化乗数が返ります
アーギュメントを省略することもできます
0以外の値が返れば線形投影パラメータが設定済みであることが分かります
|
[戻る] gdi $canvas.loadedmaprange
|
gdi $canvas.LoadedMapRange
return {xmin ymin xmax ymax}
直前にロードしたマップの座標範囲を返します
|
[戻る] gdi $canvas.loadmapmem
|
gdi $canvas.LoadMapMem $mem $size
メモリにロードされたマップファイルレコード(バイナリィmapレコード)からロードします
圧縮されたマップファイルをメモリ上で解凍してからロードする場合に使用します
例えばWebサーバーからダウンロードされたマップデータなどです
memにはメモリアドレス,sizeにはメモリサイズをセットします
このコマンドでロードされたオブジェクトはアクティブマップオブジェクトになります
リファレンスマップオブジェクトとしてロードしたい場合にはLoadRefMapMemを用います
|
[戻る] gdi $canvas.loadmapvar
|
gdi $canvas.LoadMapVar $text $size
Tcl変数にロードされたマップファイルデータ(バイナリィmapレコード)からロードします
圧縮されたマップファイルをメモリ上で解凍してからロードする場合に使用します
例えばWebサーバーからダウンロードされたマップデータなどです
textにマップデータ,sizeにはデータサイズ(==[string length $text])をセットします
このコマンドでロードされたオブジェクトはアクティブマップオブジェクトになります
リファレンスマップオブジェクトとしてロードしたい場合にはLoadRefMapVarを用います
|
[戻る] gdi $canvas.loadmap
|
gdi $canvas.LoadMap $filename
マップファイルを編集目的でロードします
ロードされたオブジェクトはアクティブオブジェクトになります
読み込みモードで開くにはgdi $canvas.loadrefmapを用います
マップファイル内のレイヤがキャンバスに登録されていない場合には,
MAP::マップタイプ->GAU $layername
が実行されます。例えばマップタイプが"DM"で,未登録レイヤ名が"街区"なら
MAP::DM->GAU 街区
が実行され,その戻り値のレイヤ名でオブジェクトロードが行われます
これは「レイヤ読み替え」機能です。もし戻り値が空文字の場合は該当する
レイヤのオブジェクトはロードされません(読み捨て機能)
更に,プロシージャがダイナミックにレイヤを作成し,そのレイヤ名を返す方法を採用する
のが「ダイナミックレイヤ機能」です。
マップタイプはマップファイルを保存するときに与えた文字列です
このマップタイプが未定義ならば(格納されていなければ)
MAP::Unknown->GAU
が実行されます。
MAPクラスが見つからない場合,tclexgau.ocxに"unknownlayer"イベントが
通知されます。引数はマップタイプとレイヤ名です
|
[戻る] gdi $canvas.loadrefmapmem
|
gdi $canvas.LoadRefMapMem $filename $mem $size
メモリにロードされたマップファイルレコード(バイナリィmapレコード)からロードします
圧縮されたマップファイルをメモリ上で解凍してからロードする場合に使用します
例えばWebサーバーからダウンロードされたマップデータなどです
memにはメモリアドレス,sizeにはメモリサイズをセットします
filenameにはマップデータを識別するための文字列をセットします
通常はマップファイルURLです。
このコマンドでロードされたオブジェクトはリファレンスマップオブジェクトになります
アクティブマップオブジェクトとしてロードしたい場合にはLoadMapMemを用います
|
[戻る] gdi $canvas.loadrefmapvar
|
gdi $canvas.LoadRefMapVar $filename $text $size
Tcl変数にセットされたマップファイルレコード(バイナリィmapレコード)からロードします
圧縮されたマップファイルをメモリ上で解凍してからロードする場合に使用します
例えばWebサーバーからダウンロードされたマップデータなどです
textにデータ,sizeにデータサイズ(==[string length $text])をセットします
filenameにはマップデータを識別するための文字列をセットします
通常はマップファイルURLです。
このコマンドでロードされたオブジェクトはリファレンスマップオブジェクトになります
アクティブマップオブジェクトとしてロードしたい場合にはLoadMapVarを用います
|
[戻る] gdi $canvas.loadrefmap
|
gdi $canvas.LoadRefMap $filename
return success
マップファイルを参照用としてロードします
成功したら1,失敗したら0が返ります
すでにロード済みの場合にも1が返ります
ロードされたオブジェクトはリファレンスオブジェクトになり,修正できません
編集するためにロードしたい場合にはgdi $canvas.loadmapを用います
|
[戻る] gdi $canvas.loadwebmap
|
gdi $canvas.LoadWebMap $hex $header
return mapname
HTMLファイルのコメントタグに埋め込まれたマップデータをリファレンスロードします
hexには"<!--"で始まり-->で終わるコメント文字列全体を与えます
headerには"<!--"も含めたヘッダ文字列を与えます
成功したらマップ名が,失敗したら""が返ります
すでにロード済みの場合にも""が返ります(ロードはされません)
ロードされたオブジェクトはリファレンスオブジェクトになり,修正できません
$hexは"$header $comment $HEX"の構造になっていなけれ
ばなりません。$commentは無視されます。
$HEXは@@から始まるHEXコード文字列です。
$hexデータは
set hex [gdi CmpHex $infile $outfile $before $after]
で作成されたものです
作成例
set hex [gdi cmphex test.map test.htm {<!--MYMAP test.map} {-->}]
ロード例
gdi $canvas.LoadWebMap $hex {<!--MYMAP}
HEXコードが複数あれば複数のマップがロードされます
|
[戻る] gdi $canvas.logclose
|
gdi $canvas.LogClose
ログファイルを閉じます(ロギング終了)
クローズしたらファイルも削除しなければなりません
マップファイルをsaveしたら実行すべきです
ログファイルを作成するコマンドは
gdi $canvas.logcreate
です
|
[戻る] gdi $canvas.logcreate
[戻る] gdi $canvas.logexec
[戻る] gdi $canvas.logicalscale
|
gdi $canvas.LogicalScale [$index]
現在の論理スケールを返します
indexを与えると,表示スケールをindex番目の論理スケールに変更します
つまり表示拡大・縮小操作になります
ただし,正しく表示させる為には,内部マップ単位とスクリーンの実幅が
あらかじめ設定されている必要があります。これらは
gdi $canvas.mapunit
で設定します
論理スケールとは地図情報レベルを表す整数値であり小さい程情報量が多い
(大縮尺)事を表します。
論理スケールは0から17までの18段階があります
論理スケールはアプリケーション側で自由に設定します
そして論理スケールにはレイヤの表示,非表示を設定することができます
論理スケールを設定するのはgdi $canvas.presetscaleコマンドです
|
[戻る] gdi $canvas.logicaltoreal
|
gdi $canvas.LogicalToReal $index
論理スケール番号に割付られている実縮尺を返します
実縮尺とは地図縮尺そのものです
実数で返されます。即ち1/500なら0.002が返ります
論理スケールに付いてはgdi $canvas.logicalscale解説を参照して下さい
|
[戻る] gdi $canvas.logicaltoscale
|
gdi $canvas.LogicalToScale $index
論理スケール番号に対応する表示スケールを返します
表示スケールとは内部マップ座標をスクリーンピクセル座標に投影する際の乗数です
実縮尺とは異なることに注意して下さい
論理スケールに付いてはgdi $canvas.logicalscale解説を参照して下さい
|
[戻る] gdi $canvas.mapfilenames
|
gdi $canvas.MapfileNames [type] [id] [maxid]
return マップファイル名リスト
キャンバスに開かれているリファレンスマップファイル名称をTclリストで返します
キーワード"type"を与えるとマップ名称とマップタイプを順に並べたリストを返します
マップタイプが設定されていない場合にはタイプは空要素として返ります
例:"A.map {} B.map DM C.map SIMA"
マップファイル名はオープンされるときに与えられたパスそのものです
返されるマップ名にはアクティブマップは含まれません。リファレンスマップのみです。
キーワード"id"を与えると更にリファレンス番号も含まれたリストが返されます
リファレンス番号とはロードしたマップファイルの識別用IDです
キーワード"maxid"を与えると更に最大オブジェクトIDも含まれたリストが返されます
最大オブジェクトIDとはロードしたマップファイルに含まれているオブジェクトの最大IDです
|
[戻る] gdi $canvas.mapid
|
gdi $canvas.mapid $filename
return referenceid
|
[戻る] gdi $canvas.mapprint
[戻る] gdi $canvas.mappreview
|
gdi $canvas.MapPreview $prnhdc [$title]
return dib
仕様はgdi $canvas.mapprintと同じですが,印刷するのではなく
印刷イメージを作成してそのDIBハンドルを返します
返されたDIBハンドルをビットマップオブジェクトに与えれば表示できます
ただし,印刷範囲(用紙のピクセル範囲)が大きいと成功しません
印刷プレビューにはviewオブジェクトを使用してください
|
[戻る] gdi $canvas.maprect
|
gdi $canvas.MapRect [$xmin $ymin $xmax $ymax]
return {xmin ymin xmax ymax}
現在スクリーンに表示されている範囲をマップ単位で返します
範囲を与えると表示範囲を変更します
つまり拡大,縮小表示操作になります
似たようなコマンドにgdi $canvas.maprangeがありますので,混同しない
ように注意してください
このコマンドで表示範囲を変更した場合の戻り値は新しい表示範囲であるわけ
ですが,スクリーンの縦横比とマップ範囲の縦横比が異なる場合には範囲が調整
されますので,同じ範囲が戻るとは限りません。
現在の表示範囲を求めるだけなら他のコマンドでも可能です
foreach {left top right bottom} [gui get #$canvas client] {}
foreach {xmin ymin xmax ymax} [gdi $canvas.screentomaprect $left $top $right $bottom] {}
上記プログラムでは,キャンバスのピクセル範囲を求め,それをマップ単位に変換して
います(同じ処理が内部で行われています)
|
[戻る] gdi $canvas.maprange
|
gdi $canvas.MapRange [$xmin $ymin $xmax $ymax]
return {xmin ymin xmax ymax}
すべてのアクティブオブジェクトマップを包含する最小矩形としての
// マップ領域全体を返します
範囲を与えると強制的に書き換えることができます
例えばgdi $canvas.mapprintコマンドで印刷する場合などです
マップ範囲を強制的に変更した場合は必ず元に戻してください
マップ領域を変更した場合,戻り値は空です
似たようなコマンドにgdi $canvas.maprectがありますので,混同しない
ように注意してください
リファレンスオブジェクトをも含めたマップ全体領域を求めるコマンドは
gdi $canvas.worldrange
です
マップ領域はアクティブオブジェクトがロードされたり作成された時に更新されます
しかし,オブジェクトが削除されたときには更新されません
つまり拡がる方向にしか更新されません
全てのオブジェクトが削除されたときにはリセットされます
リセットされた状態で範囲を取得すると
xmin > xmax
ymin > ymax
の値が返るので無効値であることがわかります
|
[戻る] gdi $canvas.maptobmp
|
gdi $canvas.MapToBmp $fname $xmin $ymin $xmax $ymax [$cbits]
return success
指定範囲をラスタイメージとして作成し,ビットマップファイル(.bmp)に保存します
成功すると1,失敗すると0が返ります
fnameにはファイル名をフルパスで与えます(拡張子は.bmpにして下さい)
cbitsはカラービット数を与えます。例えば2値画像の場合には1,16色画像
の場合には4,256色画像の場合には8を与えます
省略すると8指定と見なされます
作成されるラスタイメージのサイズと解像度は,このコマンドを実行する前に
キャンバスサイズを変更しgdi $canvas.fitコマンドを実行します。
表示状態のままで実行するとサイズ,解像度は現在のキャンバスに従います
|
[戻る] gdi $canvas.maptodibex
|
gdi $canvas.MapToDibEx $xmin $ymin $xmax $ymax $scale $dpm [$color]
return dib
指定範囲を指定解像度,指定カラー数のラスタイメージとして作成し,そのアドレスが格納
されたDIBハンドルを返します
xmin〜ymax | マップ範囲を与えます | scale | 実縮尺を与えます。例えば1/500なら0.002を与えます | dpm | 1mm当たりのビット数を与えます | color | カラービット数を与えます。例えば白黒なら1,フルカラーなら24です。 | | colorを省略するとカラービット数はディスプレイの設定に従います | DIBハンドルは,ビットマップファイルを作成したり,画像変換したり,ビットマップ
オブジェクトの表示画像として用いることができます
DIBハンドルはビットマップオブジェクトにセットするケースを除きアプリケーション側で使用後に削除
して下さい。削除コマンドは{gdi FreeDib $dib}です。
|
[戻る] gdi $canvas.maptodib
|
gdi $canvas.MapToDib $xmin $ymin $xmax $ymax [$cbits]
return dib
指定範囲をラスタイメージとして作成し,そのアドレスが格納されたDIBハンドル
を返します
cbitsはカラービット数を与えます。例えば2値画像の場合には1,16色画像
の場合には4,256色画像の場合には8を与えます
省略すると8指定と見なされます
作成されるラスタイメージの解像度はスクリーンの解像度です
DIBハンドルは,ビットマップファイルを作成したり,画像変換したり,ビットマップ
オブジェクトの表示画像として用いることができます
DIBハンドルはビットマップオブジェクトにセットするケースを除きアプリケーション側で使用後に削除
して下さい。削除コマンドは{gdi FreeDib $dib}です。
|
[戻る] gdi $canvas.maptopng
|
gdi $canvas.MapToPng $fname $xmin $ymin $xmax $ymax
return success
指定範囲をラスタイメージとして作成し,PNGファイル(.png)に保存します
成功すると1,失敗すると0が返ります
fnameにはファイル名をフルパスで与えます(拡張子は.pngにして下さい)
作成されるラスタイメージのカラー数は256色固定です
解像度はスクリーンの解像度です
このコマンドはマップ画像を配信するWebサーバーを構築するときに活用されます
|
[戻る] gdi $canvas.maptoscreenrect
|
gdi $canvas.MapToScreenRect $xmin $ymin $xmax $ymax
return {left top right bottom}
マップ座標範囲を,現在の表示スケールと中心に従ってスクリーン座標範囲に
変換します
逆の処理を行うのがgdi $canvas.screentomaprectです
|
[戻る] gdi $canvas.maptoscreen
|
gdi $canvas.MapToScreen $x $y
return {px py}
マップ座標を,現在の表示スケールと中心に従ってスクリーン座標に
変換します
逆の処理を行うのがgdi $canvas.screentomapです
|
[戻る] gdi $canvas.mapunit
|
gdi $canvas.MapUnit
現在のマップ単位が何mmかを返します
例えばcm単位なら10を返します
デフォルトは1に設定されています
gdi $canvas.mapunit $mm [$w]
マップの単位が何mmに相当するかを与えます
例えばcm単位なら10を与えます
デフォルトは1に設定されています
省略可能なw値にはスクリーン幅(mm)を与えます
論理スケールを使用する場合にはスクリーン幅をキャンバスに設定する必要があります
|
[戻る] gdi $canvas.maxsize
|
gdi $canvas.MaxSize $maxW $maxH $right_space $bottom_space
キャンバスの最大幅と高さ,及び右余白と下余白を設定します
このコマンドで設定されたサイズ以上にはリサイズができないようになります
更に右余白と下余白分だけ小さくされます
全てピクセル単位で与えます
|
[戻る] gdi $canvas.name
|
gdi $canvas.name [$name]
return name
キャンバスに名前をセットします
省略すると現在の名前が返ります
セットされていなければ空文字が返ります
|
[戻る] gdi $canvas.newlist
|
gdi $canvas.newlist
return olist
空のオブジェクトリストを作成します
作成されたオブジェクトリストハンドルが返ります
オブジェクトリストには図形オブジェクトを要素として挿入できます
例えば条件検索に該当するオブジェクトを記憶したい場合などには
オブジェクトリストに格納し,後にそれらを順に取り出して処理します
作成したオブジェクトリストは使用後に削除しなければなりません
オブジェクトリストへのアクセスには[gdi $olist.*]コマンドが用意されています
|
[戻る] gdi $canvas.newlayer
|
gdi $canvas.newlayer $layername $gtype
return layer
キャンバスに新しいレイヤを作成し例やハンドルを返します
layernameには作成するレイヤ名称を与えます(255文字以内)
gtypeには図形タイプの名称,または番号を与えます
図形タイプ | 名称 | 番号 | | | | 道路 | road | 1 | 円 | circle | 2 | ラインストリング | string | 3 | ポリゴン | polygon | 4 | テキスト | text | 5 | シンボル | symbol | 6 | シンボルライン | symbolline | 7 | シンボルポリゴン | symbolpolygon | 8 | ビットマップ | bmp | 10 | エリアテキスト | areatext | 11 | 円弧 | arc | 12 | 扇形 | fan | 13 | 矩形 | rectangle | 15 | 長方形 | square | 16 | ビュー | view | 17 | アイコン | aicon | 18 |
|
[戻る] gdi $canvas.newstyle
|
gdi $canvas.newstyle $name $kind [...]
第1アーギュメントにスタイル名称($name)を与えます
この名称がシンボルラインレイヤのappstyleプロパティになります
第2アーギュメント($kind)にsymbolかdashかsolidを与えます
symbol は「シンボル配置型スタイル」
dash は「破線型スタイル」
solid は「実線型スタイル」
第3アーギュメント以降にそれぞれのパラメータをキーワード,値のリストで与えます
【symbolスタイルアーギュメント】
キーワード | 値 | symbol | $Ss $Sm $Se | span | $Ls $Lm $Le | limit | $limit | adjust | on | off |
symbol | シンボルライン,シンボルポリゴンに適用するスタイルを作成します | | Ss,Seは始終点シンボルハンドル,Smは中間シンボルハンドルです | | これらのシンボルハンドルはgdi $canvas.symbolコマンドで作成します(ダイナミックサイズのみ) | spanは | シンボル配置間隔です | | シンボルハンドルに0を与えるとシンボルは配置されませんがスパンは有効です。 | | スパンに負数を与えると無効であり対応シンボルも配置されません。 | | Ss Sm Sm Se | | ---●-------■------■-----▲--- | | Ls Lm Lm Lm Le | | 各スパンは係数aが求められ調節されます | | Len = a * ( Ls + Lm * n + Le) | | ただし n>=0 | | Len=全長 | limit | スタイル描画する場合のライン最小長(mm)です | | 最小長未満のときlimitが正数なら中点にSsシンボルを配置します | adjust | シンボルが頂点上に置かれないように調整するか否かを指定します |
【破線スタイルアーギュメント】
キーワード | 値 | width | $w | color | $red $green $blue | join | round | sharp | start | on | off | span | $Ls $L0 $L1 $Le | limit | $limit |
width | 線幅です。mm実寸で与えます。 | color | 線色です。RGB値を与えます。 | | ただしレイヤにpaint==onが設定されている場合,レイヤのRGB値が優先します。 | join | 頂点部で折れる部分の描画方法です。 | | roundを与えると丸く整形されます。 | | sharpを与える尖って描画されます。 | start | 始点側の実線/隠戦の指定です | | onのとき実線から始まり実線で終わる指定です | | offのとき隠線から始まり隠線で終わる指定です | span | 実線,隠線の長さです | | ■■□□□■■■□□□■■■□□□■■ | | Ls L0 L1 L0 L1 L0 Le | | | | 各スパンは係数aが求められ調節されます | | Len = a * ( Ls + L0 * n + L1 * (n-1) + Le) | | ただし n>=1 | | Len=全長 | limit | スタイル描画する場合のライン最小長(mm)です | | ラインが最小長未満のときlimitが負数なら隠線,正数なら実線で描画されます |
【実線スタイルアーギュメント】
キーワード | 値 | width | $w | color | $red $green $blue | join | round | sharp | start | on | off | span | $Ls $Le | limit | $limit |
width | 線幅です。mm実寸で与えます。 | color | 線色です。RGB値を与えます。 | | ただしレイヤにpaint==onが設定されている場合,レイヤのRGB値が優先します。 | join | 頂点部で折れる部分の描画方法です。 | | roundを与えると丸く整形されます。 | | sharpを与える尖って描画されます。 | start | 始点側の実線/隠戦の指定です | | onのとき実線から始まり実線で終わる指定です | | offのとき隠線から始まり隠線で終わる指定です | span | 始終点端の隠線の長さです | | □□□■■■■■■□□□ | | Ls Le | limit | スタイル描画する場合のライン最小長(mm)です | | ラインが最小長未満のときlimitが負数なら隠線,正数なら実線で描画されます |
|
[戻る] gdi $canvas.newsymbol
|
gdi $canvas.newsymbol $name
return symbol
キャンバスにシンボルリソースオブジェクトを作成します
シンボルリソースオブジェクトハンドルが返ります
nameにはシンボルリソース名を与えます
この名称はレイヤプロパティの"symbol"プロパティで使用されます
返されたシンボルリソースオブジェクトにレイヤを作成し,更にそのレイヤに図形オブジェクト
を作成することによりシンボルリソース作成が完了します
「シンボルリソース」と「シンボル」は違います
図形タイプが「シンボル」のレイヤに作成されたオブジェクトをシンボルオブジェクトと呼び,
シンボルオブジェクトの形状を提供するのが「シンボルリソース」オブジェクトです。
実際には,シンボルレイヤはシンボルリソースのコピーを保持し,シンボルオブジェクトの位置に
それらを描画するという方式になっています。
|
[戻る] gdi $canvas.newvlayer
|
gdi $canvas.newVlayer [$name]
return vlayer
キャンバスに揮発レイヤを作成します
揮発レイヤハンドルが返されます
0が返れば失敗です
揮発レイヤには名称を与えることも省略することもできます
揮発レイヤは個々の図形オブジェクトに与える事により,本来の表現を変更する
為に利用されます。例えば色分けなどです。
図形オブジェクトの表現形式は,そのオブジェクトが属するレイヤが持っています
これを一時的に変更するためのレイヤなので「揮発レイヤ」と呼びます
gdi $obj.vlayerコマンド解説を参照して下さい
揮発レイヤの下にオブジェクトを作成することはできません
揮発レイヤはキャンバスが削除されるときに自動的に削除されます
[gdi $vlayer.savemap 1]を実行した揮発レイヤがオブジェクトにセットされたまま
マップに保存されると揮発レイヤ名がオブジェクトのプロパティとして保存され,
ロード時に自動セットされます
|
[戻る] gdi $canvas.nummaps
|
gdi $canvas.numMaps
return num
キャンバスに開かれている(ロードされた)リファレンスマップの数を返します
|
[戻る] gdi $canvas.objundermouseex
|
gdi $canvas.ObjUnderMouseEx $x $y $distance
return obj
x,yの座標(マップ座標)の下にあるオブジェクトを検索し,発見したオブジェクト
ハンドルを返します
セレクションが禁止されているオブジェクトも検索します
この点を除いてObjUnderMouseと同機能です
|
[戻る] gdi $canvas.objundermouse
|
gdi $canvas.ObjUnderMouse $x $y $distance
return obj
x,yの座標(マップ座標)の下にあるオブジェクトを検索し,発見したオブジェクト
ハンドルを返します
セレクションが禁止されているオブジェクトは検索対象から場外されます
(セレクションが禁止されているオブジェクトも検索するのはObjUnderMouseExです)
distanceには検索範囲をマップ座標単位で与えます(半径)
発見されなかった場合は0が返ります
このコマンドはマウスでオブジェクトをセレクションする操作に用いられます
複数のオブジェクトが重なってた場合,最前面に表示されているオブジェクトが
返されます
オブジェクトがポリゴンのような領域を持つ場合には内外判定が行われます。
その場合にdistanceは配慮されません(点の内外判定が行われます)
|
[戻る] gdi $canvas.obj
|
gdi $canvas.obj [$layer]
return num
オブジェクトの総数を返します
レイヤハンドル(layer)を指定すると,そのレイヤのオブジェクト数だけを返します
(gdi $layer.num と同じです)
|
[戻る] gdi $canvas.opendc
|
gdi $canvas.OpenDC
return hDC
キャンバスのDC(デバイスコンテキスト)を返します
gdiコマンドでDCを受け取るものはありません
他のシステムに渡す必要がある場合などに利用します
DCは利用後にgdi $canvas.closedcで解放して下さい
|
[戻る] gdi $canvas.opened
|
gdi $canvas.opened $filename
return yes
マップファイルが既にオープンされているか否かを1か0で返します
filenameにはオープンする時に指定したであろうファイル名をフルパスで与えます
アクティブマップの検出には使用できません
オープンされているリファレンスマップの数を調べるのは
gdi $canvas.nummaps
です。
オープンされているリファレンスマップのファイル名リストを得るのは
gdi $canvas.mapfilenames
です
|
[戻る] gdi $canvas.outxy
|
gdi $canvas.outxy $x $y
return {X Y}
マップ内部座標を表示用座標系に変換してM単位で返す
(gdi $canvas.projection2で設定されている座標系への変換)
$x,$yはマップ内部座標
|
[戻る] gdi $canvas.pan
|
gdi $canvas.pan start $x $y
gdi $canvas.pan $x $y
gdi $canvas.pan stop $x $y
パンニング開始,パンニング,パンニング終了
$x $y はマップ座標
|
[戻る] gdi $canvas.past
|
gdi $canvas.past
return num
カットもしくはコピーコマンドでクリップボードに格納されているオブジェクトを
キャンバスに貼り付け(コピーして),そのオブジェクト数を返します
クリップボードはWindowsのクリップボードではなく,gdi固有のクリップボードです
{gdi $olist.clip cut}
{gdi $olist.clip copy}
を参照して下さい
|
[戻る] gdi $canvas.plane
|
gdi $canvas.plane
gdi $canvas.plane.define
gdi $canvas.plane.add
gdi $canvas.plane.clear
gdi $canvas.plane.expr
gdi $canvas.plane.disable
gdi $canvas.plane.enable
gdi $canvas.plane.enable?
gdi $canvas.plane.delete
gdi $canvas.plane.define $layer1 $layer2 ...
return no
プレーンを新規登録します
layerはレイヤハンドルです(レイヤ名ではありません)
アーギュメントの順番がそのままプレーン内での表示順になります
各レイヤに与えられている表示ON/OFF設定は有効です
0から始まる整数でプレーン番号が返ります
この番号は記憶しておかなければなりません(表示演算式に使用します)
gdi $canvas.plane.add $index $layer1 $layer2 ...
return num
プレーンにレイヤを追加します
indexはプレーン番号です
登録されている最大プレーン番号よりindexが大きい場合は最大プレーン番号に調節されます
プレーンが一つも登録されていなければ何もしません
layerはレイヤハンドルです(レイヤ名ではありません)
登録済みレイヤの末尾に追加されます
アーギュメントの順番がそのままプレーン内での表示順になります
重複レイヤは無視されます
登録レイヤ数が返ります
ひとつもレイヤを与えずにこのコマンドを実行するとプレーンの登録レイヤ数を求めることができ
ます
gdi $canvas.plane.clear $index
return num
プレーンのレイヤをクリアします
indexはプレーン番号です
プレーンは残ります
登録されている最大プレーン番号よりindexが大きい場合はエラーです
プレーンが一つも登録されていなければ何もしません
gdi $canvas.plane.expr $expression
return success
プレーンの表示方法を数式(表示演算式)で与えます
例 0*1*2+3*4*5+(6+7)*8
*はベクトル描画,+は白部透明でのラスタ描画演算子です
数字はプレーン番号です
*は+に優先して演算されます
()を使うこともできます
ただし,*演算子の右項はプレーン番号以外許されません
(誤り) (1+2)*(3+4)
(正解) (1+2)*3+(1+2)*4
式中のブランク,水平タブは無視されます
gdi $canvas.plane.disable
プレーンによる演算描画機能をOFFします
gdi $canvas.plane.enable
return on
プレーンによる演算描画機能をONします
成功したら1が返ります
プレーンが未設定なら0が返ります
gdi $canvas.plane.enable?
return on
プレーンによる演算描画機能がONになっているか問い合わせます
ONなら1が返ります
gdi $canvas.plane.delete
return success
設定されているプレーンを全削除します
プレーンが未設定なら何もしません
|
[戻る] gdi $canvas.presetscale
|
gdi $canvas.PresetScale $scale0 ... $scaleN
論理スケールを設定します
アーギュメントは最大18個です
最初のアーギュメントが論理スケール0番の設定になります
アーギュメントの個数以降の論理スケールは未設定になります
つまりアーギュメントが10個与えられると0から9までの論理スケールの設定となり
10から17までは未設定になります
各アーギュメントには実縮尺を実数値で与えます
例えば1/500の場合には0.002を与えます
縮尺は大縮尺から小縮尺方向に与えられなければなりません
論理スケールについてはgdi $canvas.logicalscaleを参照して下さい
|
[戻る] gdi $canvas.print
[戻る] gdi $canvas.projection2
|
gdi $canvas.projection2 [$ellipse $xysystem]
return {ellipse xysystem}
表示座標系をUTMまたは公共座標系とします(投影座標モード)
アーギュメントellipseには楕円体名を与えます
BESSEL WGS84 GRS80 GRS83 CLARKE IAU65 GRS67
空文字を与えると投影計算しません
アーギュメントxysystemには座標系番号を与えます
1〜19 公共座標系
51〜56 UTM
0を与えると投影計算しません
2つのアーギュメントを省略すると現在の設定値がリストで返ります
{楕円体名 番号}
アーギュメントをひとつだけ与えると測地系だけの変更になります
|
[戻る] gdi $canvas.projection
|
gdi $canvas.projection [$ellipse $xysystem]
return {ellipse xysystem}
オブジェクト座標をUTMまたは公共座標系とします(投影座標モード)
アーギュメントellipseには楕円体名を与えます
BESSEL WGS84 GRS80 GRS83 CLARKE IAU65 GRS67
空文字を与えると投影計算しません
アーギュメントxysystemには座標系番号を与えます
1〜19 公共座標系
51〜56 UTM
0を与えると投影計算しません
2つのアーギュメントを省略すると現在の設定値がリストで返ります
{楕円体名 番号}
アーギュメントをひとつだけ与えると測地系だけの変更になります
|
[戻る] gdi $canvas.protection
|
gdi $canvas.protection [$onoff]
return onoff
キャンバスのプロテクション機能のON/OFFを設定します
onoffには1か0,もしくは"on"か"off"を与えます
プロテクション機能がOFFの場合はオブジェクトに設定されているプロテクションが機能
しなくなります(gdi $obj.protectionを参照)
onoffを省略すると現在の設定が0か1で返ります
|
[戻る] gdi $canvas.pullundo
|
gdi $canvas.pullundo [$offset]
return olist
直前のPushBefore/PushAfterによりUndoバッファに積まれた
オブジェクトをオブジェクトリストで返します
$offsetを与えると直前ではなくもっと前に積まれたオブジェクト
を返します。$offsetは必ず負数です。
返されたolistを削除する必要はありません。
(削除しても実際には削除されないのでエラーにはなりません)
|
[戻る] gdi $canvas.queryactive
[戻る] gdi $canvas.querychanged
[戻る] gdi $canvas.queryclass
|
gdi $canvas.QueryClass [$layername] $classname
return olist
レイヤ名とクラス名でオブジェクトを検索しオブジェクトリストで返します
レイヤ名は省略可です
クラス名はオブジェクトの先頭属性値です
返されたオブジェクトリストは使用後に削除してください
|
[戻る] gdi $canvas.querydeleted
[戻る] gdi $canvas.queryid
|
gdi $canvas.QueryID $reference $id
return obj
オブジェクトをリファレンスファイル番号とオブジェクトIDの組み合わせで検索します
referenceは検索対象となるリファレンスファイル番号です
idはオブジェクトIDです
該当するオブジェクトが検索されるとオブジェクトハンドルが返ります
オブジェクトがなければ0が返されます
オブジェクトIDはマップファイル単位でユニークです
従って,複数のマップファイルがロードされている場合には同じIDのオブジェクトが存在
しうるので,オブジェクトが属するマップファイルを指定する必要があります
マップファイルを指定するための識別番号がリファレンスファイル番号であり,
gdi $canvas.mapid $filename
で得ることができます
ただし,アクティブオブジェクトのリファレンス番号は0ですので上記コマンドでは取得できま
せんし,その必要もありません
リファレンス番号はオブジェクトのプロパティにも記憶されています
オブジェクトのリファレンス番号は
gdi $obj.referenceid
で得ることができます
返されたオブジェクトリストは使用後に削除してください
|
[戻る] gdi $canvas.queryincircle
|
gdi $canvas.QueryInCircle $x $y $r $displayonly
return olist
円形範囲に一部でも含まれるオブジェクトを検索し,それらをオブジェクトリスト
で返します
x y は中心,r は半径です。いずれもマップ単位で与えます
displayonly は,表示されているオブジェクトのみ検索対象とする場合には1を
非表示のオブジェクトも検索対象とする場合には0を与えます
セレクションが禁止されている(セレクションロック)オブジェクトは対象外です
返されたオブジェクトリストは使用後に削除してください
|
[戻る] gdi $canvas.queryinrectex
|
gdi $canvas.QueryInRectEx $xmin $ymin $xmax $ymax
return olist
矩形範囲に一部でも含まれるオブジェクトを検索し,それらをオブジェクトリスト
で返します
矩形範囲をxmin ymin xmax ymax で与えます。マップ単位です。
非表示,セレクションロックの有無に関わらず抽出されるところが
gdi $canvas.queryinrectと異なります
シンボル,テキスト類は原点が対象です。gdi $canvas.queryoverlaprectex参照。
返されたオブジェクトリストは使用後に削除してください
|
[戻る] gdi $canvas.queryinrect
|
gdi $canvas.QueryInRect $xmin $ymin $xmax $ymax $displayonly
return olist
矩形範囲に一部でも含まれるオブジェクトを検索し,それらをオブジェクトリスト
で返します
$xmin $ymin $xmax $ymax : マップ単位矩形範囲
$displayonly : 表示されているオブジェクトのみ検索対象とする場合には1を
非表示のオブジェクトも検索対象とする場合には0を与えます
セレクションが禁止されている(セレクションロック)オブジェクトは対象外です
シンボル,テキスト類は原点が対象です。gdi $canvas.queryoverlaprect参照。
返されたオブジェクトリストは使用後に削除してください
|
[戻る] gdi $canvas.queryinsidecircle
|
gdi $canvas.QueryInsideCircle $x $y $r $displayonly
return olist
円形範囲に完全に含まれているオブジェクトを検索し,それらをオブジェクトリスト
で返します
x y は中心,r は半径です。いずれもマップ単位で与えます
displayonly は,表示されているオブジェクトのみ検索対象とする場合には1を
非表示のオブジェクトも検索対象とする場合には0を与えます
セレクションが禁止されている(セレクションロック)オブジェクトは対象外です
返されたオブジェクトリストは使用後に削除してください
|
[戻る] gdi $canvas.queryinsiderect
|
gdi $canvas.QueryInsideRect $xmin $ymin $xmax $ymax $displayonly
return olist
矩形範囲に完全に含まれているオブジェクトを検索し,それらをオブジェクトリスト
で返します
矩形範囲をxmin ymin xmax ymax で与えます。マップ単位です。
displayonly は,表示されているオブジェクトのみ検索対象とする場合には1を
非表示のオブジェクトも検索対象とする場合には0を与えます
セレクションが禁止されている(セレクションロック)オブジェクトは対象外です
返されたオブジェクトリストは使用後に削除してください
|
[戻る] gdi $canvas.queryinsidelockobj
|
gdi $canvas.QueryInsideLockObj [$olist] $lock_olist $unlock_olist $out_olist
return num
$olistから修正オブジェクトを$out_olistに抽出します
$olistが省略されていればキャンバスから修正オブジェクトを$out_olistに抽出します
$lock_olist にはクライアントロックエリアオブジェクトを格納して渡します
$unlock_olistにはプロテクトエリアオブジェクトを格納して渡します
修正オブジェクトとは
親(root)のみを調べ
protection==0
update != 0
原点がlockオブジェクトの範囲内でunlockオブジェクトの範囲外
削除フラグが立っている場合はリファレンスオブジェクトだけ
の条件が真であるファミリー
$out_olistのオブジェクト群はクライアントマップに保存されるべきものです
修正オブジェクトを保存したマップをクライアントマップと呼びます
参照:gdi $canvas.updateloading
gdi $canvas.replacemap
|
[戻る] gdi $canvas.querynew
[戻る] gdi $canvas.queryoverlaprectex
|
gdi $canvas.QueryOverlapRectEx $xmin $ymin $xmax $ymax
return olist
矩形範囲に一部でも含まれているオブジェクトを検索し,それらをオブジェクトリスト
で返します
矩形範囲をxmin ymin xmax ymax で与えます。マップ単位です。
非表示,セレクション禁止であっても抽出されるところがQueryOverlapRectと異なります
シンボル,テキスト類は原点ではなく表示サイズで判断されます。QueryInRectEx参照。
返されたオブジェクトリストは使用後に削除してください
|
[戻る] gdi $canvas.queryoverlaprect
|
gdi $canvas.QueryOverlapRect $xmin $ymin $xmax $ymax $displayonly
return olist
矩形範囲に一部でも含まれているオブジェクトを検索し,それらをオブジェクトリスト
で返します
矩形範囲をxmin ymin xmax ymax で与えます。マップ単位です。
displayonly は,表示されているオブジェクトのみ検索対象とする場合には1を
非表示のオブジェクトも検索対象とする場合には0を与えます
セレクションが禁止されている(セレクションロック)オブジェクトは対象外です
シンボル,テキスト類は原点ではなく表示サイズで判断されます。QueryInRect参照。
返されたオブジェクトリストは使用後に削除してください
|
[戻る] gdi $canvas.querylayerex
|
gdi $canvas.QueryLayerEx $layer1 ...
return olist
指定レイヤに属するオブジェクトをオブジェクトリストで返します
セレクションが禁止されている(セレクションロック)オブジェクトも含みます
プロテクションが3に設定されているオブジェクトは除外します
ただしキャンバスのプロテクションモードが0の場合は除外しません
layerはレイヤハンドルです。複数指定可能です
レイヤ名からレイヤハンドルを得るには
gdi $canvas.layer
コマンドを使用します
|
[戻る] gdi $canvas.querylayer
|
gdi $canvas.QueryLayer $layer1 ...
return olist
指定レイヤに属するオブジェクトをオブジェクトリストで返します
セレクションが禁止されている(セレクションロック)オブジェクトは含まれません
gdi $canvas.querylayerexを参照して下さい
|
[戻る] gdi $canvas.querynearnodeincircle
|
gdi $canvas.QueryNearnodeInCircle $x $y $r $displayonly
return olist
円形範囲に頂点が含まれているオブジェクトを検索し,それらをオブジェクトリスト
で返します
x y は中心,r は半径です。いずれもマップ単位で与えます
displayonly は,表示されているオブジェクトのみ検索対象とする場合には1を
非表示のオブジェクトも検索対象とする場合には0を与えます
セレクションが禁止されている(セレクションロック)オブジェクトは対象外です
オブジェクトリストには範囲内にある頂点番号も格納されています
オブジェクトリストからi番目のオブジェクトハンドルを取り出す
set obj [{gdi $olist.obj $i}]
このオブジェクトの範囲内頂点番号を取り出す
set no [gdi $olist.node $i]
返されたオブジェクトリストは使用後に削除してください
このコマンドはキャンバス全体から検索します。これに類似して
gdi $olist.NearNode $x $y $r
というコマンドがあります。このコマンドはオブジェクトリストに含まれている
オブジェクト群に対して円形範囲内頂点検索を行うものです
|
[戻る] gdi $canvas.querynearnodeinrect
|
gdi $canvas.QueryNearnodeInRect $x $y $distance $displayonly
return olist
矩形範囲に頂点が含まれているオブジェクトを検索し,それらをオブジェクトリスト
で返します
矩形範囲を中心座標($x,$y)と半幅($distance)で与えます。マップ単位です。
displayonly は,表示されているオブジェクトのみ検索対象とする場合には1を
非表示のオブジェクトも検索対象とする場合には0を与えます
セレクションが禁止されている(セレクションロック)オブジェクトは対象外です
オブジェクトリストには範囲内にある頂点番号も格納されています
オブジェクトリストからi番目のオブジェクトハンドルを取り出す
set obj [gdi $olist.obj $i]
このオブジェクトの範囲内頂点番号を取り出す
set no [gdi $olist.node $i]
返されたオブジェクトリストは使用後に削除してください
|
[戻る] gdi $canvas.queryundermouseex
|
gdi $canvas.QueryUnderMouseEx $x $y $distance
return olist
指定した位置から指定距離内に頂点もしくは辺があるオブジェクトを検索し,
オブジェクトリストを返します
セレクションが禁止されている(セレクションロック)オブジェクトも対象となるところが
gdi $canvas.queryundermouseと異なります
|
[戻る] gdi $canvas.queryundermouse
|
gdi $canvas.QueryUnderMouse $x $y $distance
return olist
指定した位置から指定距離内に頂点もしくは辺があるオブジェクトを検索し,
オブジェクトリストを返します
面的オブジェクトの場合は内外判定にて評価されます
x y は位置,distance は距離です。いずれもマップ単位で与えます
セレクションが禁止されている(セレクションロック)オブジェクトは対象外です
複数のオブジェクトを検索するところがgdi $canvas.objundermouseと
異なります
|
[戻る] gdi $canvas.queryunderpointlayer
|
gdi $canvas.QueryUnderPointLayer $x $y $distance $layer
return olist
指定したレイヤに属するオブジェクトを対象とし,指定した位置から指定距離内
に頂点もしくは辺があるオブジェクトの集合をオブジェクトリストで返します
面的オブジェクトの場合は内外判定にて評価されます
x y は位置,distance は距離です。いずれもマップ単位で与えます
layerはレイヤハンドルです
非表示,あるいはセレクションが禁止されているオブジェクトも対象になります
|
[戻る] gdi $canvas.queryunderpoint
|
gdi $canvas.QueryUnderPoint $x $y $distance $displayonly
return olist
全てのオブジェクトを対象とし,指定した位置から指定距離内に頂点もしくは
辺があるオブジェクトの集合をオブジェクトリストで返します
面的オブジェクトの場合は内外判定にて評価されます
x y は位置,distance は距離です。いずれもマップ単位で与えます
displayonly には,表示されているオブジェクトのみ検索対象とする場合
には1を,非表示のオブジェクトも検索対象とする場合には0を与えます
セレクションが禁止されている(セレクションロック)オブジェクトは対象外です
|
[戻る] gdi $canvas.queryxy
|
gdi $canvas.QueryXY $x $y
return olist
始点座標が完全一致するオブジェクトの集合をオブジェクトリストで返します
キャンバスに存在する全てのオブジェクトが対象です
|
[戻る] gdi $canvas.rasope
|
gdi $canvas.RasOpe [$kind]
return kindlist
実装されているベクタ論理演算表示の全種類をTclリストで返します
kindを与えるとベクタ論理演算表示種類を変更します
論理演算には下記の種類が実装されています
copy | notcopy | black | white | masknotpen | maskpennot | notmask | mask | mergenotpen | mergepennot | notmerge | merge | nop | not | xor | notxor | | |
|
[戻る] gdi $canvas.realscale
|
gdi $canvas.RealScale [$scale]
return scale
現在の表示スケールを実縮尺で返します
実縮尺とは地図縮尺そのものです
実数で返されます。即ち1/500なら0.002が返ります
実縮尺をscaleにて与えれば表示スケールをで変更できます
ただし,正しく表示させる為には,マップ単位とスクリーンの実幅が
あらかじめ設定されている必要があります。これらは
gdi $canvas.mapunit
で設定します
|
[戻る] gdi $canvas.realtological
|
gdi $canvas.RealToLogical $realscale
return index
実スケールから論理スケール番号を得ます
実スケールは実数値です。即ち1/500なら0.002を与えます
|
[戻る] gdi $canvas.redo
|
gdi $canvas.redo
return num
戻した修正操作を再度実行します(Redo)
戻り値は,Redoバッファに残っている件数です
もし件数が0ならばアプリケーションのRedoボタンをDisableにして下さい
Redoバッファ操作を積むのは
gdi $canvas.undo
コマンドです
|
[戻る] gdi $canvas.redraw
|
gdi $canvas.redraw [$xmin $ymin $xmax $ymax]
キャンバスの指定矩形範囲(マップ単位)を再描画します
矩形範囲を与えなければ全体を再描画します
広範囲に渡ってオブジェクトを削除したり幾何形状を変更した場合には
このコマンドにて結果を表示します
|
[戻る] gdi $canvas.removeallobjects
|
gdi $canvas.RemoveAllObjects
全ての図形オブジェクトを削除します
|
[戻る] gdi $canvas.removelayer
|
gdi $canvas.RemoveLayer $layer1 ...
レイヤを削除します
複数のレイヤを指定することが出来ます
削除レイヤに含まれていた図形オブジェクトも削除されます
ひとつのレイヤだけを削除すれば良いのであれば
gdi $layer.delete
コマンドもあります
|
[戻る] gdi $canvas.removerefobjects
|
gdi $canvas.RemoveRefObjects $filename
指定されたファイル名(filename)のリファレンスファイルを閉じます
実際には指定したファイルからロードされたオブジェクトを全削除するものです
|
[戻る] gdi $canvas.replacemap
|
gdi $canvas.ReplaceMap $olist
GUIDで比較し同じオブジェクトを$olistのオブジェクトに入れ替えます
$olistはクライアントマップからロードされた更新オブジェクトが格納されたものです
参照:gdi $canvas.updateloading
|
[戻る] gdi $canvas.s2xy
|
gdi $canvas.s2xy $ws $hs
return "x,y"
整数化乗数を乗じて得た整数秒で与えられた経緯度(ws,hs)を内部XY座標
に変換し,カンマで区切った座標文字列を返します
この変換は線形変換であり経度,緯度それぞれにオフセットを加えたのち,
それぞれのスケールを乗じてx,y座標に変換します
このコマンドを使用する前に
gdi $canvas.fitdmsxy
コマンドにて変換係数が設定されていなければなりません
変換係数が設定されていない場合には同じ値を返します
このコマンドはgdi $canvas.dms2xyと同機能です
返されたx,y座標はUTMや公共座標系などの投影座標ではなくシステムの内部
座標なので表示することには意味がありません
|
[戻る] gdi $canvas.savemapareavisiblexy
|
gdi $canvas.SaveMapAreaVisibleXY \
$fname $xmin $ymin $xmax $ymax [$mapname]
return success
キャンバスに表示されており,かつ指定範囲内のオブジェクトを内部座標のまま
でマップファイルに保存します。
(注)秒座標を保存するSaveMapAreaVisibleの方を使用すべきです
リファレンスオブジェクトは保存されません
fnameは保存ファイル名です
xmin ymin xmax ymax で矩形範囲を指定します
maptype はマップタイプです。省略可能です
成功すると1が,失敗すると0が返ります
非表示のオブジェクトも保存するには
gdi $canvas.savemapareaxy
を使用します
|
[戻る] gdi $canvas.savemapareavisible
|
gdi $canvas.SaveMapAreaVisible \
$fname $xmin $ymin $xmax $ymax [$maptype]
return success
キャンバスに表示されており,かつ指定範囲内のオブジェクトを経緯度座標値で
マップファイルに保存します。
リファレンスオブジェクトは保存されません
fnameは保存ファイル名です
xmin ymin xmax ymax で矩形範囲を指定します
maptype はマップタイプです。省略可能です
成功すると1が,失敗すると0が返ります
このコマンドを使用する為には
gdi $canvas.fitdmsxy
コマンドにて線形変換係数が設定されていなければなりません
非表示のオブジェクトも保存するにはgdi $canvas.savemaparea
を使用します
|
[戻る] gdi $canvas.savemapareaxy
|
gdi $canvas.SaveMapAreaXY $fname $xmin $ymin $xmax $ymax [$mapname]
return success
指定範囲内のオブジェクトを内部座標のままマップファイルに保存します。
リファレンスオブジェクトは保存されません
(注)秒座標を保存するSaveMapAreaDMSの方を使用すべきです
fnameは保存ファイル名です
xmin ymin xmax ymax で矩形範囲を指定します
maptype はマップタイプです。省略可能です
成功すると1が,失敗すると0が返ります
表示されているオブジェクトだけを保存するには
gdi $canvas.savemapareavisiblexy
を使用します
|
[戻る] gdi $canvas.savemaparea
|
gdi $canvas.SaveMapArea \
$fname $xmin $ymin $xmax $ymax [$mapname]
return success
指定範囲内のオブジェクトを経緯度座標値でマップファイルに保存します。
リファレンスオブジェクトは保存されません
fnameは保存ファイル名です
xmin ymin xmax ymax で矩形範囲を指定します
maptype はマップタイプです。省略可能です
成功すると1が,失敗すると0が返ります
このコマンドを使用する為には
gdi $canvas.fitdmsxy
コマンドにて線形変換係数が設定されていなければなりません
表示されているオブジェクトだけを保存するには
gdi $canvas.savemapareavisible
を使用します
|
[戻る] gdi $canvas.savemapvisiblexy
|
gdi $canvas.SaveMapVisibleXY $filename [$maptype]
return success
表示されている全てのオブジェクトを内部XY座標値でマップファイルに保存します。
リファレンスオブジェクトは保存されません
fnameは保存ファイル名です
maptype はマップタイプです。省略可能です
成功すると1が,失敗すると0が返ります
非表示のオブジェクトも保存するには
gdi $canvas.savemapxy
を使用します
|
[戻る] gdi $canvas.savemapvisible
|
gdi $canvas.SaveMapVisible $filename [$maptype]
return success
表示されている全てのオブジェクトを経緯度座標値でマップファイルに保存します。
リファレンスオブジェクトは保存されません
fnameは保存ファイル名です
maptype はマップタイプです。省略可能です
成功すると1が,失敗すると0が返ります
非表示のオブジェクトも保存するには
gdi $canvas.savemap
を使用します
|
[戻る] gdi $canvas.savemapxy
|
gdi $canvas.SaveMapXY $filename [$maptype]
return success
全てのオブジェクトを内部XY座標値でマップファイルに保存します。
非表示のオブジェクトも保存されますが,リファレンスオブジェクトは保存されません
fnameは保存ファイル名です
maptype はマップタイプです。省略可能です
成功すると1が,失敗すると0が返ります
表示されているオブジェクトだけを保存するには
gdi $canvas.savemapvisiblexy
を使用します
|
[戻る] gdi $canvas.savemap
|
gdi $canvas.SaveMap $filename [$maptype]
return success
全てのオブジェクトを経緯度座標値でマップファイルに保存します。
非表示のオブジェクトも保存されますが,リファレンスオブジェクトは保存されません
fnameは保存ファイル名です
maptype はマップタイプです。省略可能です
成功すると1が,失敗すると0が返ります
表示されているオブジェクトだけを保存するには
gdi $canvas.savemapvisible
を使用します
|
[戻る] gdi $canvas.savetilexy
|
gdi $canvas.SaveTileXY $fname $xmin $ymin $xmax $ymax [$mapname]
return success
指定範囲内のオブジェクトを内部座標のままタイルマップファイルに保存します。
全てのオブジェクトが対象になります
fnameは保存ファイル名です
xmin ymin xmax ymax で矩形範囲を指定します
maptype はマップタイプです。省略可能です
保存したオブジェクト数がかえります
保存オブジェクトが無かった場合はファイルも作成されません
矩形境界のオブジェクトはBREC_CLONEレコードとともに保存されます
矩形外のオブジェクトでも内部オブジェクトとリンクしていれば保存されます
|
[戻る] gdi $canvas.savetile
|
gdi $canvas.SaveTile $fname $xmin $ymin $xmax $ymax [$mapname]
return num
指定範囲内のオブジェクトを経緯度座標でタイルマップファイルに保存します。
全てのオブジェクトが対象になります
fnameは保存ファイル名です
xmin ymin xmax ymax で矩形範囲を指定します
maptype はマップタイプです。省略可能です
保存したオブジェクト数がかえります
保存オブジェクトが無かった場合はファイルも作成されません
矩形境界のオブジェクトはBREC_CLONEレコードとともに保存されます
矩形外のオブジェクトでも内部オブジェクトとリンクしていれば保存されます
|
[戻る] gdi $canvas.scale
|
gdi $canvas.scale [$scale]
return scale
表示スケールを返します
表示スケールとは内部マップ座標をスクリーン座標へ変換するときの乗数です
scaleを与えると表示スケールを変更します
|
[戻る] gdi $canvas.screenrect
|
gdi $canvas.ScreenRect $w $h
キャンバスのサイズをピクセル単位で設定します
このコマンドは一時的にスクリーンサイズを変更することが必要な場合に使用します
キャンバスサイズは,キャンバスが貼られているウインドウサイズが変更されたとき自動的
に変更されます
|
[戻る] gdi $canvas.screentomaprect
|
gdi $canvas.ScreenToMapRect $left $top $right $bottom
return {xmin ymin xmax ymax}
指定したスクリーン上の矩形範囲に表示されるマップ座標範囲を返します
|
[戻る] gdi $canvas.screentomap
|
gdi $canvas.ScreenToMap $px $py
return {x y}
指定したスクリーン上の位置(px,py)に対応するマップ座標値を返します
|
[戻る] gdi $canvas.scrolledrect
|
gdi $canvas.scrolledRect
return {xmin ymin xmax ymax [xmin2 ymin2 xmax2 ymax2]}
スクロールによって再描画された矩形範囲をマップ単位で返します
水平,または垂直スクロールの場合はひとつの矩形範囲が返ります
斜めスクロールの場合は2つの矩形範囲がかえります
|
[戻る] gdi $canvas.scroll
|
gdi $canvas.scroll $dx $dy
キャンバスに表示されているマップ範囲をスクロールします
dx dy はピクセル座標で与えます
dxが正の値のとき右側にスクロールします(隠れていた左側部分が現れます)
dyが正の値のとき下側にスクロールします(隠れていた上側部分が現れます)
|
[戻る] gdi $canvas.sec2xy
|
gdi $canvas.sec2xy $ws $hs
return {x y}
実数秒で与えられた経緯度を内部XY座標に変換します
キャンバスに投影座標系が設定されている場合には投影変換します
投影座標系が未設定の場合には線形変換します。
線形変換を行う為には
gdi $canvas.fitdmsxy
コマンドにて線形変換係数が設定されていなければなりません
変換係数も未設定の場合には同じ値 {ws hs}を返します
このコマンドと反対の処理を行うのが
gdi $canvas.xy2sec
です
|
[戻る] gdi $canvas.selection
|
gdi $canvas.selection [$vlayer]
return olist
セレクションされているオブジェクト集合ををオブジェクトリストで返します
返されたオブジェクトリストを削除する必要はありません(削除できません)
(以下は互換性維持のため残存させている機能)
揮発レイヤハンドル(vlayer)を与えるとセレクションオブジェクト表示用の揮発レイヤを
変更します
最新版ではgdi $canvas.selection.vlayer $vlayer を使うべきです
gdi $canvas.selection.vlayer [$vlayer]
return vlayer
セレクションオブジェクト表示用の揮発レイヤをハンドル(vlayer)を与えます
vlayerを与えると旧設定値が返ります
vlayerを省略すると現在の設定値を返します
セレクションオブジェクト表示用の揮発レイヤが与えられていなければセレクションされ
てもオブジェクトの表示は変わりません
以前はセレクションオブジェクトの着色をアプリケーション側で行っていましたが ,
現在はgdiに委ねなければなりません
gdi $canvas.selection.color [$obj] $vlayer
return num
$obj,$vlayerの両方を与えると,セレクションの中から$objだけの揮発レイヤを
変更します(セレクションが解除されたときにその揮発レイヤで表示されます)
$objがセレクションされていたので変更したら1を返します
セレクションされていない場合は何もせずに0を返します
$vlayerをだけを与えると,全てのセレクションオブジェクトの揮発レイヤを変更します
変更されたオブジェクト数が返ります(セレクションが解除されたときにその揮発レイヤ
で表示されます)
【解説】
設定した揮発レイヤでの表示は,セレクションが解除されたときに実現します。
つまりこのコマンドはセレクションオブジェクトの本来の揮発レイヤを設定するものです。
[gdi $obj.vlayer $vlayer],[gdi $obj.paint $vlayer]との違いに注意して下さい。
上記コマンドをセレクションオブジェクトに対して使用すると,すぐに表示が変更さ
れますが,セレクションが解除されると元の表示に戻ってしまいます。
つまり,上記コマンドはセレクション表示を一時的に変更するためのものです。
使用例 (オブジェクトがセレクションされている場合)
◆セレクション状態の色を変更するだけ。セレクション解除後は元の色
gdi $obj.paint $vlayer
◆セレクション状態の色はそのままで,解除後の色を変更したい
gdi $canvas.selection.color $obj $vlayer
◆セレクションオブジェクトの色を変更しかつセレクション解除後にもその色を維持
したいとき
gdi $obj.paint $vlayer
gdi $canvas.selection.color $obj $vlayer
gdi $canvas.selection.num
return $num
セレクションされているオブジェクト数を返します
gdi $canvas.selection.obj $index
return obj
セレクショから$index番目のオブジェクトを返します
gdi $canvas.selection.add {$obj | $olist}
return num
セレクションにオブジェクト($obj)を追加します
又は,オブジェクトリスト($olist)に含まれる全オブジェクトについて上記処理を実行します
ただしプロテクト3のオブジェクトは追加されません
追加後のオブジェクト数を返します
既にセレクションされている場合は逆に除去されます
追加/除去された場合はセレクションオブジェクトの数とインデックスが変更されますので
ループ処理の中で実行する場合はご注意下さい
gdi $canvas.selection.append {$obj | $olist}
return num
セレクションにオブジェクト($obj)を追加します
又は,オブジェクトリスト($olist)に含まれる全オブジェクトについて上記処理を実行します
ただしプロテクト3のオブジェクトは追加されません
追加後のオブジェクト数を返します
既にセレクションされている場合は無視されます(addと異なる点です)
追加された場合はセレクションオブジェクトの数とインデックスが変更されますので
ループ処理の中で実行する場合はご注意下さい
gdi $canvas.selection.sub {$obj | $olist}
return num
セレクションからオブジェクト($obj)を除外します
又は,オブジェクトリスト($olist)に含まれる全オブジェクトについて上記処理を実行します
除外後のセレクションオブジェクト数を返します
このコマンドが成功しても{gdi $canvas.selection.num}で返るセレクションオブジェクト数は変化しません
[gdi $canvas.selection.obj $index]で除外したオブジェクトを取り出そうとすると0が返ります
除外したオブジェクトをセレクションから完全に除去するために[gdi $canvas.selection.compress]
を実行するのを忘れないでください
gdi $canvas.selection.remove [{$obj | $olist}]
return num
オブジェクト($obj)がセレクションされている場合にオブジェクト($obj)を削除します
又は,オブジェクトリスト($olist)に含まれる全オブジェクトについて上記処理を実行します
アーギュメントが省略されると,セレクションされているオブジェクトの全てを削除します
UNDOが効かない削除です
削除後のセレクションオブジェクト数を返します
このコマンドが成功しても[gdi $canvas.selection.num]で返るセレクションオブジェクト数は変化しません
[gdi $canvas.selection.obj $index]で除外したオブジェクトを取り出そうとすると0が返ります
除外したオブジェクトをセレクションから完全に除去するために[gdi $canvas.selection.compress]
を実行するのを忘れないでください
gdi $canvas.selection.compress
return num
セレクションリストを圧縮します
セレクションオブジェクト数を返します
[gdi $canvas.selection.sub]や[gdi $canvas.selection.remove]コマンドのあとに実行します
gdi $canvas.selection.clear
セレクションをクリアします
[gdi $canvas.clear selection]と同機能です
gdi $canvas.selection.range
return {xmin ymin xmax ymax}
セレクションされているオブジェクトの全てを包含する最小範囲を返します
セレクションオブジェクトが存在しない場合は空文字が返ります
gdi $canvas.selrangeと同じです
|
[戻る] gdi $canvas.selrange
|
gdi $canvas.selrange
return {xmin ymin xmax ymax}
セレクションされているオブジェクト集合全体を包含する最小矩形範囲を返します
セレクションオブジェクトが存在しない場合は空文字が返ります
旧コマンドです。
|
[戻る] gdi $canvas.simple
|
gdi $canvas.simple [$mode]
return mode
現在の表示モードを返します
modeが与えられると表示モードを変更します
modeには下記のキーワードがあります
n | 通常表示 | s | 簡略表示 | a | 簡略表示+始終点記号表示 | np | 通常表示+セレクションオブジェクトの頂点に矩形記号表示 | sp | 簡略表示+セレクションオブジェクトの頂点に矩形記号表示 | ap | 簡略表示+始終点記号表示+セレクションオブジェクトの頂点に矩形記号表示 | m | 白黒表示 |
|
[戻る] gdi $canvas.snaparea
|
gdi $canvas.snaparea [$distance]
return distance
現在のスナップ範囲をピクセル値で返します
distanceを与えるとスナップ範囲を変更します
スナップ範囲とは,マウスポインタから最短距離にある頂点や辺の座標を取り出す
処理(スナップ)における最大距離です。スナップ範囲より離れた位置にある
頂点や辺はスナップ対象外になります。
gdi $canvas.snapコマンド参照
|
[戻る] gdi $canvas.snap
|
gdi $canvas.snap [$mode]
return mode
現在のスナップモードを番号で返します
modeを与えるとスナップモードを変更します
スナップ処理とはマウスポインタから最短距離にある頂点や辺の座標を取り出す
処理であり,各種モードがあります
モードは下記のキーワードか番号で指定できます
キーワード | 番号 | モード | off | 0 | スナップ機能OFF | point | 1 | 最近傍頂点座標を取り出す | line | 2 | 最近傍線分への垂線交点座標を取り出す | center | 3 | 最近傍線分の中心座標を取り出す | end | 4 | 最近傍オブジェクトの始点または終点座標を取り出す | grid | 5 | 最近傍グリッド座標を取り出す |
スナップ機能がONの時,マウスイベントプロシージャに渡されてくる座標値は上記モード
によりスナップされた座標値です
マウスポインタはスナップ座標に移動されませんので,スナップされた座標を明示する
ため,一般的には,アプリケーション側でスナップ位置に十字カーソル等を表示します
|
[戻る] gdi $canvas.styleproperty
|
gdi $canvas.StyleProperty $style_name arrayname
return type
$canvas.newstyleで作成されたアプリケーションスタイルのプロパティを配列変数に返します
style_name にスタイル名を与えます
arrayname に配列変数名称を与えます
下記のいすれかのタイプを返します
symbol,dash,solid
エラーの場合は空文字を返します
|
[戻る] gdi $canvas.symbol
|
gdi $canvas.symbol
return symbolname_list
キャンバスに登録されている全シンボルリソースのハンドルリスト(Tclリスト)を返します
gdi $canvas.symbol $symbolname
return symbol
シンボル名を与えるとシンボルリソースを検索し,指定した名前のシンボルハンドル
を返します
返されたシンボルハンドルは
gdi $symbol.*
コマンドにてそのプロパティを変更できます
ただし,変更はそのシンボルリソースを既に使用しているシンボルレイヤには
反映されません。なぜなら,シンボルレイヤはシンボルリソースのコピーを使用
しているからです。シンボルレイヤにシンボルリソースを再度選択すれば変更
結果が反映されます(この時コピーが行われます)。
gdi $canvas.symbol $symbolname $size
return symbol
シンボル名とサイズを与えてシンボルリソースをコピーし,そのハンドルを得ることができます
ダイナミックサイズのみの対応です
返されるシンボルハンドルはシンボルラインに適用するスタイル作成コマンドのアーギュメントに使用します
(gdi $canvas.newstyleコマンドで使用します)
|
[戻る] gdi $canvas.transparent
|
gdi $canvas.transparent $onoff
(gdi $canvas.tranceparent $onoff)
キャンバスの透過モードを設定します
onoffに1を与えると透過モード,0を与えると非透過モード指定になります
非透過モードの時は背景は白色でペイントされます
透過モードの時はキャンバスの下にあるコントーロールが表示されますし使用できます
透過モードは非透過モードよりも表示が遅くなります
初期設定は透過モードです
|
[戻る] gdi $canvas.tileupdate
|
gdi $canvas.TileUpdate $fname $hfname $del_list $change_list $append_list $xmin $ymin $xmax $ymax
return $success
タイルマップを更新します
$fname | タイルマップ名 | $hfname | 時系列管理用履歴タイルマップ名 | $del_list | 削除オブジェクトが格納されたオブジェクトリスト | $change_list | 変更オブジェクトが格納されたオブジェクトリスト | $append_list | 新規オブジェクトが格納されたオブジェクトリスト | $xmin,$ymin,$xmax,$ymax | タイル範囲 |
削除オブジェクトの子供オブジェクトもすべて削除します
削除オブジェクトがマップに見つからなくてもエラーになりません
ただしオブジェクト削除とは履歴タイルマップへの移動処理です
通常,削除オブジェクトは「削除フラグが立った」オブジェクト群です
[gdi $canvas.querydeleted $layer...]
で抽出できます(削除フラグが立ったリファレンスオブジェクト)
変更オブジェクトは
[gdi $canvas.querychanged $layer...]
で抽出できます(update!=0のリファレンスオブジェクト)
新規オブジェクトは
[gdi $canvas.querynew $layer...]
で抽出できます(update!=0のアクティブオブジェクトで)
|
[戻る] gdi $canvas.undofinish
|
gdi $canvas.UndoFinish
Undoグルーピングを終了します
UndoStartからUndoFinishまでの操作が一回のUndoで復元されます
|
[戻る] gdi $canvas.undostart
|
gdi $canvas.UndoStart
Undoグルーピングを開始します
UndoStartからUndoFinishまでの操作が一回のUndoで復元されます
|
[戻る] gdi $canvas.undo
|
gdi $canvas.undo
return num
修正操作を元に戻します
戻り値は,Undoバッファに残っている件数です
イベントプロシージャ(RedoEvent)の2要素からなるTclリストです
もし件数が0ならばアプリケーションのUndoボタンをDisableにして下さい
Undo処理結果はgdi $canvas.redoで元に戻せます
つまり,Undo処理はRedoバッファに積む処理も兼ねています
Undoバッファに修正操作を積むコマンドは
gdi $olist.pushbefore
gdi $olist.pushafter
コマンドです
|
[戻る] gdi $canvas.unprotection
|
gdi $canvas.unprotection $lock_olist $protect_olist
始点座標がロック矩形範囲内にあり,かつアンロック矩形範囲外にある
全てのオブジェクトのプロテクトをクリアします
|
[戻る] gdi $canvas.updateloading
|
gdi $canvas.UpdateLoading $file
return olist
クライアントマップローディングを行います
updateプロパティがセットされたオブジェクトのみを格納したオブジェクトリストが返ります
失敗するか,既オープン済みの場合は0が返ります
クライアントマップとは下記コマンドで抽出したオブジェクト($savelist)を格納したマップです
gdi $canvas.queryinsidelockobj $locklist $protectlist $savelist
返されたオブジェクトリストを削除する必要はありませんが,使用後にクリアするとメモリ
を節約できます
set olist [gdi $canvas.updateloading $file]
.... 差し換え処理 ....
gdi $olist.clear
返されたオブジェクトリストを使ってオブジェクトの差し替え処理を行って下さい
差し替え処理とは,同一GUIDをもつ既存のオブジェクトグループをロードされた
オブジェクトにグループ単位で置き換える処理です
具体的には,ロードされたオブジェクトの全範囲の差し替え対象オブジェクトをロードしてから
gdi $canvas.replacemap $updatelist
を実行することです。「差し替え対象オブジェクトのロード」方法はアプリケーションに委ねられています
|
[戻る] gdi $canvas.update
|
gdi $canvas.update
キャンバスに再描画要求を発行します
gdi $canvas.redrawは即時に再描画しますが,このコマンドは
Windowsに再描画を要求するだけであり,実際の再描画のタイミングは
Windowsに任せます
|
[戻る] gdi $canvas.vlayer
|
gdi $canvas.vlayer [$vlayername]
return hvlayer
レイヤ名(vlayername)を与えると揮発レイヤハンドルを返します
レイヤ名を省略すると全揮発レイヤハンドルリストを返します
|
[戻る] gdi $canvas.worldrange
|
gdi $canvas.WorldRange [$xmin $ymin $xmax $ymax]
return {xmin ymin xmax ymax}
リファレンスオブジェクトも含めた全オブジェクトを包含する最小範囲を返します
この範囲は拡大方向にのみ更新されます
つまり,オブジェクトが削除されてもこの範囲が縮小されることはありません
全てのオブジェクトが削除されたときにはリセットされます
リセットされた状態で範囲を取得すると
xmin > xmax
ymin > ymax
の値が返るので無効値であることがわかります
範囲を与えると強制的に書き換えることができます
gdi $canvas.maprangeとの違いに注意して下さい
|
[戻る] gdi $canvas.xy2bl
|
gdi $canvas.xy2bl $x $y
return {ew ns}
平面直角座標を経緯度座標に逆投影します
x,y にはm単位の実数を与えます
$ew,$ns は実数秒単位の経度,緯度です
このコマンドを使用する前にキャンバスに投影法が設定されている必要があります
投影法の設定はgdi $canvas.projectionコマンドです
キャンバスに投影座標系が設定されていない場合(表示目的変換)には
{gdi xy2bl $x $y}
コマンドを使用します
UTMの場合は負数を避けるため東西方向に500Kmのオフセットが加算された値が返
ります
|
[戻る] gdi $canvas.xy2dms
|
gdi $canvas.xy2dms $x $y
return "経緯度文字列"
内部座標値を経緯度に変換し文字列で返します
このコマンドを使用する為には
gdi $canvas.fitdmsxy
コマンドにて線形変換係数が設定されていなければなりません
|
[戻る] gdi $canvas.xy2sec
|
gdi $canvas.xy2sec $x $y
return {ew ns}
内部座標値を経緯度に変換し実数秒で返します
戻り値を整数秒で得るのは
gdi $canvas.xy2s
です
キャンバスに投影座標系が設定されている場合は逆投影して経緯秒を返します
投影座標が設定されていない場合は線形逆変換を試みます
線形逆変換を行う為には
gdi $canvas.fitdmsxy
コマンドにて線形変換係数が設定されていなければなりません。
もし変換係数が設定されていない場合には同じ値{x y}が返ります
このコマンドと逆の機能が
gdi $canvas.sec2xy
です
|
[戻る] gdi $canvas.xy2s
[戻る] gdi $canvas.xylib
[戻る] gdi $canvas.zorder
|
gdi $canvas.zorder $layer1 ...
return success
アーギュメントに並べられたレイヤハンドル順に表示順位を設定します
成功すれば1が,失敗すれば0が返されます
最初のレイヤが再背面,最後のレイヤが最前面に表示されます
このコマンドが実行される前まではレイヤ定義順が表示順です
|
[戻る] gdi $layer.canvas
|
gdi $layer.canvas
return canvas
レイヤのキャンバスハンドルを返します
|
[戻る] gdi $layer.copy
|
gdi $layer.copy $layername
return layer
レイヤ($layer)のコピーを作成しハンドルを返します
既に同一名のレイヤが存在済みの場合は0を返します
新レイヤの名称が$layername
新レイヤの表示順はlayerの直後
|
[戻る] gdi $layer.delete
[戻る] gdi $layer.display
|
gdi $layer.display [$onoff]
return onoff
$onoffにonかoffを与えると表示モードを変更します
$onoffにallonかalloffを与えるとキャンバスの全てのレイヤを表示on/offに設定します
$onoffを省略すると現在の表示モードを0か1で返します
|
[戻る] gdi $layer.exists
|
gdi $layer.exists $obj
return true
レイヤにオブジェクトが生存しているかを返します
|
[戻る] gdi $layer.field
|
gdi $layer.field [$comment]
レイヤにコメントをセットします
アーギュメントを省略すると現在の値を返します
|
[戻る] gdi $layer.import
|
gdi $layer.import $canvas
return layer
layerを指定したcanvasにコピーしレイヤハンドルを返します
|
[戻る] gdi $layer.name
|
gdi $layer.name [$newname]
return name
レイヤの名前を返します
newnameが与えられると名前を変更します
その場合レイヤハンドルは変わりません
|
[戻る] gdi $layer.newobject
|
gdi $layer.newobject
return obj
レイヤにオブジェクトを作成します
オブジェクトハンドルを返します
|
[戻る] gdi $layer.num
|
gdi $layer.num
return num
レイヤに含まれるオブジェクト数を返します
|
[戻る] gdi $layer.propertyarray
|
gdi $layer.propertyarray *varname
レイヤのプロパティを配列変数にセットします
*varnameには配列変数名を与えます
配列要素がプロパティ名です
例 gdi $layer.propertyarray prop
prop(rgb) ← "255 255 255"
prop(style) ← "dot"
prop(selection) ← "on"
下記のダイナミックプロパティ名は配列要素に存在しません
dwidth,dsymbol,dsymbolS,symbolE,dfont,dedge,dfont
ダイナミック値とスタティック値を持つプロパティの値は、最後に
"dynamic"か"static"いずれかのキーワードが付けられます
例えばfontの場合
prop(font) ← "{MS 明朝} 標準 24 static"
prop(font) ← "{MS 明朝} 標準 1000 dynamic"
尚、styleプロパティのduser/user、brushプロパティのdpattern/patternは存在します
prop(style) ← "duser 4 1000 200 1000 200"
|
[戻る] gdi $layer.property
|
gdi $layer.property $propertyname $value [...]
return layer
レイヤのプロパティをセットします
プロパティ名と値の組を必要なだけ与えます
レイヤハンドルが返ります
プロパティ名一覧
rgb | hrgb | brgb | paint | tranceparent | style | appstyle | brush | width | dwidth | font | dfont | mode | symbol | dsymbol | style2 | cap | edge | dedge | | inside | static | | | | display | selection | | | |
図形タイプと有効なプロパティ
全図形共通 | | 表示設定 | display | セレクション世低 | selection | スクリーン座標系 | static | road(道路) | | 道路縁色 | rgb | 道路縁面 | hrgb | 道路縁線種 | style | 道路面線種 | style2 | 道路幅 | width | dwidth | 道路縁幅 | edge | dedge | 道路面ブラシ | brush | 道路面端末処理 | cap | circle(円)fan(扇形) | | 円周色 | rgb | 円周線種 | style | 円周線幅 | width | dwidth | 円内ブラシ | brush | 円内塗り潰し,ハッチング色 | hrgb | ハッチング時の背景色 | brgb | ハッチング時の透明指定 | paint | arc(円弧) | | 円弧色 | rgb | 円弧線種 | style | 円弧線幅 | width | dwidth | string(ライン) | | 線色 | rgb | 線線種 | style | 線線幅 | width | dwidth | polygon(面) | | 外周色 | rgb | 外周線種 | style | 外周線幅 | width | dwidth | 面ブラシ | brush | 面塗り潰し、ハッチング色 | hrgb | ハッチング時の背景色 | brgb | ハッチング時の透明指定 | paint | 外周境界 | inside | text(文字) | | 文字色 | rgb | 背景塗り潰し色 | brgb | 背景塗り潰し指定 | paint | フォント,サイズ | font | dfont | 原点 | mode | areatext | (長方形内にサイズが調整される文字列) | 外周色 | rgb | 外周線種 | style | 外周線幅 | width | dwidth | 面ブラシ | brush | 面塗り潰し、ハッチング色 | hrgb | ハッチング時の背景色 | brgb | ハッチング時の透明指定 | paint | 文字色 | rgb | 背景塗り潰し色 | brgb | 背景塗り潰し指定 | paint | フォント,サイズ | font | dfont | symbol(シンボル) | | シンボル,サイズ | symbol | dsymbol | 一色指定 | paint | 一色指定時の色 | rgb | symbolline(特殊線) | | 一色指定 | paint | 一色指定時の色 | rgb | アプリケーション線種 | appstyle | symbolpolygon | (外周特殊線のポリゴン) | 外周線 | symbollineと同じ | 面 | polygon面部と同じ | square(長方形) | | | polygonと同 | rectangle(矩形) | | | polygonと同 | bmp(ラスタ) | | 白部透明 | transparent | view(ビュー) | | | 個別プロパティ無し | icon(アイコン) | | | 個別プロパティ無し |
プロパティ名と値
rgb | 前景色 RGB値 | hrgb | 面図形の塗り潰し、またははハッチング色RGB値 | brgb | 面図形ハッチングの場合の背景色またはtextの背景色RGB値 | paint | ハッチングの場合の背景塗り潰しon/off またはtextの背景色塗り潰しon/off | | または、onの時に | | シンボルの表示色に前景色を強制採用 | | シンボルライン、シンボルポリゴンのライン色に前景色を強制採用 | width | 線幅 ピクセル固定値 | dwidth | 線幅 マップ単位での幅(ダイナミック線種) | cap | roadの終端処理 0:解放 1:始点閉止 2:終点閉止 3:始終点閉止 | edge | roadの道路縁幅 ピクセル固定値 | dedge | roadの道路縁幅 マップ単位での幅(ダイナミック) | tranceparent | bmpの場合の白部透明on/off | | その他の図形は半透明 | inside | polygon,symbolpolygon,square の場合の外周線描画モード | | off:中心に描画(デフォルト)、on:内側に描画 | displa | 表示on/off | selection | セレクション可否on/off | static | on:描画位置スクリーン固定 off:通常描画 | | ただしラバーバンドオブジェクト(アニメーションオブジェクト)に有効 | style | 線種 null solid dot dash dashdot dashdotdot user duser | | user の場合はデータ数 可視線長 隠線長 ...を続ける | | 例: style user 4 10 5 10 5 | | duserの場合もuserと同であるが、線長をマップ単位で与える | style2 | roadの場合の道路面線種 | mode | textの場合の原点位置 | | X方向 L:左 C:中心 R:右 | | Y方向 T:上 C:中心 B:下 | | XY方向の組み合わせで指定 例:LC | brush | 面の塗りつぶし,ハッチングパターン | | solid 塗りつぶし null: 空 leftdown: 左下がり斜線 rightdown: 右下がり斜線 | | cross クロス cross45: 45度クロス horizontal: 水平線 vertical:垂直線 | | pattern シンボルパターン シンボル名とサイズを続ける 例:brush pattern 黒丸 12 | | dpattern ダイナミックシンボルパターン patternと同。ただしサイズはマップ単位 | | bmp ビットマップパターン bmpファイル名を続ける 例:brush bmp mypattern.bmp | font | textのフォントとサイズ 例:font MS ゴシック 標準 12 | dfont | fontと同。ただしサイズはマップ単位(ダイナミックフォント) | symbol | symbolタイプ場合のシンボル名とサイズ | | 例:symbol 赤丸 20 | dsymbol | symbolと同。ただしサイズはマップ単位(ダイナミックシンボル) | appstyle | symbolline,symbolpolygonの場合のアプリケーションスタイル | | スタイル数のあとにその数分だけのスタイル名を続ける | | 例:appstyle 2 破線スタイル1 シンボルスタイル2 | | アプリケーションスタイルは[gdi $canvas.newstyle]コマンドであらかじめキャンバスに」作成 | | されている必要がある |
|
[戻る] gdi $layer.remove
|
gdi $layer.remove [$obj]
[return deleted]
$objを省略するとレイヤを削除します
レイヤに含まれるオブジェクトも全て削除します
gdi $layer.deleteと同じ機能です
リターン値はありません
$objを与えるとレイヤに含まれるオブジェクトを削除します
削除されたら1が返ります。失敗したら0が返ります。
レイヤハンドルが既知でかつオブジェクトの生存に確信が無いときに使用します
レイヤハンドルが不明でかつオブジェクトの存在が確定している時は
gdi $obj.remove
を使用してください
|
[戻る] gdi $layer.selection
|
gdi $layer.selection [$onoff]
セレクションの可否を変更します
onかoffを与えます
アーギュメントを省略すると現在の設定が0か1で返ります
|
[戻る] gdi $layer.symbol
|
gdi $layer.symbol
return symbol
レイヤの図形タイプがシンボル、シンボルライン、シンボルポリゴンの場合にのみ有効です
設定されているシンボルリソースハンドルを返します(symbolプロパティ)
ただしシンボルラインとシンボルポリゴンの場合にはappstyleが未設定の場合にだ
け有効です
|
[戻る] gdi $layer.type
|
gdi $layer.type
return type
レイヤの図形タイプを返します
リターンされる図形タイプ文字列
road
circle
arc
fan
string
polygon
text
areatext
symbol
symbolline
symbolpolygon
bmp
rectangle
square
view
オブジェクトから図形タイプを直接(レイヤハンドルを介さず)求めるには
gdi $obj.type
を使います。
|
[戻る] gdi $layer.tranceparent
|
gdi $layer.tranceparent $onoff
図形タイプがbmpのレイヤにのみ有効です
onかoffを与えてイメージの白部透明モードを変更します
|
[戻る] gdi $layer.zorder
|
gdi $layer.zorder $where [$originlayer]
レイヤ表示順を設定します
gdi $layer.zorder {bottom | top}
レイヤ表示順を最前面か最背面に設定します
bottom:レイヤを底面(最初に表示)に移動
top :レイヤを表面(最後に表示)に移動
gdi $layer.zorder {before | after} $originlayer
レイヤ表示順を指定レイヤの前後に設定します
before:$layerを$originlayerの前(先に表示)に移動
after :$layerを$originlayerの後(後に表示)に移動
|
[戻る] gdi $layer.objects
|
gdi $layer.objects [$protectionlevel]
return olist
レイヤ内のオブジェクトから指定レベルのプロテクション($protectionlevel)が設定
されているオブジェクトのみをオブジェクトリストに格納します
$protectionlevelを省略するか-1を与えるとすべてのオブジェクトを返します
|
[戻る] gdi $vlayer.canvas
|
gdi $vlayer.canvas
return canvas
レイヤのキャンバスハンドルを返します
|
[戻る] gdi $vlayer.delete
[戻る] gdi $vlayer.display
|
gdi $vlayer.display [on | off | -1]
return onoff
揮発レイヤの表示設定を変更します
-1 を与えると表示プロパティを無効にします(オブジェクトのレイヤ設定に従います)
現在の設定が整数(0|1)で返ります
|
[戻る] gdi $vlayer.import
|
gdi $vlayer.import $canvas
return vlayer
vlayerをcanvasにコピーし揮発レイヤハンドルを返します
旧[gdi $vlayer.copy $canvas] と同機能です
|
[戻る] gdi $vlayer.name
|
gdi $vlayer.name
return name
レイヤの名前を返します
|
[戻る] gdi $vlayer.propertyarray
|
gdi $vlayer.propertyarray *varname
レイヤのプロパティを配列変数にセットします
*varnameには配列変数名を与えます
配列要素がプロパティ名です
未定義のプロパティは配列にセットされません
配列変数はunsetしてから渡してください
例 gdi $layer.propertyarray prop
prop(rgb) ← "255 255 255"
prop(style) ← "dot"
prop(selection) ← "on"
下記のダイナミックプロパティ名は配列要素に存在しません
dwidth,dsymbol,dsymbolS,symbolE,dfont,dedge,dfont
ダイナミック値とスタティック値を持つプロパティの値は、最後に
"dynamic"か"static"いずれかのキーワードが付けられます
例えばfontの場合
prop(font) ← "{MS 明朝} 標準 24 static"
prop(font) ← "{MS 明朝} 標準 1000 dynamic"
尚、styleプロパティのduser/user、brushプロパティのdpattern/patternは存在します
prop(style) ← "duser 4 1000 200 1000 200"
|
[戻る] gdi $vlayer.property
|
gdi $vlayer.property $propertyname $value ....
return vlayer
揮発レイヤのプロパティをセットします
プロパティ名と値の組を必要なだけ与えます
揮発レイヤハンドルをオブジェクトのプロパティにセットすることにより表現スタイルを
変更することができます
与えたプロパティのみが本来のレイヤのプロパティと差し替わります
ただし白色を変更することはできません
プロパティと値の解説についてはgdi $layer.propertyを参照して下さい
|
[戻る] gdi $vlayer.remove
[戻る] gdi $vlayer.savemap
|
gdi $vlayer.savemap [$onoff]
return onoff
揮発レイヤをマップに保存する場合は$onoffに1を与えます
$onoffを省略すると現在値が返ります
揮発レイヤが作成されたとき、保存フラグは0です
揮発レイヤの保存とは、オブジェクトに揮発レイヤがアッタッチされて
いる場合、その揮発レイヤの名称をオブジェクトの属性として
マップに保存することです。保存されていればマップがロード
されるときオブジェクトに再アタッチされます
|
[戻る] gdi $vlayer.selection
|
gdi $vlayer.selection [on | off | -1]
return onoff
揮発レイヤのセレクション可能/禁止設定を変更します
-1 を与えるとこのプロパティを無効にします(オブジェクトのレイヤ設定に従います)
アーギュメントを省略すると現在の設定が整数で返ります
|
[戻る] gdi $vlayer.symbol
|
gdi $vlayer.symbol
return symbol
揮発レイヤに設定されているシンボルハンドルを返します(symbolプロパティ)
|
[戻る] gdi $obj.align
|
gdi $obj.align [$align]
return oldalign
AreTextの配置調整モードをセットします
元のモードが返ります
文字列は範囲をはみ出すとカットされます
$align
fit | 均等配置 | left | 左詰め | right | 右詰め | center | 中心 |
|
[戻る] gdi $obj.addxy
|
gdi $obj.addxy $x $y ....
return {num}
オブジェクトに頂点を追加します
頂点数が返ります
円、円弧、扇形、シンボル、テキストオブジェクトの場合、2点目以降の追加は無視さ
れます
プロテクトされているオブジェクトには働きません
|
[戻る] gdi $obj.addselection
|
gdi $obj.Addselection
return selectionlist
セレクションリスト(内部のオブジェクトリスト)へオブジェクトを追加します
オブジェクトリストであるセレクションリストが返ります
セレクションリストは削除不要です(試みても無視されます)
ただしオブジェクトのプロテクトが3に設定されている場合は拒否されます
|
[戻る] gdi $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)はポリゴンでなければなりません
|
[戻る] gdi $obj.angle2
|
gdi $obj.angle2
return angle
円弧、扇形オブジェクトの開き角度を返します
他のオブジェクトの場合は0.0を返します
|
[戻る] gdi $obj.angle
|
gdi $obj.angle
return angle
テキスト、シンボル、円弧、扇形の角度を返します
円弧、扇形の場合は開始角度を返します
他のオブジェクトの場合は0.0を返します
gdi $obj.angle $angle
テキスト、シンボルの角度を設定します
円弧、扇形の場合は開始角度を設定します
他のオブジェクトの場合は何もしません
プロテクトされているオブジェクトには働きません
gdi $obj.angle $sa $wa
円弧、扇形の開始角度、開き角度を設定します
他のオブジェクトの場合は何もしません
プロテクトされているオブジェクトには働きません
|
[戻る] gdi $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のみアーギュメントに与えるとスタイルパラメータのキャンセルになります
即ちレイヤ設定での描画になります
|
[戻る] gdi $obj.area
|
gdi $obj.area
return area
オブジェクトの面積を返します(内部単位)
ロード、ライン、シンボルライン、円弧の場合は0.0を返します
参考 gdi area
|
[戻る] gdi $obj.bmpcolor
|
gdi $obj.bmpcolor $index [$r $g $b]
return {r g b}
ビットマップオブジェクトの指定インデックスのカラーを設定します
カラーを与えなければ現在のカラーを返します
ビットマップオブジェクトでなければ何もしません
プロテクトされているオブジェクトはカラーを変更できません
|
[戻る] gdi $obj.brother
|
gdi $obj.brother
return olist
兄弟オブジェクトをオブジェクトリストで返します
返されたオブジェクトリストは呼び出し側で削除して下さい
$objがmdbオブジェクトの場合も有効です
|
[戻る] gdi $obj.canvas
|
gdi $obj.canvas
return canvas
オブジェクトのキャンバスを返します
|
[戻る] gdi $obj.cap
|
gdi $obj.cap $cap
return cap
ロードオブジェクトのキャップタイプを返します
ロードオブジェクトで無ければヌルを返します
プロテクトされているオブジェクトは変更できません
キャップタイプ
-1:未設定(レイヤ設定に従う)
0 :capなし
1 :始点cap
2 :終点cap
3 :始終点cap
|
[戻る] gdi $obj.centering
|
gdi $obj.centering
オブジェクトが中心になるようキャンバス表示範囲を変更します
表示スケールは変えません
自動再表示もしません
$objがmdbオブジェクトの場合はタイルマップが自動ロードされgdiオブジェクトを得てから実行します
|
[戻る] gdi $obj.center
|
gdi $obj.center
return {x y}
オブジェクトの中心座標{x y}を返します
現バージョンではレンジ中心です
重心は
lscan [eval gdi garea [gdi $obj.xy]] gx gy
で求めてください
|
[戻る] gdi $obj.check
|
gdi $obj.check [cross]
return {x1 y1 ... xn yn}
オブジェトのねじれ(辺の交差)をチェックして全ての交差点の座標リストを返します
交差点がない場合、または円、ビットマップ、円弧、扇形、テキストオブジェクトの場合 /// はヌル文字を返します
gdi $obj.check doublepoint
return {x1 y1 ... xn yn}
オブジェトの全ての2重頂点の座標リストを返します
2重頂点がない場合、または円、ビットマップ、円弧、扇形、テキストオブジェクトの場
合はヌル文字を返します
|
[戻る] gdi $obj.children
|
gdi $obj.children
return olist
子供オブジェクトをオブジェクトリストで返します
返されたオブジェクトリストは呼び出し側で削除して下さい
$objがmdbオブジェクトの場合も有効です
|
[戻る] gdi $obj.clock
|
gdi $obj.clock
return clock
ポリゴンの面方向を求める
時計回りならclock=1を、反時計回りなら-1を返します
参考 gdi clock
|
[戻る] gdi $obj.connect
|
gdi $obj.connect {start|end} [{selection|$olist}]
return olist
オブジェクト端点と接続するオブジェクトをオブジェクトリストで返します
第1アーギュメントにはstartかendを与えます
"start"を与えると始点接続、"end"を与えると終点接続
第2アーギュメントに"selection"を与えるとセレクション可のオブジェクトのみ対象となり、
$olistを与えると$olistのオブジェクトのみ対象となります
|
[戻る] gdi $obj.copyproperty
|
gdi $obj.copyproperty $obj2
obj2にobjのプロパティ(name,field,座標値)をコピーします
obj2の色塗り揮発レイヤはクリアされます
objとobj2はレイヤが異なっても良いが、図形タイプは同じであること
obj2がプロテクトされていたら何もしません
|
[戻る] gdi $obj.copy
|
gdi $obj.copy [$x $y]
return obj
始点がx,yの位置にobjのコピーを作成して新しいオブジェクトハンドルを返します
name,fieldもコピーされます
objに親がいても独立したオブジェクトになります(linkはコピーされません)
x y を省略すると完全なコピーオブジェクトを返します
色塗り揮発レイヤはクリアされます
|
[戻る] gdi $obj.cross
|
gdi $obj.cross [$olist]
return {$obj1 x1 y1 ... objn xn yn}
$objと辺が交差するオブジェクトとその座標を求めます
即ち$objの辺を切断するためのものです
$objの始終点が他の返上に乗っている時も交点とみなされます
対象はolistに含まれるオブジェクトです
olistを省略するとマップ全体(表示ON && セレクションON)が対象です
ただし非線形オブジェクトは除外されます
リターン値は交差しているオブジェクトハンドルと交点座標(計3要素)の繰り
返しです。
参照
gdi crossex
gdi cross
|
[戻る] gdi $obj.cutline
|
gdi $obj.cutline $index $x $y
return obj
ラインタイプのオブジェクトをindex番目の辺で分割して新しいオブジェクトハンドルを返し
ます
切断が失敗した場合は0が返ります
indexは1からです
新しいオブジェクトは終点側に生成されます
切断座標は与えられた座標がそのまま採用されます
// 即ち、切断座標が辺上になるような計算処理はしません
頂点でも切断可。ただし始終点での切断は許されません
新しいオブジェクトは$obj.copyと同じ処理がされます(座標を除き)
ポリゴンタイプのような、ラインタイプ以外のオブジェクトには何もしません
色塗り揮発レイヤはクリアされます
|
[戻る] gdi $obj.cutpoint
|
gdi $obj.cutpoint $index
return n
ラインタイプのオブジェクトをindex番目の頂点を削除します
indexは0からです
ラインを分割し新しいオブジェクトを作成するのはgdi $obj.cutlineです
色塗り揮発レイヤはクリアされます
|
[戻る] gdi $obj.deleteflag
[戻る] gdi $obj.delete
|
gdi $obj.delete $del_event $new_event
return num
オブジェクトを削除します
ただしclass::deleteイベントが1を返した場合だけです
削除したらUndoバッファに登録し、redoバッファをクリアします
削除された個数が返ります
$del_eventにはundoされた時のイベントプロシージャを与えます
$new_eventにはredoされた時のイベントプロシージャを与えます
いずれのイベントプロシージャも引数にオブジェクトハンドルが渡されます
|
[戻る] gdi $obj.dib
|
gdi $obj.dib
return dib
bmpタイプオブジェクトのDIBイメージハンドルを返します
DIBハンドルをTclBMP.DLLのGetDibInfo関数に渡すことによりイメージ情報を取得
することができます
また、TCL_RAS.DLLのrotation関数やtriming関数で回転、トリミング処理ができ /// ます
加工されたDIBイメージはbmpタイプオブジェクトに$obj.nameコマンドで再セットしたり、
BMZファイルに保存することなどもできます
このコマンド取得したDIBハンドルを破棄する処理はあり得ません
|
[戻る] gdi $obj.display
|
gdi $obj.display $xorswitch
xorswitchに1を与えるとオブジェクトを排他的論理和表示します
オブジェクトを非表示にしたいときに用います
通常表示されている場合、このコマンドの奇数回目のコールで非表示になり、偶数 /// 回目のコールで表示になります
ただし、他のオブジェクトが重なって表示されている場合は完全に非表示になら /// ない場合があります
このコマンドに類似した$obj.redrawは単なる再表示ですが、他のオブジェクトが重 /// なっていても正しく再表示されます
xorswitchに0を指定すると単なる再表示になります
|
[戻る] gdi $obj.dms
|
gdi $obj.dms $latitude1 $altitude1 ....
return n
経緯度座標をオブジェクトにセットします
頂点数を返します
gdi $obj.xy コマンドの経緯度単位バージョンです
このコマンドに先立ち、gdi $canvas.fitdmsxy が実行されていなければなりま /// せん
つまり線形投影パラメータが設定されている場合にのみ有効です
経緯度は秒に10のn乗倍して求めた整数です
ここで10のn乗値はgdi $canvas.fitdmsxy で第1アーギュメントにセットされた値で
す
|
[戻る] gdi $obj.edge
|
gdi $obj.edge [$edge]
return edge
道路タイプ(road)の道路縁幅をセットします
edgeを省略すると現在の幅を返します
道路タイプ以外のオブジェクトの場合は空文字を返します
|
[戻る] gdi $obj.erase
|
gdi $obj.erase
オブジェクトを表示OFFします
一時的ですので次の再描画時には表示されます
このコマンドはオブジェクトを削除する前にコールします
削除前に非表示にして削除したことを知らせる為です
|
[戻る] gdi $obj.family
|
gdi $obj.family
return olist
オブジェクトにリンクする全てのオブジェクトをオブジェクトリストで返します
自分自身もリストに含まれます
返されたオブジェクトリストは削除して下さい
$objがmdbオブジェクトの場合も有効です
|
[戻る] gdi $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コマンドで提供されます
|
[戻る] gdi $obj.field($index)
|
gdi $obj.field($index) [$val]
return field_value
index番目のフィールドに値valをセットします
valの漢字コードはShift-JISコードであるべきです
モード2以上でプロテクトされているオブジェクトには機能しません
値を省略すると現在値が返されます
この場合には、$objがmdbオブジェクトの場合も有効です
|
[戻る] gdi $obj.fielducs
|
gdi $obj.fielducs [$list]
return field_value
$listが省略されると現在のフィールド値をそのまま返します(Tclリスト)
この場合にはgdi $obj.fieldと全く同じ動作です。
$listを与える場合には、それらはUcsHexコードであること
オブジェクトフィールドには渡されたままのリストがセットされるが内部でUcsHexコードであ /// ることを意味するフラグが立ち、表示時に配慮されます
|
[戻る] gdi $obj.fieldutf
|
gdi $obj.fieldutf [$list]
gdi $obj.fielducsと同
互換性維持
|
[戻る] gdi $obj.field
|
gdi $obj.field [$list]
return field_value
$listが省略されると現在のフィールド値をそのまま返します(Tclリスト)
この場合には、$objがmdbオブジェクトの場合も有効です
$listが与えられるとオブジェクトフィールド値を変更します
モード2以上でプロテクトされているオブジェクトには機能しません
|
[戻る] gdi $obj.filetype
|
gdi $obj.fileType
return type
オブジェクトをロードしたファイル(リファレンスファイル)のタイプを返します
ただしアクティブオブジェクトの場合は空文字が返ります
|
[戻る] gdi $obj.file
|
gdi $obj.file
return filename
オブジェクトをロードしたファイル名(リファレンスファイル名)を返します
$objがmdbオブジェクトの場合も有効です
ただしアクティブオブジェクトの場合は空文字が返ります
アクティブオブジェクトとは、新規作成されたオブジェクトか、書き込みモードでロードされたファイルに含まれていたオブジェクト
|
[戻る] gdi $obj.fit
|
gdi $obj.fit
オブジェクトを画面全体に表示します
表示範囲は図形レンジから求められます
シンボルの場合は幅、高さ100000の範囲が表示されます
つまり、1ドットが1mmのマップ単位の場合にはシンボルを中心として100m範囲が表
示されます
結果を表示するにはgdi $canvas.redrawが必要です
|
[戻る] gdi $obj.flush
|
gdi $obj.flush $times
オブジェクトを点滅表示します
$timeには点滅回数を与えます
点滅は表示0.15秒、非表示0.1秒間隔で行われます
$objがmdbオブジェクトの場合はタイルマップが自動ロードされgdiオブジェクトを得てから実行します
|
[戻る] gdi $obj.free
|
gdi $obj.free
ビットマップオブジェクトのメモリイメージを一時的に解放します
再表示されるときに再ロードされます
|
[戻る] gdi $obj.gdi
|
gdi $obj.gdi
return gdiobj
gdiオブジェクトハンドルを返します
$objはmdbオブジェクトです
ただし$objがgdiオブジェクトであってもエラーにはなりません
|
[戻る] gdi $obj.getvlayer
|
gdi $obj.getvlayer
return vlayer
オブジェクトにセットされている揮発レイヤハンドルを返します
0が返れば揮発レイヤがセットされていないことを意味します
|
[戻る] gdi $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
|
[戻る] gdi $obj.insert
|
gdi $obj.insert $index $x $y
return n
頂点を挿入します
新頂点数が返ります
頂点数固定のオブジェクトに対しては無意味です
$indexは挿入後の頂点番号(0から現在の頂点数までの範囲)
$x $yは挿入頂点座標
既存頂点と同じ座標には挿入できません(2重頂点禁止)
また現在の頂点数が1の場合には無視されます
プロテクトオブジェクトには機能しません
|
[戻る] gdi $obj.inside
|
gdi $obj.inside $x $y
return inside
座標$x,$yの位置がオブジェクトの内部に含まれているか否かを返します
inside=1が返れば内部点、0が返れば外部点です
境界線上の場合は2が返ります
|
[戻る] gdi $obj.layername
|
gdi $obj.layername
return layername
オブジェクトのレイヤ名を返します
$objがmdbオブジェクトの場合も有効です
|
[戻る] gdi $obj.layer
|
gdi $obj.layer [$layer]
return {layer|obj}
$layerを省略するとオブジェクトのレイヤハンドルを返します
レイヤハンドル$layerを与えると、オブジェクトをそのレイヤに移動します
移動先は原則的に同じ図形タイプのレイヤでなければなりません
図形タイプが異なっていてもエラーではありません
図形タイプが異なった場合には元オブジェクトは削除され新しいオブジェクトハンドルが返ります
プロテクトオブジェクトには機能しません
|
[戻る] gdi $obj.length
|
gdi $obj.length
return length
オブジェクトの長さを実数値で返します
シンボル以外の全てのオブジェクトが値を返します
シンボルの場合には0.0が返ります
|
[戻る] gdi $obj.link
|
gdi $obj.link $parentobj
オブジェクトリンクを作成します
$objは$parentobjの子供になります
|
[戻る] gdi $obj.logdelete
|
gdi $obj.logdelete $event $arg1 ...
return success
ログファイルにオブジェクト削除を記録します
成功したら1、失敗したら0が返ります
このコマンドを使用する際はログファイルが作成されている必要があります
ログファイルを作成するコマンドは
gdi $canvas.logcreate $filename
です
オブジェクトを削除する直前に実行します
$eventは、オブジェクトを削除する時に実行するイベントプロシージャ名です
$arg1 ... はイベントプロシージャのアーギュメントです
|
[戻る] gdi $obj.lognew
|
gdi $obj.lognew $event $arg1 ...
return success
ログファイルにオブジェクトが作成されたことを記録します
成功したら1、失敗したら0が返ります
このコマンドを使用する際はログファイルが作成されている必要があります
ログファイルを作成するコマンドは
gdi $canvas.logcreate $filename
です
オブジェクトが作成され座標や属性のセットが完了してから実行します
$eventは、オブジェクトが作成されたときに実行したイベントプロシージャ名です
$arg1 ... はイベントプロシージャのアーギュメントです
|
[戻る] gdi $obj.log
|
gdi $obj.log $event $arg1 ...
return success
ログファイルにオブジェクト修正を記録します
成功したら1、失敗したら0が返ります
このコマンドを使用する際はログファイルが作成されている必要があります
ログファイルを作成するコマンドは
gdi $canvas.logcreate $filename
です
オブジェクト修正が完了した直後に実行します
$eventは、オブジェクトが修正されたときに実行したイベントプロシージャ名です
$arg1 ... はイベントプロシージャのアーギュメントです
|
[戻る] gdi $obj.maxid
[戻る] gdi $obj.move
|
gdi $obj.move $x $y
return n
オブジェクトの始点が($x,$y)になる位置に移動します
頂点数を返します
プロテクトオブジェクトには機能しません
|
[戻る] gdi $obj.mask
|
gdi $obj.mask $scale $dpi $edge
return {dib xmin ymin xmax ymax}
areatext,text,symbolオブジェクトの黒マスクイメージを作成します
$scaleには印刷縮尺を与えます 例: [expr 1/2500.0]
$dpiには印刷時のdpiを与えます
$edgeには印刷時の膨張輪郭幅をmm単位で与えます
dibハンドルとマスクサイズのリストを返します
dibハンドルをビットマップオブジェクトに与え、そのビットマップオブジェクトは
マスク元オブジェクトの下層に表示します
ビットマップオブジェクトはtranceparent=mask表示レイヤにします
|
[戻る] gdi $obj.nameucs
|
gdi $obj.nameucs [$name]
return name
$nameが省略されると現在のname値をそのまま返します。
この場合にはgdi $obj.nameと全く同じ動作です。
$nameを与えるとname値を変更します(プロテクトオブジェクトには機能しません)
$nameを与える場合には、それらはUcsHexコードであること
オブジェクトには渡されたままの文字列がセットされるが内部でUcsHexコードである
ことを意味するフラグが立ち、表示時に配慮されます
|
[戻る] gdi $obj.name
|
gdi $obj.name [$name]
return 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値は属性の一部です
クエリ
name値へのクエリコマンドが独立して提供されています
参照
gdi $olist.queryname
gdi $olist.querynameinclude
gdi $olist.querynameglob
gdi $olist.querynamefirst
gdi $olist.querynameall
|
[戻る] gdi $obj.near
|
gdi $obj.near $x $y $distance
return {index x y}
オブジェクトが指定点($x,$y)から$distance以内に有るか否かを返します
離れていれば空文字を返します
範囲内ならば{index x y}リストを返します
index : 最近傍辺番号(0から)
x y : 指定点から辺に降ろした垂線との交点座標
|
[戻る] gdi $obj.num
|
gdi $obj.num
return n
頂点数を返します
|
[戻る] gdi $obj.paint
|
gdi $obj.paint [{$vlay|?}]
一時着色用の揮発レイヤをセット/リセットします
$vlayに0を与えるか省略するとリセットします
$vlayに-1を与えるとオブジェクトは非表示になります。
オブジェクトの揮発レイヤにはプライマリ/セカンダリの2つがあります
このコマンドは基本的にセカンダリ揮発レイヤを操作します
しかし、オブジェクトにプライマリ揮発レイヤがセットされていなければ
プライマリ揮発レイヤを操作します
もしオブジェクトがセレクションされているとセレクション表示を一時的に変更する
処理になります。セレクションが解除されると元に戻されます。
参照:gdi $canvas.selection.color}
セット/リセット時に返される値はプライマリ揮発レイヤハンドルです
従って返り値が$vlayと等しければ着色用の揮発レイヤがプライマリ
揮発レイヤにセットされたことが分かります
$vlayに"?"を与えると現在のセカンダリ揮発レイヤハンドルを返します
オブジェクトがセレクションされていると、返される揮発レイヤはセレクション
表示用の揮発レイヤである場合があります
プライマリ揮発レイヤへのアクセスはgdi $obj.vlayerコマンドです
|
[戻る] gdi $obj.parents
|
gdi $obj.parents
return olist
リンクを辿り全ての親オブジェクトをオブジェクトリストで返します
オブジェクトリストは使用後削除して下さい
$objがmdbオブジェクトの場合も有効です
|
[戻る] gdi $obj.parent
|
gdi $obj.parent
return obj
親オブジェクトを返します
複数の親がいる場合、最後に親とされたオブジェクトが返ります
$objがmdbオブジェクトの場合も有効です
|
[戻る] gdi $obj.pixel2xy
|
gdi $obj.pixel2xy $px $py
return {x y}
ビットマップオブジェクトのラスタ座標(px,py)をマップ座標(x,y)に変換します
{x y}リストが返ります
|
[戻る] gdi $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}
ポリゴンオブジェクト領域で座標アーギュメントで与えられたラインをクリッピングします
クリッピング結果として線分座標値リストを返します
空リストが返れば内部に含まれる辺がないことを意味します
|
[戻る] gdi $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です。
|
[戻る] gdi $obj.pushafter
|
gdi $obj.pushAfter [$event]
return success
変更後のオブジェクトをUndoバッファに積みます
eventにはUndoされた後に実行するイベントスクリプトを与えます
このイベントスクリプトは変更の際に実行されるものと同じです
スクリプトはTclリスト形式で、先頭要素がコマンド名、以降の要素がアーギュメントです
Redoのときには、コマンド名の次ぎにオブジェクトハンドルが挿入されて実行されます
従ってコマンドは第一アーギュメントにオブジェクトハンドルを受け取るものとして定義され
ている必要があります
eventは省略可能です
PushBeforeした後に修正し、その直後にPushAfterをコールしてください
尚、オブジェクトの更新日付が自動セットされます
gdi $obj.pushbefore参照
|
[戻る] gdi $obj.pushbefore
|
gdi $obj.pushBefore [$event]
return success
変更前のオブジェクトをUndoバッファに積みます
eventにはUndo後Redoされた時に実行するスクリプトを与えます
このスクリプトは変更が戻される時に実行されるものなので、移動などの場合には、
変更の際に実行されたスクリプトとアーギュメントが逆の値(符号逆転)を与えます。
スクリプトはTclリスト形式で、先頭要素がコマンド名、以降の要素がアーギュメントです
Redoのときには、コマンド名の次ぎにオブジェクトハンドルが挿入されて実行されます
従ってコマンドは第一アーギュメントにオブジェクトハンドルを受け取るものとして定義され
ている必要があります
eventは省略可能です
PushBeforeした後に修正し、その直後にPushAfterをコールしてください
gdi $obj.pushafter参照
|
[戻る] gdi $obj.pushcreateobj
|
gdi $obj.pushCreateObj [$new_event [$del_event]]
return success
新規作成されたオブジェクトをUndoバッファに積みます
尚、オブジェクトの作成日付が自動セットされます
|
[戻る] gdi $obj.rectclip
|
gdi $obj.rectclip $stringobj
return {L1xs L1ys L1xe L1ye L2xs L2ys... Lnxe Lnye}
オブジェクトレンジで線形オブジェクトをクリッピングします
クリッピング結果として線分列座標値リストを返します
空リストが返れば内部に含まれる辺がないことを意味します
gdi $obj.rectclip $x1 $y1 ...
return {L1xs L1ys L1xe L1ye L2xs L2ys... Lnxe Lnye}
オブジェクトレンジでで座標アーギュメントで与えられたラインをクリッピングします
クリッピング結果として線分列座標値リストを返します
空リストが返れば内部に含まれる辺がないことを意味します
|
[戻る] gdi $obj.rect
|
gdi $obj.rect
return: {xmin ymin xmax ymax}
gdi $obj.rangeと同じです
旧バージョンとの互換性のため残されています
|
[戻る] gdi $obj.radius
|
gdi $obj.radius [$radius]
return radius
円、円弧、扇形の半径を返します
$radiusが与えられると半径を変更します
半径を持たないオブジェクトに対しては何もしません(空文字を返します)
プロテクトオブジェクトの半径は変更出来ません
|
[戻る] gdi $obj.range
|
gdi $obj.range
return: {xmin ymin xmax ymax}
オブジェクトのレンジを返します
レンジとはオブジェクト全体を囲む最小の矩形範囲です
$objがmdbオブジェクトの場合も有効です
|
[戻る] gdi $obj.referenceid
|
gdi $obj.referenceID [$id]
return referenceid
オブジェクトのリファレンスIDを返します
0が返ればオブジェクトはアクティブオブジェクトです
$idを与えるとリファレンスIDをセットします
その時、IDも更新されます
|
[戻る] gdi $obj.reference
|
gdi $obj.reference [$notsave]
return {1 | 0}
オブジェクトがリファレンスオブジェクトであるか否かを返します
1が返ればリファレンスオブジェクト、0が返ればアクティブオブジェクトです
リファレンスオブジェクトとは、gdi $canvas.loadrefmapコマンドで参照用としてファイルか
らロードされたオブジェクトです
これらのオブジェクトはファイルに保存されません
修正が可能で、ファイルに保存できるオブジェクトがアクティブオブジェクトです
gdi $canvas.loadmapコマンドでロードされたか、新規入力されたオブジェクトです
アーギュメントに1を与えると擬似的にリファレンスオブジェクトにすることができます
ただしアクティブオブジェクトに対してのみ有効です
保存したくない場合などに擬似的リファレンスオブジェクトにします
アーギュメントに0を与えると擬似的にリファレンスオブジェクトにされていたオブジェクトをアクティブ
に戻します
リファレンス編集可能モードの時はリファレンスオブジェクトでも0が返ります
参照: gdi $canvas.editreference
|
[戻る] gdi $obj.redraw
|
gdi $obj.redraw
オブジェクトを再描画します
実際にはオブジェクトのレンジ全体を再描画します
|
[戻る] gdi $obj.remove
|
gdi $obj.remove
オブジェクトを削除します(Undoできない削除です)
削除しても再表示コマンドを実行しませんと確認できません
キャンバス全体を再表示すると効率が悪いので下記のように処理します
gdi $obj.erase
gdi $obj.remove
つまり先に非表示にします
プロテクトオブジェクトには機能しません
|
[戻る] gdi $obj.reverse
|
gdi $obj.reverse
オブジェクトの座標順を反転します
ポリゴンや線形タイプオブジェクトにのみ有効です
プロテクトオブジェクトには機能しません
|
[戻る] gdi $obj.root
|
gdi $obj.root
return obj
リンクを辿り、最上位の親オブジェクトを返します
親が居なければ0を返します
$objがmdbオブジェクトの場合も有効です
|
[戻る] gdi $obj.rotatecopy
|
gdi $obj.rotatecopy $x $y $ang
return newobj
($x,$y)を中心にして$ang度回転したコピーオブジェクトを返します
色塗り揮発レイヤはクリアされます
|
[戻る] gdi $obj.rotate
|
gdi $obj.rotate $x $y $ang
オブジェクトを($x,$y)を中心にして$ang度回転します
プロテクトオブジェクトには働きません
|
[戻る] gdi $obj.scalecopy
|
gdi $obj.scalecopy $x $y $sx $sy
return newobj
($x,$y)を中心にしてx方向に$sx倍、y方向に$sy倍したコピーオブジェクトを返し
ます
色塗り揮発レイヤはクリアされます
|
[戻る] gdi $obj.scaling
|
gdi $obj.scaling $x $y $sx $sy
オブジェクトを($x,$y)を中心にしてx方向に$sx倍、y方向に$sy倍します
プロテクトオブジェクトには働きません
|
[戻る] gdi $obj.source
|
gdi $obj.source [$canvas]
return canvas
viewオブジェクトが表示するマップを開いているキャンバス(ソースキャンバス)を設定します
アーギュメントを省略すると現在値(キャンバスハンドル)を返します
参照 gdi $obj.view
|
[戻る] gdi $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
|
[戻る] gdi $obj.unlink
|
gdi $obj.unlink
オブジェクトのリンクを解除します
プロテクトオブジェクトには働きません
|
[戻る] gdi $obj.update
|
gdi $obj.update [set]
オブジェクトの修正時刻を秒で返します
このプロパティはgdi $obj.pushafterコマンドが実行されるとセットされます
アプリケーションから強制的にセットしたい場合は何らかのアーギュメントを与えます
例えば"set"を与えて下さい
|
[戻る] gdi $obj.view
|
gdi $obj.view [$xmin $ymin $xmax $ymax [wms]]
return {xmin ymin xmax ymax}
viewオブジェクトの表示範囲(マップ座標)を設定します
プロテクトオブジェクトは設定できません
アーギュメントを省略すると現在値を返します
※viewオブジェクトの大きさが変更されると表示範囲は自動調節されます
自動調節は中心維持、スケール維持で行われます
参照 gdi $obj.source
|
[戻る] gdi $obj.vlayer
|
gdi $obj.vlayer [{$vlayer|?}]
return $vlayer
揮発レイヤ($vlayer)をアーギュメントに与えるとオブジェクトの表示が変更されます
このコマンドはオブジェクトのプライマリ揮発レイヤを変更します。
セカンダリ揮発レイヤ(着色用)は無条件にクリアされます
$vlayerに0を与えるか省略すると解除になります
$vlayerに-1を与えると「非表示」指定になります
ただし-1はセカンダリ揮発レイヤにセットされます
したがって非表示設定は[gdi $obj.paint -1]を使用すべきです
このコマンドは恒久的な(マップを閉じるまで)表示変更の為に用いられます
一時的な着色を行う場合には[gdi $obj.paint]コマンドを使用して下さい
セレクションされているオブジェクトにこのコマンドを使うべきではありません
このコマンドで設定した揮発レイヤのsavemapフラグが立っている場合には
プライマリ揮発レイヤはマップに保存され、ロード時に再アタッチが試みられます。
(非表示設定は保存されません)
$vlayerに"?"を与えると現在値を返します
オブジェクトがセレクションされていると、返される揮発レイヤはセレクション
表示用の揮発レイヤである場合があります。
このコマンドにオブジェクトプロテクションは関与しません
|
[戻る] gdi $obj.width
|
gdi $obj.width [$width]
return width
道路、円弧オブジェクトにのみ有効です
$widthを省略すると現在の幅(厚さ)が返ります
$widthを与えると道路幅、円弧の厚さを変更します
プロテクトオブジェクトは変更できません
|
[戻る] gdi $obj.xy($i)
|
gdi $obj.xy($i) [$x $y]
return {x y}
アーギュメントを省略するとオブジェクトのi番目の座標値を返します
この場合には、$objがmdbオブジェクトの場合も有効です
iは0からです
$x $yを与えると座標値を変更します
プロテクトされたオブジェクトは変更出来ません
|
[戻る] gdi $obj.x($i)
|
gdi $obj.x($i) [$x]
return x
オブジェクトのi番目のx座標値を返します
iは0から
$xを与えるとi番目のx座標値を変更します
ただしこの使い方は推奨されません。座標はx,yペアで与えるべきものなの
で[{gdi $obj.xy($i)} $x $y]を使用して下さい
プロテクトされたオブジェクトは変更出来ません
|
[戻る] gdi $obj.xy2pixel
|
gdi $obj.xy2pixel $px $py
return {x y}
ビットマップオブジェクトのイメージ座標(ピクセル座標)をマップ座標に変換して返します
$px,$pyはイメージデータサイズ外でも構いません(例えば負数)
オブジェクトがビットマップオブジェクトでない場合には与えた座標がそのまま返りま
す
|
[戻る] gdi $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がオブジェクトにセットされていなければ戻 | | | り値リストに現れません |
|
[戻る] gdi $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頂点座標が返り
ます
半径や角度など、座標以外の幾何情報の取得、設定にはそれぞれにコマンドが
用意されているのでそれらを使用して下さい
|
[戻る] gdi $obj.y($i)
|
gdi $obj.y($i) [$y]
return y
オブジェクトのi番目のy座標値を返します
iは0から
$yを与えるとi番目のy座標値を変更します
ただしこの使い方は推奨されません。座標はx,yペアで与えるべきものなの
で[{gdi $obj.xy($i)} $x $y]を使用して下さい
プロテクトされたオブジェクトは変更出来ません
|
[戻る] gdi $olist.and
|
gdi $olist.and $olist1 ...
return olist
オブジェクトリストolistとアーギュメントに与えられたオブジェクトリストに共通に含まれるオブジェクト
を新しいオブジェクトリストハンドルで返します
$olistがmdbリストの場合も有効です。その場合mdbリストが返ります。
|
[戻る] gdi $olist.addselection
|
gdi $olist.AddSelection
return olist
オブジェクトリストに含まれるオブジェクトをセレクションリストに追加します
セレクションリストハンドルを返します
|
[戻る] gdi $olist.append
|
gdi $olist.append $obj ...
return olist
オブジェクトリストにオブジェクトを追加します
同じオブジェクトリストを返します
オブジェクトリストを追加する場合はgdi $olist.mergeを使います
$olistがmdbリストの場合も有効です。ただしその場合には$objもmdbオブジェクトでなければなりません
|
[戻る] gdi $olist.canvas
|
gdi $olist.canvas
return canvas
オブジェクトリストが所属するキャンバスを返します
|
[戻る] gdi $olist.clear
|
gdi $olist.clear
return num
オブジェクトリストをクリアします
クリアされたオブジェクト数が返ります
|
[戻る] gdi $olist.clip
|
gdi $olist.clip copy [$new_event [$del_event]]
gdi $olist.clip cut [$new_event [$del_event]]
return num
オブジェクトリストに含まれるオブジェクトをクリップボードにコピー/カットします
オブジェクトの個数が返ります
クリップボードはWindowsのそれではなく、gdiのクリップボードです
|
[戻る] gdi $olist.cross
|
gdi $olist.cross [$guiname] [$format]
return {obj1 obj2 x y ....}
オブジェクトリスト内で互いに交差するオブジェクトを探し交差した両オブジェクトの
オブジェクトハンドルと交点座標をTclリストで返します
例えば交点が2カ所あれば8要素のリストが返ります
guiname とformatには途中経過を表示したい場合にguiコントロール名と表示
フォーマット(c言語の整数タイプ置換フォーマット)を与えます
|
[戻る] gdi $olist.data
|
gdi $olist.data $obj [$data]
return data
オブジェクトリストに含まれるオブジェクトのデータを参照します
-99が返るとデータが無いことを意味します
$data与えると変更します
成功すると同じ値が返ります
失敗すると$dataから99を減じた値が返ります
|
[戻る] gdi $olist.eraseobj
|
gdi $olist.eraseobj
オブジェクトリストに含まれるオブジェクトを一時的に非表示にします
(削除するのではありません)
|
[戻る] gdi $olist.flash
|
gdi $olist.flash $times
オブジェクトリストを点滅表示します
$timeには点滅回数を与えます
点滅は表示0.15秒、非表示0.1秒間隔
|
[戻る] gdi $olist.protection
|
gdi $olist.protection $protection
return num
オブジェクトリストに含まれるオブジェクトのプロテクトを変更します
$protection には0,1,2,3のいずれかを与えます
gdi $obj.protectionを参照
|
[戻る] gdi $olist.queryxy
|
gdi $olist.queryXY
return obj
オブジェクトリストに含まれるオブジェクトを始点座標で検索し
合致した最初のオブジェクトを返します
参照
gdi $canvas.queryxy
|
[戻る] gdi $olist.removeobj
|
gdi $olist.removeobj
return num
オブジェクトリストに含まれるオブジェクトを削除します
削除した個数を返します
Undoが効かない削除です
|
[戻る] gdi $olist.deleteobj
|
gdi $olist.deleteobj [$del_event [$new_event]]
return num
リスト内オブジェクトを削除します
ただしdeleteイベントが1を返した場合だけです
削除したらUndoバッファに登録し、redoバッファをクリアします
削除された個数が返ります
|
[戻る] gdi $olist.lock
[戻る] gdi $olist.unlock
|
gdi $olist.unlock
オブジェクトリストのロックを解除します
オブジェクトリストが削除できるようになります
$olistがmdbリストの場合も有効です。
参照:gdi $olist.lock
|
[戻る] gdi $olist.delete
|
gdi $olist.delete
return refcount
参照カウンタが0ならオブジェクトリストを削除します
0以外なら参照カウンタを減じます
参照カウンタ値を返します
-1が返れば削除されたことを意味します
オブジェクトリストがロックされている場合は何もしません
$olistがmdbリストの場合も有効です。
参照:gdi $olist.incref
|
[戻る] gdi $olist.compress
|
gdi $olist.compress
オブジェクトリストを圧縮します
圧縮後のオブジェクト数を返します
|
[戻る] gdi $olist.incref
|
gdi $olist.incref
参照カウンターをアップします
アップ後の参照カウンタ値を返します
オブジェクトリストがロックされている場合は何もしません
$olistがmdbリストの場合も有効です。
参照:gdi $olist.delete
|
[戻る] gdi $olist.sort
|
gdi $olist.sort
オブジェクトリストをレイヤでソートします
オブジェクト数を返します
|
[戻る] gdi $olist.unique
|
gdi $olist.unique
オブジェクトリストから重複するオブジェクトを除去します
オブジェクト数を返します
|
[戻る] gdi $olist.exists
|
gdi $olist.exists $obj
return true
オブジェクトリストに$objが含まれているかを調べます
含まれていれば1を返します
|
[戻る] gdi $olist.find
|
gdi $olist.find $obj
return index
オブジェクトリストに$objが含まれているかを調べます
含まれていればindexを返します
|
[戻る] gdi $olist.inobj
|
gdi $olist.InObj $obj
return olist
オブジェクトリストを調べ、渡されたオブジェクト(obj)の中に一部でも含まれる
オブジェクトを新しいオブジェクトリストで返します
|
[戻る] gdi $olist.insideobj
|
gdi $olist.InsideObj $obj
return olist
オブジェクトリストを調べ、渡されたオブジェクト(obj)の中に完全に含まれる
オブジェクトを新しいオブジェクトリストで返します
|
[戻る] gdi $olist.inpolygon
|
gdi $olist.InPolygon $x1 $y1...
return olist
オブジェクトリストを調べ、座標値で指定された領域中に一部でも
含まれるオブジェクトを新しいオブジェクトリストで返します
|
[戻る] gdi $olist.insidepolygon
|
gdi $olist.InsidePolygon $x1 $y1...
return olist
オブジェクトリストを調べ、座標値で指定された領域中に完全に含まれる
オブジェクトを新しいオブジェクトリストで返します
|
[戻る] gdi $olist.copy
|
gdi $olist.copy
return newlist
オブジェクトリストのコピーを返します
$olistがmdbリストの場合も有効です。その場合mdbリストが返ります。
|
[戻る] gdi $olist.merge
|
gdi $olist.merge $olist1 ...
return olist
オブジェクトリスト(olist)にオブジェクトリスト(olist1 ...)のオブジェクトをマージします
同じオブジェクトリストが返ります。ユニーク処理が行われます。
$olistがmdbリストの場合も有効です。ただしユニーク処理は行われません。
mdbリストでユニーク処理を伴うmergeは{mdb $olist.or}で行います
gdi lmerge $olist1 $olist2 ... コマンドを使うとマージされた結果が新しい
オブジェクトリストで返されます
オブジェクトを追加する場合はgdi $olist.appendを使います
|
[戻る] gdi $olist.nearline
|
gdi $olist.nearline $x $y $distance
return {obj x y}
指定した位置(x,y)から指定距離内(distance)にありかつ最短距離
のオブジェクトを検索し、オブジェクトハンドルと座標値のTclリストで返します
検索はオブジェクトの辺に降ろした垂線の長さで判定されます
返される座標は垂線との交点座標です(最寄りの座標)
指定範囲内にある頂点も検索されます
現バージョンでは円は検索しません
円弧、扇形の場合、リターンされる座標はおよその位置です
|
[戻る] gdi $olist.nearnode
|
gdi $olist.nearnode $x $y $distance
return olist
指定した位置(x,y)から指定距離内(distance)に頂点があるオブジェクト
(オブジェクトリストの中)を検索し、オブジェクトリストにその頂点番号とともに
格納して返します
頂点番号はgdi $olist.nodeコマンドで取り出すことができます
|
[戻る] gdi $olist.node
|
gdi $olist.node $index
return no
オブジェクトリストにindex番目に格納されているオブジェクトの頂点番号を取り出します
オブジェクトリストはgdi $olist.nearnodeコマンドで作成されたものに限ります
indexは0からです
|
[戻る] gdi $olist.num
|
gdi $olist.num
return num
オブジェクトリストに格納されているオブジェクトの個数を返します
$olistがmdbリストの場合も有効です。
|
[戻る] gdi $olist.obj
|
gdi $olist.obj $index
return obj
オブジェクトリストにindex番目に格納されているオブジェクトのハンドルを返します
indexは0からです
$olistがmdbリストの場合も有効です
|
[戻る] gdi $olist.pushafter
|
gdi $olist.PushAfter $event
return num
Undoバッファに修正後のオブジェクトを登録します
登録されたオブジェクトの個数が返ります
eventにはこのオブジェクトがRedoにより再生されるときに実行する
Tclプロシージャをアーギュメント込みで指定します
ただしアーギュメントからオブジェクトは除外して与えます
修正前のオブジェクトを登録するのはgdi $olist.pushbeforeです
このコマンドとペアで使用されます
|
[戻る] gdi $olist.pushbefore
|
gdi $olist.PushBefore $event
return num
Undoバッファに修正前のオブジェクトを登録します
登録されたオブジェクトの個数が返ります
eventにはこのオブジェクトがUndoにより戻されるときに実行する
Tclプロシージャをアーギュメント込みで指定します
ただしアーギュメントからオブジェクトは除外して与えます
修正後のオブジェクトを登録するのはgdi $olist.pushafterです
このコマンドとペアで使用されます
|
[戻る] gdi $olist.pushnew
|
gdi $olist.PushNew [$new_event [$del_event]]
return num
Undoバッファに新規作成オブジェクトを登録します
登録されたオブジェクトの個数が返ります
|
[戻る] gdi $olist.queryfield
|
gdi $olist.QueryField $index $val [$ope]
フィールド値での検索
opeを省略すると正規表現での検索(文字列検索)、
opeを与えると数値比較での検索を行います
ただし、opeに"not"を与えると正規表現での検索結果の偽を採用します
index | 属性項目番号 0から | val | 比較数値または正規表現文字列 | | 数値の場合(opeが指定された場合)、下記の比較演算子(ope)の | | 右辺値を与えます | | (field_val ope val) | ope | = | | > | | >= | | < | | <= | | != | | not 正規表現での評価の偽を採用 | | 省略 正規表現で評価 |
|
[戻る] gdi $olist.queryid
|
gdi $olist.QueryID $id
return obj
オブジェクトリストからIDでオブジェクトを検索します
オブジェクトハンドルが返されます
発見できなかった場合には0が返ります
|
[戻る] gdi $olist.querynameall
|
gdi $olist.QueryNameAll $name
return olist
nameフィールド値の完全一致検索
検索結果はオブジェクトリストで返される
|
[戻る] gdi $olist.querynamefirst
|
gdi $olist.QueryNameFirst $name
return olist
nameフィールド値の先頭一致検索
検索結果はオブジェクトリストで返される
|
[戻る] gdi $olist.querynameglob
|
gdi $olist.QueryNameGlob $name
return olist
nameフィールド値のGlob形式検索
検索結果はオブジェクトリストで返される
|
[戻る] gdi $olist.querynameinclude
|
gdi $olist.QueryNameInclude $name
return olist
nameフィールド値の部分一致検索
検索結果はオブジェクトリストで返される
|
[戻る] gdi $olist.queryname
|
gdi $olist.QueryName $name [$ope]
return olist
nameフィールド値で検索する
検索結果はオブジェクトリストで返される
name : 比較数値または正規表現文字列
ope : 数値比較の場合はopeに比較演算子を与える
opeを省略するとnameは正規表現とみなされ正規表現による文字列比較が行われる
ただしopeに"not"を与えると正規表現評価の「偽」が「真」とみなされる
ope 数値比較演算子(左辺がオブジェクト値、右辺が比較数値)
"=" ">" ">=" "<" "<=" "!="
|
[戻る] gdi $olist.queryobj
|
gdi $olist.QueryObj $obj
return true
オブジェクトリスト(olist)にオブジェクト(obj)が含まれているかを調べます
含まれていれば1を、含まれていなければ0を返します
$olistがmdbリストの場合も有効です
|
[戻る] gdi $olist.range
|
gdi $olist.range
return {xmin ymin xmax ymax}
オブジェクトリストを包含する最小範囲(レンジ)座標
を座標リストで返します
$olistがmdbリストの場合も有効です。
|
[戻る] gdi $olist.redraw
|
gdi $olist.redraw
オブジェクトリストを再描画します
|
[戻る] gdi $olist.reverse
|
gdi $olist.reverse
オブジェクトリスト内のオブジェクトの座標順を反転します
|
[戻る] gdi $olist.savemapxy
|
gdi $olist.SaveMapXY $fname [$maptype]
return success
オブジェクトリストのオブジェクトを保存します
座標値は内部XY座標値で格納されます
fnameにはファイル名、maptypeにはマップ種別文字列を与えます
マップ種別はユーザーが自由に命名できます(32文字以内)
|
[戻る] gdi $olist.savemap
|
gdi $olist.SaveMap $fname [$maptype]
return success
オブジェクトリストのオブジェクトを保存します
座標値は経緯度で格納されます
fnameにはファイル名、maptypeにはマップ種別文字列を与えます
マップ種別はユーザーが自由に命名できます(32文字以内)
|
[戻る] gdi $olist.subst
|
gdi $olist.subst {$obj|$olist2}
return num
オブジェクトobjをブジェクトリストolistから除外します
またはolist2のオブジェクトをolistから除外します
除外後のオブジェクト数が返ります
$olistがmdbリストの場合も有効です。ただしその場合には$obj,$olistもmdbオブジェクトでなければなりません
|
[戻る] gdi $olist.type
|
gdi $olist.type
return type
オブジェクトリストのタイプを返します
"gdi"か"mdb"が返ります
|
[戻る] gdi $olist.xor
|
gdi $olist.xor $olist1 ...
return olist
複数のオブジェクトリストに重複していないオブジェクトのみを抽出し
その結果を新しいリストにセットします
$olistがmdbリストの場合も有効です。その場合mdbリストが返ります。
|
[戻る] gdi $olist.savetilexy
|
gdi $olist.SaveTileXY $fname $xmin $ymin $xmax $ymax [$mapname]
return success
指定範囲内のオブジェクトを内部座標のままタイルマップファイルに保存します。
olistに含まれるオブジェクトが対象になります
fnameは保存ファイル名です
xmin ymin xmax ymax で矩形範囲を指定します
maptype はマップタイプです。省略可能です
保存したオブジェクト数がかえります
保存オブジェクトが無かった場合はファイルも作成されません
矩形境界のオブジェクトはBREC_CLONEレコードとともに保存されます
矩形外のオブジェクトでも内部オブジェクトとリンクしていれば保存されます
|
[戻る] gdi $olist.savetile
|
gdi $olist.SaveTile $fname $xmin $ymin $xmax $ymax [$mapname]
return num
指定範囲内のオブジェクトを経緯度座標でタイルマップファイルに保存します。
olistに含まれるオブジェクトが対象になります
fnameは保存ファイル名です
xmin ymin xmax ymax で矩形範囲を指定します
maptype はマップタイプです。省略可能です
保存したオブジェクト数がかえります
保存オブジェクトが無かった場合はファイルも作成されません
矩形境界のオブジェクトはBREC_CLONEレコードとともに保存されます
矩形外のオブジェクトでも内部オブジェクトとリンクしていれば保存されます
|
[戻る] gdi $olist.where
|
gdi $olist.where $exp
return olist
オブジェクトリストにコレクションされているデータオブジェクトをスキャンし、条件に適合しないオブジェクトを除外します
$olistがmdbリストの場合も有効です
$expにはクエリ式を与えます
クエリ式はTclのifコマンドの条件式と同じ機能、書式です(必ず { } で挟んで下さい)。
この条件式には、オブジェクトの属性値をインデックスで指定できます。
属性インデックスは番号の前に#を付けます。
インデックス番号は変数も使えます(コマンド置換ではインデックスを指定できません)
条件式を省略するか空文字を与えると全てを抽出する指定になります。
例
40番目のフィールド値が10.0より大なるオブジェクト抽出
set olist [gdi $olist.where {#40>10.0} ]
「1番目のフィールド値が"K"からはじまる」
set olist [gdi $olist.where {[regexp ^K #1]} ]
フィールドインデックスを変数で指定
set olist [gdi $olist.where {[regexp ^K #$KNO] #$DISTANCE > 10.0} ]
ダメな例(コマンド置換でインデックスを指定)
set olist [gdi $olist.where {#[getFieldIndex 区間距離] >10.0} ]
フィールドインデックスに下記の負数を与えると属性以外の項目も検索条件に含めることができます
インデックス | 比較値 | -1 | name値 | -2 | ID | -3 | レイヤ名 | -4 | 長さ | -5 | 面積 | -6 | 始点X座標値 | -7 | 始点Y座標値 |
|
[戻る] gdi $symbol.canvas
|
gdi $symbol.canvas
シンボルリソースのキャンバスハンドルを返します
|
[戻る] gdi $symbol.color
|
gdi $symbol.color $r $g $b
シンボルリソースのrgb値を変更します
(シンボルを構成する全レイヤのrgb値を一括変更)
レイヤにシンボルを再選択すると変更が反映されます
|
[戻る] gdi $symbol.import
|
gdi $symbol.import $canvas
return num
シンボルリソースを別のキャンバスにコピーします
コピー後の登録シンボル数が返ります
|
[戻る] gdi $symbol.name
|
gdi $symbol.name
return name
シンボルの名前を返します
|
[戻る] gdi $symbol.layer
|
gdi $symbol.layer [$layername]
return {layer | layer_list}
与えられたレイヤ名のレイヤハンドルを返します
レイヤ名を省略するとシンボルを構成する全レイヤハンドルリストを返します
|
[戻る] gdi $symbol.newobject
|
gdi $symbol.newobject $layer
return obj
シンボルリソースの指定レイヤに新しいオブジェクトを作成します
作成されたオブジェクトのハンドルが返ります
|
[戻る] gdi $symbol.newlayer
|
gdi $symbol.newlayer $layername $gtype
return layer
シンボルリソースに新しいレイヤを作成します
layernameには作成するレイヤ名を与えます
gtypeには図形タイプを与えます
road string circle polygon text areatext bmp
|
[戻る] gdi $symbol.width
|
gdi $symbol.width $width $dynamic
シンボルリソースの線幅を変更します
(シンボルを構成する全レイヤの線幅を一括変更)
レイヤにシンボルを再選択すると変更が反映されます
dynamicにはwidthがピクセル単位の時は0,マップ単位の時は1を与えます
|
[戻る] gdi $symbol.size
|
gdi $symbol.size $size $dynamic
return symbol
gdi $symbol.size
return {size dynamic}
シンボルリソースを指定サイズの大きさ(ダイナミックサイズ)にコピーします
size にはmm単位(マップ単位に関わらず)で表示サイズを与えます
dynamicにはsizeがピクセル単位の時は0,mm単位の時は1を与えます
新しいシンボルハンドルが返ります
返されたシンボルハンドルはアプリケーションスタイル作成に利用します
$size と $dynamicを省略すると現在のサイズどダイナミクスが返ります
|
[戻る] gdi axis
|
gdi axis [$xysystem]
return xysystem
gdi bl2xyで参照される投影座標系を設定します
アーギュメント$xysystemには座標系番号を与えます
1〜19 公共座標系
51〜56 UTM
省略すると現在の座標系が返ります
回転楕円体はgdi ellipseで設定します
|
[戻る] gdi area
[戻る] gdi bl2xy
|
gdi bl2xy $k $i
return {x y}
経緯度座標を直角座標系のx,y座標に変換します
経緯度は秒単位の実数で与えます
x,y座標はM単位の実数値で返ります
測地系、投影座標系はそれぞれ
gdi ellipse
gdi axis
で設定します
このコマンドと反対の処理をするのがgdi xy2blです
|
[戻る] gdi clock
|
gdi Clock $x1 $y1 [$x2 $y2....]
return clock
座標列の方向を返します
1が返れば「時計回り」0が返れば「反時計回り」です
参考 gdi $obj.clock
|
[戻る] gdi closeprinter
|
gdi closePrinter
return success
gdi openprinterで開いたプリンタを使用後に閉じます
成功したら1,失敗したら0が返ります
|
[戻る] gdi clip
|
gdi clip
クリップボードコマンド群
gdi clip.copytext [$hwnd] $text
return success
文字列をクリップボードにコピーします
hwndは省略可能なウインドウハンドル
成功すると1が返ります
gdi clip.gettext [$hwnd]
return text
クリップボードから文字列を取り出します
hwndは省略可能なウインドウハンドル
文字列がクリップボードになく失敗したらNULL文字列を返します
gdi clip.copybmp $canvas $x $y $w $h
return success
canvasに表示されている画像をビットマップでクリップボードにコピーします
x,yはコピー範囲の原点で、canvas内のピクセル座標です
w,hはコピー範囲の幅と高さでピクセル座標です
成功すると1が返ります
hwndに0を与えるとデスクトップ指定になります
クリップボードから画像を取り出すコマンドはありません
コピーした画像は、pasteコマンドを実装しているアプリケーションで利用します
|
[戻る] gdi cmpbinbase64
|
gdi CmpBinBase64 $datapointer $datasize $before $after
return base64text
サイズがdatasize、メモリアドレスがdatapointerのデータをzlib圧縮して
さらにBase64エンコードしたデータを返します
失敗したら空文字を返します
エンコードデータに付け加えるヘッダとフッダデータをbeforeとafterに指定します
参照
gdi cmpbase64
gdi cmphex
gdi uncmphex
|
[戻る] gdi cmpbase64
|
gdi CmpBase64 $data $datasize $before $after
return base64text
サイズがdatasizeのデータdata(アドレスにあらず)をzlib圧縮して
さらにBase64エンコードしたデータを返します
失敗したら空文字を返します
エンコードデータに付け加えるヘッダとフッダデータをbeforeとafterに指定します
参照
gdi cmpbinbase64
gdi cmphex
gdi uncmphex
|
[戻る] gdi cmphex
|
gdi CmpHex $infile $outfile $before $after
return err
infileファイルを読みoutfileにzlib圧縮してさらにBase64エンコードした
データを書き出します
エンコードデータに付け加えるヘッダとフッダデータをbeforeとafterに指定します
成功したら0を返します
このコマンドは、当初HEXコードを生成するものから、現在はBase64
エンコードに変更されています
参照
gdi cmpbinbase64
gdi cmpbase64
gdi uncmphex
|
[戻る] gdi createcavas
|
gdi CreateCavas $hwnd $x $w $w $h
return canvas
キャンバスを作成します
hwndは親ウインドウハンドルです
x,yは親ウインドウ内の作成キャンバスの原点座標です
w,hは作成キャンバスの幅と高さです
キャンバスハンドルを返します
|
[戻る] gdi createprinterdc
[戻る] gdi crossex
|
gdi CrossEx $Ax1 $Ay1 $Ax2 $Ay2 $Bx1 $By1 $Bx2 $By2
return {x y}
線分Aと線分Bの交点を計算し交点座標を返します
延長線上の交点も計算されます
交点が無い場合はNULLが返ります
参照 gdi cross
|
[戻る] gdi cross
|
gdi Cross $Ax1 $Ay1 $Ax2 $Ay2 $Bx1 $By1 $Bx2 $By2
return {x y}
線分Aと線分Bの交点を計算し交点座標を返します
延長線上の交点は交点とみなされません
交点が無い場合はNULLが返ります
参照
gdi crossex
gdi $obj.cross
|
[戻る] gdi ddmmss2sec
|
gdi DDMMSS2sec $ddmmss1 ...
return {ew1 ns1 ...}
DDMMSS書式の経緯度を秒単位経緯度に変換します
経緯度 | DDMMSS書式 | 東経132度42分30.23秒 | 1324230.23 | 北緯42度5分2.3秒 | 420502.3 | この逆の処理を行うのがgdi sec2ddmmssです
|
[戻る] gdi deleteprinterdc
[戻る] gdi dib2bitmap
|
gdi dib2bitmap $dib [free]
return bitmapfile_image
MYDIBハンドル($dib)のビットマップファイルイメージ(バイナリィ)を返します
0が返されたら失敗です
"free"を与えると処理後にdibを解放します
返されたイメージはputsコマンドでファイルに保存できます
その際、ファイルは"binary"モードで作成してください
ファイルはWindows BMPファイルとして作成されます
例
set img [gdi dib2bitmap $dib]
set fp [open mybmp.bmp w]
fconfigure $fp -translation binary
puts $fp $img
close $fp
|
[戻る] gdi dib2png
|
gdi dib2png $dib [free] [$transeparent] [$bgcolor]
return pngfile_image
MYDIBハンドルdibのpngファイルイメージ(バイナリィ)を返す
0が返されたら失敗
"free"を与えるとdibを解放する
$tranceparent : "TRUE" | "FALSE"
$bgcolor : RGB値
|
[戻る] gdi dumpmap
|
gdi DumpMap $mapfile $htmlfile
return err
マップファイルの情報をhtmlファイルにはき出します
-1が返ったら失敗,0が返れば成功です
情報はヘッダ情報,レイヤ名と各オブジェクト数です
|
[戻る] gdi ellipse
|
gdi ellipse [$ellipse]
gdi bl2xyで参照される回転楕円体を設定します
アーギュメント$ellipseには楕円体名を与えます
BESSEL WGS84 GRS80 GRS83 CLARKE IAU65 GRS67
アーギュメントを省略すると現在の楕円体が返ります
投影座標系はgdi axisで設定します
|
[戻る] gdi foreach
|
gdi foreach obj $olist $script
$olistから順にオブジェクトを抽出し、objに代入してから$scriptを実行するループ処理を行います
$olistがmdbリストでも有効です
|
[戻る] gdi freeprinter
[戻る] gdi garea
|
gdi Garea $x1 $y1 [$x2 $y2....]
return {gx gy}
x,y座標列で囲まれた空間の重心を求めます
参照 gdi $obj.center
|
[戻る] gdi getcolorindex
|
gdi GetColorIndex $r $g $b
return index
(r,g,b)色のカラー番号を返します
-1が返れば256テーブルに無い色です
デフォルトのカラーテーブルはAutoCADと同じです
|
[戻る] gdi getindexrgb
|
gdi GetIndexRGB $index
return {r g b}
カラー番号$indexのRGB値を返します
NULLが返れば失敗です
デフォルトのカラーテーブルはAutoCADと同じです
|
[戻る] gdi getmousepos
|
gdi GetMousePos
return {x y}
現在のマウスポインタの位置をスクリーン座標で返します
参照 gdi getmousexy
|
[戻る] gdi getmousexy
|
gdi GetMouseXY
return {x y}
最後にキャンバスでクリックされたマウスポインタの座標をマップ座標で返します
参照 gdi getmousepos
|
[戻る] gdi icon
|
gdi icon
アイコンコマンド群
gdi icon.extract $filename
return {icon1 icon2}
exeファイル,dllファイルのアイコンリソースを抽出します
icon1は小さいアイコンハンドル,icon2は大きいアイコンハンドルです
gdi icon.load $iconfile
return icon
アイコンファイル(*.ico)からアイコンイメージを作成しアイコンハンドルを返します
gdi icon.delete $icon
与えられたアイコンハンドルのアイコンイメージを削除します
|
[戻る] gdi jgd2tokyo
|
gdi jgd2tokyo $kei $ido
return {kei ido}
世界測地系の経緯度を東京測地系経緯度に変換します
単位は秒です
参照 gdi tokyo2jgd
|
[戻る] gdi loadprinter
[戻る] gdi openprinter
[戻る] gdi papersizedot
[戻る] gdi papersize
[戻る] gdi pointisinside
|
gdi PointIsInside $x $y $px0 $py0 .....$pxn $pyn
return inside
指定位置(x,y)が空間(px0,py0...)の内部にあるか調べます
内部なら1,オンラインなら2,外部なら0を返します
空間座標は($px0,$py0)==($pxn,$pyn)とし閉じた座標列を与えます
inside
0 : 外
1 : 中
2 : オンライン
参照 gdi $obj.inside
|
[戻る] gdi printerprop
[戻る] gdi renamemaplayer
|
gdi renameMapLayer $mapname $oldname1 $newname1 ....
return 0:success -1:read error -2:write error
|
[戻る] gdi sec2ddmmss
|
gdi sec2ddmmss $keido $ido
return DDMMSS
秒単位の経緯度座標をDDMMSS書式で返します
この逆の処理がgdi ddmmss2secコマンドです
|
[戻る] gdi setcolorindex
|
gdi SetColorIndex $index $r $g $b
256色カラーテーブルのrgb値を変更します
デフォルトはAutoCADのカラーテーブルです
|
[戻る] gdi setpaperlayout
[戻る] gdi setpapersize
[戻る] gdi tokyo2jgd
|
gdi tokyo2jgd $kei $ido
return {kei ido}
東京測地系の経緯度を世界測地系経緯度に変換します
単位は秒です
参照 gdi jgd2tokyo
|
[戻る] gdi uncmphex
[戻る] gdi xy2bl
|
gdi xy2bl $x $y
return {kei ido}
直角座標系のx,y座標を経緯度座標に変換します
x,y座標はM単位の実数値で返ります
xが東西,yが南北座標です
経緯度は秒単位の実数で返ります
測地系、投影座標系はそれぞれ
gdi ellipse
gdi axis
で設定します
このコマンドと反対の処理をするのがgdi bl2xyです
|
|