gdi Command Reference\(^o^)/

     Version 5.5 2005/1/13 9:52:57 (c)FreeSoftNet Co.Ltd.

【canvas】 【layer】 【vlayer】 【obj】 【olist】 【symbol】 【global】


【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.closeDC

キャンバスのDC(デバイスコンテキスト)を解放します
gdi $obj.displayを使った後に実行します
逆にDCを得るのはgdi $canvas.opendcコマンドです



[戻る]
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十字
ibeamI形
size左上右下リサイズ
sizens垂直リサイズ
sizewe水平リサイズ
sizeall垂直水平リサイズ
sizenesw右上左下リサイズ
sizenwsesizeと同
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.EditReference [$enable]
return enable

リファレンスオブジェクト編集可能モードを尋ねます
編集不可なら0,可能なら1が返ります
編集可能な時gdi $obj.referenceは常に0を返します
gdi $obj.referenceidは編集モードに限らず本来の値
を返します

アーギュメント$enableを与えるとモードを変更します
 参照
   gdi $obj.id
   gdi $obj.maxid



[戻る]
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はイベント種類を表すキーワードを与えます
キーワードに大文字小文字の区別はありません
キーワードに続けてイベントプロシージャ名を与えます
イベントプロシージャはそれそれアーギュメントが異なります
省略すると現在のプロシージャ名が返ります

キーワードイベントプロシージャアーギュメント
ERRhcanvas message
SIZEhcanvas mode w h
PREREPAINThcanvas left top right bottom
REPAINThcanvas left top right bottom
MOVEhcanvas x y key
LDOWNhcanvas x y key
LDCLICKhcanvas x y
LUPhcanvas x y key
RDOWNhcanvas x y key
RDCLICKhcanvas x y
RUPhcanvas x y key
MDOWNhcanvas x y key
MDCLICKhcanvas x y
MUPhcanvas x y key
KEYDOWNhcnavas keyname
WHEELhcanvas direction


アーギュメント
アーギュメント
hcanvasキャンバスウインドウハンドル
x yマウス座標(マップ座標)
key0:キーオープン 1:CTRL 2:SHIFT
keynameキー名
 特殊キーと一般キーが同時に押されている場合は
 {特殊キー名 一般キー名}のリストが返る
direction1:前に回転 -1:手前に回転

旧キーワードのLCLICKはLDOWNと同じです
同様にRCLICKはRDOWN,MCLICKはMDOWNと同じです
キーワードに大文字,小文字の区別はありません



[戻る]
gdi $canvas.fitdmsxy

gdi $canvas.fitdmsxy [$res] $ws $hs $wx $hy

経緯度をXY直角座標系に変換(線形変換)する比率を設定します
resは経緯度の秒を整数化するための乗数を与えます
resを省略するとデフォルト値1000になります
ws hs は整数化した秒で東西,南北の距離を与えます
wx hy はX,Y方向の対応距離をマップ単位で与えます
マップ単位はgdi $canvas.mapunitで設定されていなければなりません
このコマンドは
  gdi $canvas.dms2xy,gdi $canvas.xy2dms,
  gdi $canvas.s2xy,gdi $canvas.xy2s,
  gdi $canvas.sec2xy,[gdi $canvas.xy2sec}
を使用する前に実行しておかなければなりません




[戻る]
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.hardcopy $prnhdc [$scale]

マップを印刷します
スクリーンに表示されている範囲が印刷されます
$prnhdcはプリンタのDC(デバイスコンテキスト)です
プリンタDCはgdi createprinterdcコマンドで取得します
印刷後にprnhdcは自動的に削除されます
$scaleを与えると地図縮尺を指定して印刷できます
$scaleは実数で与えます。
ただしマップ単位がmmであるとして計算するので,マップ単位がmmでない
場合には$scaleを調整します。
例えばcm単位のデータを1/500で印刷したい場合には
scale = 10*1/500 = 0.02
を与えます。
マップ単位をキャンバスから抽出して計算すれば汎用的になります
set scale [expr [gdi $canvas.mapunit] * 1.0/500]]

参照
  gdi papersize
  gdi papersizedot
  gdi setpapersize
  gdi setpaperlayout
  gdi $canvas.print
  gdi $canvas.mapprint



[戻る]
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.LogCreate $filename

ログファイルを作成します(ロギング開始)
成功すると1,失敗すると0が返ります
gdi $canvas.loadmapの直後に実行すべきコマンドです
ログファイルはシステムダウンしたときのデータ復旧のための操作ログです
オブジェクトの作成,消去,修正操作を記録できます
それぞれを行うコマンドが用意されています
  gdi $obj.lognew
  gdi $obj.logdelete
  gdi $obj.log
