イベント駆動型スクリプティングH [スクリプトをコマンドとして実行]
プロジェクトにスクリプトを記述し、コマンドとして実行します。
サンプルスクリプトは、「プロジェクトエキスパート」の「表示モード」パネル、「レイヤーエキスパート」の各レイヤーパネルのチェックボックOn/Offを行い、表示設定を変更します。
- ■ サンプル
サンプル[script43.zip(約68KB)]をダウンロードする
 | Sample_js.pcm | :JScriptサンプルプロジェクト |
 | Sample_vbs.pcm | :VBScriptサンプルプロジェクト |
- ■ 準備
- JScriptの場合「Sample_js.pcm」、VBScriptの場合「Sample_vbs.pcm」を記述します。
ここでは、「Sample_js.pcm」を例に記述します。
- ダウンロードしたファイルを解凍します。
ここでは、「C:\sample\script43」とします。
- PC-MAPPINGを起動します。
- 「C:\sample\script43\Sample_js.pcm」を開きます。
- [プロジェクト]リボン-[プロジェクト設定]-[プロジェクト]を実行し、「スクリプト」パネルを開きます。
- ■ 解説
-
- 要点1
- スクリプトファイルからスクリプトを実行する場合は、
[JScriptの場合]
function Cmd(){
:
}
[VBScriptの場合]
Sub Cmd_OnLoad()
:
End Sub
と記述しますが、「スクリプト」パネルにスクリプトを記述し、コマンド実行する場合は、
[JScriptの場合]
function SetPrjDispMode(){
:
}
[VBScriptの場合]
Sub SetPrjDispMode_OnLoad()
:
End Sub
とコマンドにしたい文字列を記述します。
コマンド文字列は、大文字・小文字を判定します。
既に使用されているコマンド文字列(PC-MAPPING専用コマンドも含む)は使用できません。
- 要点2
- スクリプトファイルからスクリプトを実行する場合は、
[JScriptの場合]
var objApp = new ActiveXObject("Pcm.App");
[VBScriptの場合]
Set objApp = CreateObject("pcm.app")
と記述しますが、「スクリプト」パネルにスクリプトを記述し、コマンド実行する場合は、記述を必要としません。
よって、アプリケーションクラス(Pcm.AppClass)のメソッド・プロパティ、例えば、GetCurrentPcmDoc()を使用する場合は、
[JScriptの場合]
var objDoc = GetCurrentPcmDoc();
[VBScriptの場合]
Set objDoc = GetCurrentPcmDoc()
と記述します。
- 要点3
- [プロジェクト]リボン-[プロジェクト設定]-[プロジェクト]の「表示モード」パネルの内容は、GetCopyOfDispMode()等で表示モードクラス(Pcm.PcmAutoDispModeClass)のオブジェクトを取得し、プロパティ:ModeLong()、ModeDouble()で取得・設定、変更はSetDispMode()等で上書きします。
[JScriptの場合]
var objDm = objPrj.GetCopyOfDispMode(-1);
objDm.ModeLong(lngMode) = lngStatus;
var temp = objPrj.SetDispMode(-1, objDm);
[VBScriptの場合]
Set objDm = objPrj.GetCopyOfDispMode(-1)
objDm.ModeLong(lngMode) = lngStatus
temp = objPrj.SetDispMode(-1, objDm)
- 要点4
- 「レイヤーエキスパート」の各レイヤーパネルの内容は、SearchLayer()等で該当レイヤーのオブジェクトを取得し、プロパティ:DispModeLong()、DispModeStr()等で取得・設定を行います。
[JScriptの場合]
objLyr.DispModeLong(lngType, false, lngMode) = lngStatus;
objLyr.DispModeLong(lngType, true, lngMode) = lngStatus;
[VBScriptの場合]
objLyr.DispModeLong(lngType, False, lngMode) = lngStatus
objLyr.DispModeLong(lngType, True, lngMode) = lngStatus
- 要点5
- ベクターウィンドウ上の描画変更を行った場合は、ベクタードキュメントクラス(Pcm.PcmAutoPcmDocClass):Repaint()メソッドを使用して再描画を行います。
ここでは、コマンドの連続実行を想定し、記述しません。
よって、任意にコマンド「Repaint」を実行する必要があります。
《例》「表示モード」パネルの前景レイヤー:ポリゴン「属性」チェックボックスと背景レイヤー:ポリゴン「属性」チェックボックスをOffにします。
SetPrjDispMode△111△0;SetPrjDispMode△211△0;Repaint;
- 要点6
- JScriptは、ローマ字の大文字・小文字を判定します。
[スクリプト]リボン-[エディター]-[プロパティ]の「キーワードの英文大小」チェックボックスをOnにしていると、
function SetPrjDispMode(){
を
Function SetPrjDispMode(){
に自動変換されてしまいます。
「キーワードの英文大小」チェックボックスをOffにして下さい。

- ■ 実行
-
- ベクターウィンドウをアクティブにします。
- コマンドラインバーが表示されているか確認します。
表示されていなければ、[ワークスペース]リボン-[コマンドバー]-[コマンドラインバー]を実行します。
- 「SetPrjDispMode△111△0;SetPrjDispMode△211△0;Repaint;」(△は半角スペース)と記述し、実行します。
- 「表示モード」パネルの前景レイヤーポリゴン「属性」チェックボックス、背景レイヤーポリゴン「属性」チェックボックスがOffになります。
- 「SetLyrDispMode△"画地"△3△2△0△0;Repaint;」(△は半角スペース)と記述し、実行します。
- 「画地」レイヤー「ポリゴン」パネルの前景時「フィル」チェックボックス、背景時「フィル」チェックボックスがOffになります。

|