サポート > PC-MAPPING ヒント集 > スクリプト > スクリプトによる文字ボックス型「引き出し線」有無の検索
スクリプトによる文字ボックス型「引き出し線」有無の検索
データベースには「フォント型」「カラー型」「文字サイズ型」「文字ボックス型」など、PC-Mapping専用のフィールド型が存在します。
これらフィールド型の幾つかは、[データベース]-[表示]-[検索]で設定値を検索する事ができます。
例えば、「文字ボックス型」であれば、「検索フィールド」ドロップダウンリストで「文字ボックス型」のフィールドを指定、「基準値/参照フィールド」ドロップダウンリストの【∨】箇所をクリックすると、「文字ボックス」ダイアログボックスが表示されますので、各設定を行い、【OK】ボタンをクリックします。
ただし、「条件」ドロップダウンリストは「一致」「不一致」だけですし、「文字ボックス」ダイアログボックスの「レンジ」欄が「1」だけ(他の設定はなんでも可)を検索するなど、複雑な条件では行えません。
ここでは、PcmAutoPcmDbClass:GetCellData()メソッドの使用例として、「文字ボックス型」フィールドから「引き出し線」を設定しているベクターを検索し、選択状態にするスクリプトをご紹介します。
なお、ここでは行いませんが、「文字ボックス型」フィールドの「レンジ」欄は「1」かつ「引き出し線」を設定しているなど、複数の条件で検索する事も可能です。
■ サンプル
サンプル[script50.zip(約15KB)]をダウンロードする
sample.pcm:サンプルプロジェクト

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

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

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

  4. [プロジェクト]-[プロジェクトエキスパート]から「スクリプト」パネルを開きます。

  5. 「スクリプト」パネルは、ウィンドウ右下の角をドラッグ&ドロップする事で、広げる事ができます。
    「スクリプト」パネルが見にくければ、【編集>>】ボタンをクリックし、スクリプトエディターで開く事ができます。

■ 解説

要点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を選択状態にします。

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

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

  3. コマンド「pcmsearchtextboxline△4△文字ボックス型」と記述し、実行します(アルファベットは半角小文字、△は半角スペース、数字は半角)。
    パラメーター「4」はベクター要素番号で「ポイント」を示します。
    パラメーターを「1」にすれば「アーク」、「2」にすれば「ノード」、「3」にすれば「ポリゴン」を指定できます。
    「文字ボックス型」は文字ボックス型のフィールドタイトルを示します。

  4. すると、「sample」レイヤーポイント内部属性「文字ボックス型」フィールドに「引き出し線」が設定されている文字列「高橋」「鈴木」「渡辺」のポイントが選択状態になります。

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