ログファイルを閉じるのは
  gdi $canvas.logclose
です。クローズしたらファイルも削除しなければなりません
復旧のためログファイルを実行するコマンドは
  gdi $canvas.logexec $fname
です。



[戻る]
gdi $canvas.logexec

gdi $canvas.LogExec $filename

システムダウンにより失われたデータを復旧するためログファイルを実行します
gdi $canvas.loadmapの直後にログファイルの存在を調べ,ファイル(filename)
があればこのコマンドを実行します。
復旧したデータを保存した場合は必ずログファイルを削除してください。
ログファイルを実行してのデータ復旧処理は,ログに格納されているイベントプロシージャ
を実行しながら進められます

参照
  gdi $canvas.logcreate
  gdi $canvas.logclose
  gdi $obj.log
  gdi $obj.lognew
  gdi $obj.logdelete



[戻る]
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.MapPrint $prnhdc [$title]

マップを印刷します
prnhdcはプリンタのDC(デバイスコンテキスト)です
  プリンタDCは{gdi CreatePrinterDCC}コマンドで作成します

titleを与えるとその文字列を用紙左上に印刷します

印刷範囲はマップ領域全体です
  マップ領域全体はアクティブオブジェクトだけの全体です
  リファレンスオブジェクトは上記領域に含まれるもののみ印刷されます
 「マップ領域全体」はgdi $canvas.maprangeで取得できます
  印刷前に意図的にマップ領域を変更すれば望みの範囲のみを
  印刷することができます

印刷後に$prnhdcは自動的に削除されます

参照
  gdi papersize
  gdi papersizedot
  gdi setpapersize
  gdi setpaperlayout
  gdi $canvas.print
  gdi $canvas.hardcopy



[戻る]
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を与えます
dpm1mm当たりのビット数を与えます
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には図形タイプの名称,または番号を与えます

図形タイプ名称番号
道路road1
circle2
ラインストリングstring3
ポリゴンpolygon4
テキストtext5
シンボルsymbol6
シンボルラインsymbolline7
シンボルポリゴンsymbolpolygon8
ビットマップbmp10
エリアテキストareatext11
円弧arc12
扇形fan13
矩形rectangle15
長方形square16
ビューview17
アイコンaicon18



[戻る]
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
 adjuston | 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
 joinround | sharp
 starton | 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
 joinround | sharp
 starton | 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.print $prnhdc $scale [$title]
gdi $canvas.print $prnhdc $xmin $ymin $xmax $ymax $scale [$title]

マップを印刷します
prnhdcはプリンタのDC(デバイスコンテキスト)です
プリンタDCはgdi createprinterdcコマンドで取得します

印刷縮尺がscaleです。実数で指定します
マップ単位をmmとして計算しますので,マップ単位がmmでない場合には縮尺を
調整して与えます
例えばマップ単位がcmの場合に1/500で印刷するには
  1/500*10=0.02 を与えます
より汎用的にプログラムしたい場合にはマップ単位を読み取る方式を採用します
  1/500*[gdi $canvas.mapunit]

印刷範囲を与える方式も提供されています
印刷したい矩形範囲をマップ単位値 xmin ymin xmax ymax で与えます
指定した範囲が用紙に収まるように印刷されます
指定した範囲が用紙の縦横比と異なる場合には印刷範囲を拡げる方式で
調整されます
この方式は縮尺よりも印刷範囲を重視する場合に用います(ハードコピー)

titleを与える用紙左上に印刷します
印刷後にprnhdcは自動的に削除されます

参照
  gdi papersize
  gdi papersizedot
  gdi setpapersize
  gdi setpaperlayout
  gdi $canvas.mapprint
  gdi $canvas.hardcopy



[戻る]
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.QueryActive $hlay ...
return olist

アクティブオブジェクトを検索しオブジェクトリストで返します
非表示,セレクションロック,削除フラグが立ったオブジェクトも含みます
返されたオブジェクトリストは使用後に削除してください
 参考
  gdi $canvas.querynew
  gdi $canvas.querydeleted
  gdi $canvas.tileupdate



[戻る]
gdi $canvas.querychanged

gdi $canvas.QueryChanged $hlay ...
return olist

修正されたリファレンスオブジェクトを検索しオブジェクトリストで返します
このコマンドは修正後にgdi $obj.pushafterが実行されたリファレンスオブジェクトを検索
するものです。
返されたオブジェクトリストは使用後に削除してください

 参考
  gdi $canvas.querynew
  gdi $canvas.queryactive
  gdi $canvas.querydeleted
  gdi $canvas.tileupdate



