サポート > PC-MAPPING ヒント集 > スクリプト > イベント駆動型スクリプティングH [スクリプトをコマンドとして実行]
イベント駆動型スクリプティング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」を例に記述します。

  1. ダウンロードしたファイルを解凍します。
    ここでは、「C:\sample\script43」とします。

  2. PC-MAPPINGを起動します。

  3. 「C:\sample\script43\Sample_js.pcm」を開きます。

  4. [プロジェクト]リボン-[プロジェクト設定]-[プロジェクト]を実行し、「スクリプト」パネルを開きます。

■ 解説
要点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にして下さい。

■ 実行
  1. ベクターウィンドウをアクティブにします。

  2. コマンドラインバーが表示されているか確認します。
    表示されていなければ、[ワークスペース]リボン-[コマンドバー]-[コマンドラインバー]を実行します。

  3. 「SetPrjDispMode△111△0;SetPrjDispMode△211△0;Repaint;」(△は半角スペース)と記述し、実行します。

  4. 「表示モード」パネルの前景レイヤーポリゴン「属性」チェックボックス、背景レイヤーポリゴン「属性」チェックボックスがOffになります。

  5. 「SetLyrDispMode△"画地"△3△2△0△0;Repaint;」(△は半角スペース)と記述し、実行します。

  6. 「画地」レイヤー「ポリゴン」パネルの前景時「フィル」チェックボックス、背景時「フィル」チェックボックスがOffになります。