スクリプトによる文字ボックス型「引き出し線」有無の検索
データベースには「フォント型」「カラー型」「文字サイズ型」「文字ボックス型」など、PC-Mapping専用のフィールド型が存在します。
これらフィールド型の幾つかは、[データベース]-[表示]-[検索]で設定値を検索する事ができます。
例えば、「文字ボックス型」であれば、「検索フィールド」ドロップダウンリストで「文字ボックス型」のフィールドを指定、「基準値/参照フィールド」ドロップダウンリストの【∨】箇所をクリックすると、「文字ボックス」ダイアログボックスが表示されますので、各設定を行い、【OK】ボタンをクリックします。
ただし、「条件」ドロップダウンリストは「一致」「不一致」だけですし、「文字ボックス」ダイアログボックスの「レンジ」欄が「1」だけ(他の設定はなんでも可)を検索するなど、複雑な条件では行えません。
ここでは、PcmAutoPcmDbClass:GetCellData()メソッドの使用例として、「文字ボックス型」フィールドから「引き出し線」を設定しているベクターを検索し、選択状態にするスクリプトをご紹介します。
なお、ここでは行いませんが、「文字ボックス型」フィールドの「レンジ」欄は「1」かつ「引き出し線」を設定しているなど、複数の条件で検索する事も可能です。
- ■ サンプル
サンプル[script50.zip(約15KB)]をダウンロードする
 | sample.pcm | :サンプルプロジェクト |
- ■ 準備
-
- ダウンロードしたファイルを解凍します。
ここでは、「C:\sample\script50」とします。
- PC-Mappingを起動します。
- 「C:\sample\script50\sample.pcm」を開きます。
- [プロジェクト]-[プロジェクトエキスパート]から「スクリプト」パネルを開きます。
- 「スクリプト」パネルは、ウィンドウ右下の角をドラッグ&ドロップする事で、広げる事ができます。
「スクリプト」パネルが見にくければ、【編集>>】ボタンをクリックし、スクリプトエディターで開く事ができます。
- ■ 解説
-
- 要点1
- function pcmsearchtextboxline()
本スクリプトは、プロジェクトに埋め込む事で、「pcmsearchtextboxline」コマンドとして実行できるようにしています。
- 要点2
- var sTime = pcmGetTimeNowStr();
85行目にあるpcmGetTimeNowStr()関数を実行しています。
AppClass:CreateDateTime()メソッドで日付時刻型オブジェクトを取得、PcmAutoDateTimeClass:SetCurrentTime()メソッドで現在の時刻を設定し、PcmAutoDateTimeClass:GetString()メソッドで「2」を指定して時刻フォーマットタイプ「15:23:45」の文字列を取得しています。
- 要点3
- var al = pcmGetTextBoxLine(db, fid);
120行目にあるpcmGetTextBoxLine()関数を実行しています。
PcmAutoPcmDbClass:FieldTypeプロパティでフィールド型を取得、「22」(文字ボックス型)のみ処理を行います。
for文でループしながら、PcmAutoPcmDbClass:GetCellData()メソッドで設定値を取得します。
PcmAutoDbTextBoxClass:Enableプロパティが「true」(有効)、かつPcmAutoDbTextBoxClass:LineNumプロパティが「0」より大きく、かつPcmAutoDbTextBoxClass:LineDxプロパティとPcmAutoDbTextBoxClass:LineDyプロパティが共に「0」ではないレコードを検索し、該当するベクター内部IDを整数配列オブジェクトへ追加します。
- 要点4
- var temp = lyr.MarkItemArray(type, al, true);
PcmAutoPcmLayerClass:MarkItemArray()メソッドで整数配列オブジェクトに入力されているベクター内部IDを選択状態にします。
- ■ 実行
-
- ベクターウィンドウをアクティブにします。
- コマンドラインバーが表示されているか確認します。
表示されていなければ、[ワークスペース]-[コマンドバー]-[コマンドラインバー]を実行します。
- コマンド「pcmsearchtextboxline△4△文字ボックス型」と記述し、実行します(アルファベットは半角小文字、△は半角スペース、数字は半角)。
パラメーター「4」はベクター要素番号で「ポイント」を示します。
パラメーターを「1」にすれば「アーク」、「2」にすれば「ノード」、「3」にすれば「ポリゴン」を指定できます。
「文字ボックス型」は文字ボックス型のフィールドタイトルを示します。
- すると、「sample」レイヤーポイント内部属性「文字ボックス型」フィールドに「引き出し線」が設定されている文字列「高橋」「鈴木」「渡辺」のポイントが選択状態になります。

- ■ エラーメッセージ
- エラーメッセージは、[アウトプットバー]-[メッセージ]パネルに出力しています。
「現状、実行できません」と出力される場合「パラメーターを設定しているか」「プロジェクトを読み込んでいるか」「ベクターウィンドウがアクティブか」、「失敗しました」と出力される場合「前景レイヤーにベクターが入力されているか」「ベクター内部属性に指定したフィールドがあるか」「指定したフィールドの型が文字ボックス型か」をご確認下さい。
|