[戻る]
gdi $canvas.queryclass

gdi $canvas.QueryClass [$layername] $classname
return olist

レイヤ名とクラス名でオブジェクトを検索しオブジェクトリストで返します
レイヤ名は省略可です
クラス名はオブジェクトの先頭属性値です
返されたオブジェクトリストは使用後に削除してください



[戻る]
gdi $canvas.querydeleted

gdi $canvas.QueryDeleted $hlay ...
return olist

gdi $obj.deleteflag で消去されたリファレンスオブジェクトを検索しオブジェクトリストで返します
返されたオブジェクトリストは使用後に削除してください

 参考
  gdi $canvas.querynew
  gdi $canvas.queryactive
  gdi $canvas.querychanged
  gdi $canvas.tileupdate



[戻る]
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.QueryNew $hlay ...
return olist

update!=0 のアクティブオブジェクトを検索しオブジェクトリストで返します
これらのオブジェクトは作成後に{gdi $obj.pushCreateObject}が
実行されたオブジェクトです。
返されたオブジェクトリストは使用後に削除してください

  参考
   gdi $canvas.queryactive
   gdi $canvas.querychanged
   gdi $canvas.querydeleted
   gdi $canvas.tileupdate



[戻る]
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を与えるとベクタ論理演算表示種類を変更します
論理演算には下記の種類が実装されています
copynotcopyblack
whitemasknotpenmaskpennot
notmaskmaskmergenotpen
mergepennotnotmergemerge
nopnotxor
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を与えるとスナップモードを変更します

スナップ処理とはマウスポインタから最短距離にある頂点や辺の座標を取り出す
処理であり,各種モードがあります
モードは下記のキーワードか番号で指定できます
キーワード番号モード
off0スナップ機能OFF
point1最近傍頂点座標を取り出す
line2最近傍線分への垂線交点座標を取り出す
center3最近傍線分の中心座標を取り出す
end4最近傍オブジェクトの始点または終点座標を取り出す
grid5最近傍グリッド座標を取り出す

スナップ機能が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.xy2s $x $y
return {ew ns}

内部座標値を経緯度に変換し整数秒で返します
戻り値を実数秒で得るのは
  gdi $canvas.xy2sec
です

このコマンドを使用する為には
  gdi $canvas.fitdmsxy
コマンドにて線形変換係数が設定されていなければなりません
変換係数が設定されていない場合には同じ値{x y}が返ります

このコマンドと逆の機能が
  gdi $canvas.s2xy
  gdi $canvas.dms2xy
です



[戻る]
gdi $canvas.xylib

gdi $canvas.xylib $dll_name

内部座標をスクリーン座標に変換する関数を提供するDLLを指定します
  gdi $canvas.scale
  gdi $canvas.screentomap
  gdi $canvas.maptoscreen
  gdi $canvas.screentomaprect
  gdi $canvas.maptoscreenrect
等のコマンドは,このDLLに実装された関数を実行しています
このコマンドによりDLLが設定されていない場合には内部座標はスクリーン座標系
になります。
TclGDI_XY.DLLはY軸方向がスクリーン座標系と反対方向の数学座標系です



[戻る]
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.delete

レイヤを削除します
レイヤに含まれるオブジェクトも全て削除します
gdi $layer.removeと同じ機能です



[戻る]
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

レイヤのプロパティをセットします
プロパティ名と値の組を必要なだけ与えます
レイヤハンドルが返ります


プロパティ名一覧
rgbhrgbbrgbpainttranceparent
styleappstylebrushwidthdwidth
fontdfontmodesymboldsymbol
style2capedgededge
insidestatic
displayselection

図形タイプと有効なプロパティ

全図形共通
 表示設定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線幅 マップ単位での幅(ダイナミック線種)
caproadの終端処理 0:解放 1:始点閉止 2:終点閉止 3:始終点閉止
edgeroadの道路縁幅 ピクセル固定値
dedgeroadの道路縁幅 マップ単位での幅(ダイナミック)
tranceparentbmpの場合の白部透明on/off
 その他の図形は半透明
insidepolygon,symbolpolygon,square の場合の外周線描画モード
 off:中心に描画(デフォルト)、on:内側に描画
displa表示on/off
selectionセレクション可否on/off
staticon:描画位置スクリーン固定 off:通常描画
 ただしラバーバンドオブジェクト(アニメーションオブジェクト)に有効
style線種 null solid dot dash dashdot dashdotdot user duser
 user の場合はデータ数 可視線長 隠線長 ...を続ける
 例: style user 4 10 5 10 5
 duserの場合もuserと同であるが、線長をマップ単位で与える
