サポート > PC-MAPPING ヒント集 > スクリプト > イベント駆動型スクリプティングA [スナップモードの変更]
イベント駆動型スクリプティングA [スナップモードの変更]
作図する時に、「前景と背景レイヤーのアークやポイントをスナップしたいが、背景レイヤーが邪魔な時は、前景レイヤーのアークやポイントのみを対象にしたい。このような時、作図をやめて[プロジェクトエキスパート]-[環境-2]のスナップ設定を変更し直すのは面倒…」と思った事はありませんか?
ここでは、プロジェクト内スクリプトを使用し、OnKeyDownイベントに対して「スナップ設定」を変更するスクリプトを記述しました。
■ サンプル
サンプル[script4.zip(約2KB)]をダウンロードする
スナップ設定.js:サンプルJScript
スナップ設定.vbs:サンプルVBScript

《内容》
  • 「F7」キーを押した時、前景(編集)レイヤーのベクターのみスナップ対象とします。
  • 「F8」キーを押した時、表示されている全ての背景レイヤー、広域ベクターをスナップ対象とします。
  • 「F9」キーを押した時、レイヤーに登録されている背景イメージ、広域イメージをスナップ対象とします。

■ 解説
function OnKeyDown(lngPara1, lngPara2, lngPara3, lngPara4)
{

}
  • 「F7」キーを押した時、レイヤー「前景(編集)レイヤー」、対象「アーク線上近接点」「ノード」「ポイント」「図郭線上」のスナップ設定へ変更します。
  • 「F8」キーを押した時、レイヤー「すべての(表示状態の)背景レイヤー」「(表示状態の)広域ベクターも対象にする」、対象「アーク線上近接点」「ノード」「ポイント」「図郭線上」のスナップ設定へ変更します。
  • 「F9」キーを押した時、レイヤー「前景(編集)レイヤー」、「すべての(表示状態の)背景レイヤー」、対象「背景イメージ」、「背景レイヤーの背景イメージ」、「広域イメージ」のスナップ設定へ変更します。

OnKeyDownを実行すると、第一引数として「キーコード」を返します。F7は「118」、F8は「119」、F9は「120」です。
キーコードに関しては、PC-MAPPINGヘルプの「仮想キーコード表」をご覧下さい(不明な場合は、第1引数をメッセージで表示し、ご確認下さい)。
F7、F8、F9が押された時はOnFDownを見ています。
OnFDownは、PcmAutoProjectクラスのEnvLongプロパティを使用し、環境設定を変更しています。
EnvLongの第1引数は、環境変種の種類になります。ここでは、スナップ設定=101です。
EnvLongに入力する値は、スナップ設定する項目の和になります。

■ 実行
例えば、F7の場合、
  • レイヤー「前景(編集)レイヤー」= 8192
  • 対象「アーク線上近接点」= 8
  • 対象「ノード」= 1
  • 対象「ポイント」= 64
  • 対象「図郭線上」= 128
よって、8192+8+1+64+128=8393を入力しています。
この値についてはAutomationリファレンスマニュアルをご覧下さい(不明な場合は、[プロジェクト]リボン-[プロジェクト設定]-[プロジェクト]を実行、[環境-2]パネルの「スナップ設定の編集」ボタンでスナップ設定後、EnvLongプロパティの値をメッセージで表示し、ご確認下さい)。

▼ F7を押した場合

▼ F8を押した場合

▼ F9を押した場合

となります。
※ダウンロードしたファイルは、[プロジェクト]リボン-[プロジェクト設定]-[プロジェクト]の[スクリプト]パネルにコピーし、通知するイベントにチェックを入れて下さい。
また、このファイルにサンプルプロジェクトはありません。
作業環境に合わせて、キーコード、スナップ設定等を変更する必要があります。