global
- A
- affine
- area
- axis
- B
- batchmode
- bl2xy
- C
- clip
- clock
- closeprinter
- cmpbase64
- cmpbinbase64
- cmphex
- createcavas
- createprinterdc
- cross
- crossex
- D
- ddmmss2sec
- deleteprinterdc
- dib2bitmap
- dib2gif
- dib2png
- downcolordepth
- dumpmap
- E
- ellipse
- zip.encode
- F
- filename
- foreach
- freeprinter
- G
- garea
- getcolorindex
- getindexrgb
- getmargin
- getmousecanvas
- getmousepos
- getmousexy
- H
- I
- icon
- J
- jgd2tokyo
- K
- L
- listprinters
- loadprinter
- M
- N
- O
- openprinter
- P
- papersize
- papersizedot
- past
- pointisinside
- printerprop
- printmargin
- projection
- Q
- R
- releaseprinter
- renamemaplayer
- S
- sec2ddmmss
- selectprinter
- setcolorindex
- setmargin
- setmonitorwidth
- setmousexy
- setpaperlayout
- setpapersize
- T
- tokyo2jgd
- U
- uncmphex
- V
- W
- X
- xy2bl
- Y
- Z
- zip
affine
gdi affine $x0 $y0 ... $xn $yn $X0 $Y0 ... $Xn $Yn
return {1 | 0}
アフィン変換パラメータを設定します
$xi $yi : 変換前の座標値
$Xi $Yi : 変換後の座標値
実際のアフィン変換はgdi $olist.transformで行います
axis
gdi axis [$xysystem]
return xysystem
gdi bl2xyで参照される投影座標系を設定します
アーギュメント$xysystemには座標系番号を与えます
1〜19 公共座標系
51〜56 UTM
100 真球メルカトル
省略すると現在の座標系が返ります
回転楕円体はgdi ellipseで設定します
batchmode
gdi batchmode $bool
return bool
$boolに1か"on"を与えるとバッチモードに設定します
$boolに0か"off"を与えるとバッチモードを解除します
変更前の状態が返ります
バッチモードにあるとUndo/Redoスタックに積む下記のコマンドが無効(何もしない)になります
gdi $obj.pushBefore
gdi $obj.pushAfter
gdi $obj.pushCreateObj
gdi $olist.pushBefore
gdi $olist.pushAfter
gdi $olist.pushCreateObj
gdi $canvas.undoStart
gdi $canvas.undoFinish
bl2xy
gdi bl2xy $k $i
return {x y}
経緯度座標を直角座標系のx,y座標に変換します
経緯度は秒単位の実数で与えます
x,y座標はM単位の実数値で返ります
測地系、投影座標系はそれぞれ
gdi ellipse
gdi axis
で設定します
このコマンドと反対の処理をするのがgdi xy2blです
clock
gdi Clock $x1 $y1 [$x2 $y2....]
return clock
座標列の方向を返します
1が返れば「時計回り」0が返れば「反時計回り」です
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コマンドを実装しているアプリケーションで利用します
cmpbinbase64
gdi CmpBinBase64 $datapointer $datasize $before $after
return base64text
サイズがdatasize、メモリアドレスがdatapointerのデータをzlib圧縮してさらにBase64エンコードしたデータを返します
失敗したら空文字を返します
エンコードデータに付け加えるヘッダとフッダデータをbeforeとafterに指定します
cmpbase64
gdi CmpBase64 $data $datasize $before $after
return base64text
サイズがdatasizeのデータdata(アドレスにあらず)をzlib圧縮してさらにBase64エンコードしたデータを返します
失敗したら空文字を返します
エンコードデータに付け加えるヘッダとフッダデータをbeforeとafterに指定します
cmphex
gdi CmpHex $infile $outfile $before $after
return err
infileファイルを読みoutfileにzlib圧縮してさらにBase64エンコードしたデータを書き出します
エンコードデータに付け加えるヘッダとフッダデータをbeforeとafterに指定します
成功したら0を返します
このコマンドは、当初HEXコードを生成するものから、現在はBase64エンコードに変更されています
createcavas
gdi CreateCavas $hwnd $x $y $w $h
return canvas
キャンバスを作成します
hwndは親ウインドウハンドルです
x,yは親ウインドウ内の作成キャンバスの原点座標です
w,hは作成キャンバスの幅と高さです
キャンバスハンドルを返します
createprinterdc
gdi createPrinterDC [$copy]
return hdc
プリンタDC(デバイスコンテキスト)を作成します。その後に用紙サイズ取得や印刷が可能になります
このコマンドに先立ちgdi openPrinter,gdi loadPrinterコマンドでプリンタが開かれている必要があります
$copyには印刷枚数をセットします(デフォルト=1)
プリンタ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
crossex
gdi CrossEx $Ax1 $Ay1 $Ax2 $Ay2 $Bx1 $By1 $Bx2 $By2
return {x y}
線分Aと線分Bの交点を計算し交点座標を返します
延長線上の交点も計算されます
交点が無い場合はNULLが返ります
参照 gdi Cross
cross
gdi Cross $Ax1 $Ay1 $Ax2 $Ay2 $Bx1 $By1 $Bx2 $By2
return {x y}
線分Aと線分Bの交点を計算し交点座標を返します
延長線上の交点は交点とみなされません
交点が無い場合はNULLが返ります
ddmmss2sec
gdi DDMMSS2sec $ddmmss1 ...
return {ew1 ns1 ...}
DDMMSS書式の経緯度を秒単位経緯度に変換します
経緯度 | DDMMSS書式 |
東経132度42分30.23秒 | 1324230.23 |
北緯42度5分2.3秒 | 420502.3 |
この逆の処理を行うのがgdi sec2ddmmssです
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
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
dib2gif
gdi dib2gif $dib [free] [$transeparent] [$bgcolor]
return giffile_image
MYDIBハンドル($dib)のGIFファイルイメージ(バイナリィ)を返します
dibに格納されている入力イメージは24ビットカラーにのみ対応しています
"free"が与えられるとdibを解放します
$tranceparent : "TRUE" | "FALSE"
$bgcolor : RGB値(32bit値) <-- [expr $r<<24+$g<<16+$b<<8]
返されたイメージはputsコマンドでファイルに保存できます
その際、ファイルは"binary"モードで作成してください
例
set img [gdi dib2gif $dib free TRUE ]
set fp [open mybmp.gif w]
fconfigure $fp -translation binary
puts $fp $img
close $fp
dib2png
gdi dib2png $dib [free] [$transeparent] [$bgcolor]
return pngfile_image
MYDIBハンドルdibのpngファイルイメージ(バイナリィ)を返す
0が返されたら失敗
"free"を与えるとdibを解放する
$tranceparent : "TRUE" | "FALSE"
$bgcolor : RGB値(32bit値) <-- [expr $r<<24+$g<<16+$b<<8]
downcolordepth
gdi DownColorDepth $onoff
タイルマップ作成時に24bitカラー画像を8bitカラー画像に減色する場合は
$onoffに1をセットします
dumpmap
gdi DumpMap $mapfile $htmlfile
return err
マップファイルの情報をhtmlファイルにはき出します
-1が返ったら失敗,0が返れば成功です
情報はヘッダ情報,レイヤ名と各オブジェクト数です
ellipse
gdi ellipse [$ellipse]
gdi bl2xyで参照される回転楕円体を設定します
アーギュメント$ellipseには楕円体名を与えます
BESSEL WGS84 GRS80 GRS83 CLARKE IAU65 GRS67
アーギュメントを省略すると現在の楕円体が返ります
投影座標系はgdi axisで設定します
filename
gdi filename $mapid
return filename
mapid(referenceid)のファイル名を返します
foreach
gdi foreach obj $olist $script
$olistから順にオブジェクトを抽出し、objに代入してから$scriptを実行するループ処理を行います
$olistがmdbリストでも有効です
getcolorindex
gdi GetColorIndex $r $g $b
return index
(r,g,b)色のカラー番号を返します
-1が返れば256テーブルに無い色です
デフォルトのカラーテーブルはAutoCADと同じです
getindexrgb
gdi GetIndexRGB $index
return {r g b}
カラー番号$indexのRGB値を返します
NULLが返れば失敗です
デフォルトのカラーテーブルはAutoCADと同じです
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
与えられたアイコンハンドルのアイコンイメージを削除します
listprinters
gdi listPrinters
return printer_name_list
プリンタ名のTclリストを返します
先頭要素がデフォルトプリンタ名です
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
openprinter
gdi openPrinter $hwnd [$copies] [$changeflag]
return success
プリンタ設定ダイアログを開きます
プリンタの選択や用紙サイズ、向きを設定できます
つまりデフォルトプリンタを変更するために使用します
ダイアログを「OK」で終了するとgdi loadPrinterを実行した状態と同じになります
選択されたプリンタはレジストリに記憶されます
レジストリに記憶済みのプリンタを再選択するのがgdi loadPrinterコマンドです
$hwnd はウインドウハンドルです
ウインドウハンドルはキャンバスハンドルか、またはguiウインドウハンドルです
([gui get $win hwnd])
$changeflagは用紙サイズと向きの変更を許す場合に1を与えます
0または省略すると余白しか設定できません(プリンタ変更は可能)
成功したら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です
papersizedot
gdi PaperSizeDot $printerDC
return {w h}
マージンも考慮した実際の印刷範囲(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
papersize
gdi PaperSize $printerDC
return {w h}
マージンも考慮した実際の印刷範囲(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
past
gdi Past $canvas
貼り付け
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 : オンライン
printerprop
gdi printerProp
return {printername layout size}
プリンタ情報を返します
プリンタ名,用紙向き,用紙サイズのリストで返します
このコマンドに先立ちgdi selectPrinterまたはgdi loadPrinterが実行されている必要があります
参照
gdi openPrinter
gdi loadPrinter
gdi freePrinter
gdi createPrinterDC
gdi deletePrinterDC
gdi PaperSizeDot
gdi PaperSize
gdi setPaperSize
gdi setPaperLayout
gdi $canvas.print
gdi $canvas.mapPrint
gdi $canvas.hardcopy
printmargin
gdi PrintMargin [$left $top]
return {left top}
gdi Print $canvas $prnhdc $scale [$title [$dpi]]
gdi Print $canvas $prnhdc $xmin $ymin $xmax $ymax $scale [$title [$dpi]]
projection
gdi Projection [$ellipse] [$xy]
$ellipse "BESSEL", "WGS84", "GRS80", "JGD2000" , "JGD2011.parfilename" "GRS83","CLARKE"
$xy 1-19 (19系)
51-56(UTM)
renamemaplayer
gdi renameMapLayer $mapname $oldname1 $newname1 ....
return 0:success -1:read error -2:write error
sec2ddmmss
gdi sec2ddmmss $keido $ido
return DDMMSS
秒単位の経緯度座標をDDMMSS書式で返します
この逆の処理がgdi ddmmss2secコマンドです
selectprinter
gdi selectPrinter $printername
プリンタをオープンします
$printername プリンタ名
gdi listPrintersで取得できます
各種パラメータの取得・設定が可能になります
印刷する際にはこの後gdi createPrinterDCを実行します
使い終わったらgdi releasePrinterを実行します
setmousexy
gdi SetMouseXY $x $y
直前に入力された座標値としてセット
マウス入力エミュレーション時に使用する
setcolorindex
gdi SetColorIndex $index $r $g $b
256色カラーテーブルのrgb値を変更します
デフォルトはAutoCADのカラーテーブルです
setmonitorwidth
gdi SetMonitorWidth $wmm
mm単位でモニターの幅(長い方)をセットします
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
setpapersize
gdi setPaperSize $papername [$length $width]
return success
プリンタの用紙サイズを選択します
papernameにはA0,A1,A2,A3....等の用紙規格文字列を与えます
特殊サイズの場合は length,widthにmm単位でサイズを与えます
このコマンドに先立ちgdi selectPrinterまたはgdi loadPrinterが実行されている必要があります
参照
gdi selectPrinter
gdi loadPrinter
gdi freePrinter
gdi releasePrinter
gdi createPrinterDC
gdi deletePrinterDC
gdi PrinterProp
gdi setPaperSize
gdi PaperSizeDot
gdi setPaperLayout
gdi $canvas.print
gdi $canvas.mapPrint
gdi $canvas.hardcopy
uncmphex
gdi UnCmpHex $cmpressed_data
return uncompressed_data
gdi CmpHex,gdi CmpBinBase64,gdi CmpBase64で作成されたデータを
解凍する。Base64デコード、zlib解凍の順で処理される。
Base64コードだけでなくHEXコードも解凍することもできる。
xy2bl
gdi xy2bl $x $y
return {kei ido}
直角座標系のx,y座標を経緯度座標に変換します
x,y座標はM単位の実数値で与えます
xが東西,yが南北座標です
経緯度は秒単位の実数で返ります
測地系、投影座標系はそれぞれ
gdi ellipse
gdi axis
で設定します
このコマンドと反対の処理をするのがgdi bl2xyです
zip.encode
gdi zip.encode $unzdata $unzsize
return zdata
gdi zip.decode $zdata $zsize
return unzdata