スクリプトによる注記属性の引き出し線位置の設定
前景レイヤーポイント内部属性「X」,「Y」フィールドの座標値とポイント座標値を比較し、その差分を「注記属性」フィールドの文字ボックスの引き出し線「X」「Y」欄へ反映するスクリプトです。
- ■ サンプル
サンプル[script20.zip(約17KB)]をダウンロードする
 | sample.pcm | :サンプルプロジェクト |
 | PcmSetTbLineXY.js | :サンプルJScript |
 | PcmSetTbLineXY.vbs | :サンプルVBScript |
- ■ 準備
- JScriptの場合「PcmSetTbLineXY.js」、VBScriptの場合「PcmSetTbLineXY.vbs」を記述します。
ここでは、「PcmSetTbLineXY.js」を例に記述します。
- ダウンロードしたファイルを「C:\sample\script20」フォルダーへ解凍します。
- ダウンロードしたスクリプトファイル「PcmSetTbLineXY.js」をユーザーメニューに登録します。
[ワークスペース]リボン-[カスタマイズ]-[ユーザーメニュー]を実行して[ユーザー定義メニュー1]ダイアログボックスを表示します。
<追加>ボタンをクリックし、[ユーザー定義メニュー2]ダイアログボックスを表示します。
スクリプトを以下のように設定します。
- サンプルプロジェクト「sample.pcm」を開きます。
- 画面には、「sample」レイヤーポイント内部属性「注記属性」フィールドの設定を表記しています。
- [注記属性の設定]ダイアログボックスの文字ボックス<設定>ボタンから[文字ボックス]ダイアログボックスを表示します。
引き出し線「X」「Y」欄は0になっています。
- 「sample」レイヤーポイント内部属性「X」「Y」フィールドには、引き出し線の座標値(平面直角座標系)が入力されています。

- ■ 解説
-
- 要点1
- [文字ボックス]ダイアログボックスの引き出し線「X」「Y」欄の値(mm)は図葉上サイズなので、実長から図葉上サイズに変更するために、「sample」レイヤーの座標系情報から付帯情報の縮尺を取得します。
var dblScale = 1 / objCi.InfoDouble(11);
- 要点2
- 「注記属性」フィールドから「注記属性」の設定値を取得します。
var objData = objLDb.GetCellData(i, lngLFID, false);
- 要点3
- 「注記属性」の設定値から「文字ボックス」の設定値を取得します。
var objTb = objData.TextBox();
- 要点4
- [文字ボックス]ダイアログボックスの引き出し線「X」「Y」欄の値(mm)は図葉上サイズなので、実長から図葉上サイズに変更するために、
ポイント座標値からの相対サイズ(m)=(引き出し線座標値-ポイント座標値)
1(m)=1000(mm)
図葉上サイズ(mm)=相対サイズ(m)×1000(mm)×縮尺
の計算を行い、入力します。
objTb.LineDy = ( objLDb.GetCellAsDouble(i, lngLFID2, false) - objLyr.PntGetPos(i, 1, 1) ) * 1000 * dblScale;
objTb.LineDx = ( objLDb.GetCellAsDouble(i, lngLFID3, false) - objLyr.PntGetPos(i, 0, 1) ) * 1000 * dblScale;
- 要点5
- 変更した「文字ボックス」の設定値を「注記属性」の設定値に反映します。
objData.TextBox = objTb;
- 要点6
- 変更した「注記属性」の設定値を「注記属性」フィールドに反映します。
blnTemp = objLDb.SetCellData(i, lngLFID, objData);
- ■ 実行
-
- サンプルプロジェクト「sample.pcm」を開きます。
- [ユーザーメニュー]リボン-[作図]-[引き出し線位置の設定]を実行します。
- すると、引き出し線が表示されます。
- [文字ボックス]ダイアログボックスの引き出し線「X」「Y」欄を見ると、値が入力されている事がわかります。

- ■ 注意
-
- [文字ボックス]ダイアログボックスの引き出し線「X」「Y」は、ポイント座標値からの相対的な図葉上サイズになるため、有効小数点以下桁数には制限があります。
よって、ポイント内部属性「X」「Y」フィールドの座標値(平面直角座標系)と厳密には一致しません。
- このスクリプトは、平面直角座標系のみ対応しています。
|