style2roadの場合の道路面線種
modetextの場合の原点位置
 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
fonttextのフォントとサイズ 例:font MS ゴシック 標準 12
dfontfontと同。ただしサイズはマップ単位(ダイナミックフォント)
symbolsymbolタイプ場合のシンボル名とサイズ 
 例:symbol 赤丸 20
dsymbolsymbolと同。ただしサイズはマップ単位(ダイナミックシンボル)
appstylesymbolline,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.delete
gdi $vlayer.remove

揮発レイヤを削除します
gdi $vlayer.removeと同じ機能です



[戻る]
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.remove

揮発レイヤを削除します
gdi $vlayer.deleteと同じ機能です



[戻る]
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.deleteflag

オブジェクトの座標を削除し非表示にします
アクティブオブジェクトは保存も検索も表示もされません
リファレンスオブジェクトの場合は
  gdi $canvas.querydeleted
  gdi $canvas.queryinsidelockobj
で検索できますし、保存/読み込み可能です



[戻る]
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.maxid
return maxid

オブジェクトが属するファイルに格納されているオブジェクトの
最大IDを返します

参照
 gdi $obj.id
 gdi $canvas.editreference



[戻る]
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 {座標値リスト及びパラメータ}

オブジェクトの座標値リストとともに、オブジェクトが円、円弧、扇形、道路、シンボル、 /// テキストの場合には固有の値も返します

circlex y rrは半径
arcx y r sa wa wrは半径,saは開始角,waは開き角wは厚さ
fanx y r sa warは半径,saは開始角,waは開き角
symbolx y angangは角度
textx y angangは角度
roadWw 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.lock

オブジェクトリストをロックします
ロックされたオブジェクトリストは削除できません
削除するためにはgdi $olist.unlockを実行します
$olistがmdbリストの場合も有効です。
参照:gdi $olist.unlock



[戻る]
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 Area $x1 $y1 [$x2 $y2....]
return area

x,y座標列で囲まれた範囲の面積を求めます
重心を求めるのはgdi gareaです

参考 gdi $obj.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 createPrinterDC
return hdc

プリンタDC(デバイスコンテキスト)を作成します。その後に用紙サイズ取得や印刷が
可能になります
このコマンドに先立ちgdi openprinter,gdi loadprinterコマンドでプリンタが
開かれている必要があります

プリンタDCを削除するのはgdi deleteprinterdcコマンドです
ただし印刷を実行した場合は自動的に削除されます

 参照
  gdi openprinter
  gdi loadprinter
  gdi freeprinter
  gdi deleteprinterdc
  gdi printerprop
  gdi papersize
  gdi papersizedot
  gdi setpapersize
  gdi setpaperlayout
  gdi $canvas.print
  gdi $canvas.mapprint
  gdi $canvas.hardcopy



[戻る]
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 deletePrinterDC $hdc
プリンタDCを削除します

 参照
  gdi openprinter
  gdi loadprinter
  gdi freeprinter
  gdi createprinterdc
  gdi printerprop
  gdi papersize
  gdi papersizedot
  gdi setpapersize
  gdi setpaperlayout
  gdi $canvas.print
  gdi $canvas.mapprint
  gdi $canvas.hardcopy



[戻る]
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 freePrinter

gdi loadprinterでloadしたプリンタを使用後に解放します




[戻る]
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 loadPrinter
return success

レジストリに記憶されているデフォルトプリンタをロードします
このコマンドの実行結果はgdi openprinterと同格です
プリンタ使用後にgdi freeprinterで解放してください

 参照
  gdi freeprinter
  gdi createprinterdc
  gdi deleteprinterdc
  gdi printerprop
  gdi papersize
  gdi papersizedot
  gdi setpapersize
  gdi setpaperlayout
  gdi $canvas.print
  gdi $canvas.mapprint
  gdi $canvas.hardcopy



[戻る]
gdi openprinter

gdi openPrinter $hwnd
return success

プリンタ設定ダイアログを開きます
プリンタの選択や用紙サイズ、向きを設定できます
つまりデフォルトプリンタを変更するために使用します
ダイアログを「OK」で終了するとgdi loadprinterを実行した状態と同じになります
選択されたプリンタはレジストリに記憶されます
レジストリに記憶済みのプリンタを再選択するのがgdi loadprinterコマンドです

$hwnd はウインドウハンドルです
 ウインドウハンドルはキャンバスハンドルか、またはguiウインドウハンドルです
 ([gui get $win hwnd])
成功したら1,失敗したら0が返ります

プリンタを開いたら、次にgdi createprinterdcコマンドを実行し、プリンタの
DC(デバイスコンテキスト)を作成します。その後に用紙サイズ取得や印刷が可能に
なります

プリンタ使用後にgdi closeprinterを実行してください

 参照
  gdi closeprinter
  gdi loadprinter
  gdi freeprinter
  gdi createprinterdc
  gdi deleteprinterdc
  gdi printerprop
  gdi papersize
  gdi papersizedot
  gdi setpapersize
  gdi setpaperlayout
  gdi $canvas.print
  gdi $canvas.mapprint
  gdi $canvas.hardcopy

プリンタを閉じるのはgdi closeprinterです



[戻る]
gdi papersizedot

gdi PaperSizeDot $printerDC

マージンも考慮した実際の印刷範囲(dot)を取得します
このコマンドに先立ちgdi createprinterdcが実行されている必要があります

 参照
  gdi openprinter
  gdi closeprinter
  gdi loadprinter
  gdi freeprinter
  gdi createprinterdc
  gdi deleteprinterdc
  gdi printerprop
  gdi papersize
  gdi setpapersize
  gdi setpaperlayout
  gdi $canvas.print
  gdi $canvas.mapprint
  gdi $canvas.hardcopy



[戻る]
gdi papersize

gdi PaperSize $printerDC

マージンも考慮した実際の印刷範囲(mm)を取得します
このコマンドに先立ちgdi createprinterdcが実行されている必要があります

 参照
  gdi openprinter
  gdi loadprinter
  gdi freeprinter
  gdi createprinterdc
  gdi deleteprinterdc
  gdi printerprop
  gdi papersizedot
  gdi setpapersize
  gdi setpaperlayout
  gdi $canvas.print
  gdi $canvas.mapprint
  gdi $canvas.hardcopy



[戻る]
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 printerProp
return {printername layout size}

プリンタ情報を返します
プリンタ名,用紙向き,用紙サイズのリストで返します
このコマンドに先立ちgdi createprinterdcが実行されている必要があります

 参照
  gdi openprinter
  gdi loadprinter
  gdi freeprinter
  gdi createprinterdc
  gdi deleteprinterdc
  gdi printerprop
  gdi papersizedot
  gdi papersize
  gdi setpapersize
  gdi setpaperlayout
  gdi $canvas.print
  gdi $canvas.mapprint
  gdi $canvas.hardcopy



[戻る]
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 setPaperLayout {h|v}
return success

印刷用紙方向を設定します
横方向なら"h",縦方向ならが"v"を与えます
このコマンドに先立ちgdi createprinterdcが実行されている必要があります

 参照
  gdi openprinter
  gdi loadprinter
  gdi freeprinter
  gdi createprinterdc
  gdi deleteprinterdc
  gdi printerprop
  gdi papersize
  gdi papersizedot
  gdi setpapersize
  gdi $canvas.print
  gdi $canvas.mapprint
  gdi $canvas.hardcopy



[戻る]
gdi setpapersize

gdi setPaperSize $size
return success

プリンタの用紙サイズを選択します
sizeにはA0,A1,A2,A3....等の用紙規格文字列を与えます
このコマンドに先立ちgdi createprinterdcが実行されている必要があります

 参照
  gdi openprinter
  gdi loadprinter
  gdi freeprinter
  gdi createprinterdc
  gdi deleteprinterdc
  gdi printerprop
  gdi papersize
  gdi papersizedot
  gdi setpaperlayout
  gdi $canvas.print
  gdi $canvas.mapprint
  gdi $canvas.hardcopy



[戻る]
gdi tokyo2jgd

gdi tokyo2jgd $kei $ido
return {kei ido}

東京測地系の経緯度を世界測地系経緯度に変換します
単位は秒です
参照 gdi jgd2tokyo




[戻る]
gdi uncmphex

gdi UnCmpHex $cmpressed_data
return uncompressed_data

gdi cmphex,gdi cmpbinbase64,gdi cmpbase64で作成されたデータを
解凍する。Base64デコード、zlib解凍の順で処理される。
Base64コードだけでなくHEXコードも解凍することもできる。




[戻る]
gdi xy2bl

gdi xy2bl $x $y
return {kei ido}

直角座標系のx,y座標を経緯度座標に変換します
x,y座標はM単位の実数値で返ります
xが東西,yが南北座標です
経緯度は秒単位の実数で返ります

測地系、投影座標系はそれぞれ
  gdi ellipse
  gdi axis
で設定します

このコマンドと反対の処理をするのがgdi bl2xyです