「武器を身につけよう」へ戻る

2.座標データを保存しておく

決まった形状を線形状に沿って掃引する時に元形状をいちいち形状の始点に線形状に垂直に合わせて角度を合わせてなんて結構面倒ではないですか?
私はスクリプトで処理してます。ホームページにはアップしていません(Fileパスの設定があるし、間違った操作をした際の処理がめんどくさいので)
そのスクリプトの中で形状を記憶させ、それをダイアログで選んで実行する部分に使っています。

記憶した座標データをどのように使うかは個々のアイディアに任せるとして...
考え方としては
「記憶したい線形状を選択し、AnchorPoint,InHandle,OutHandle等で座標値を取得、変数に確保し、そのデータをFSOを使って指定したfileに格納する。」
といったところです。
早速[座標デーを保存しておく」スクリプト作成に取り掛かりましょう。
Topへ

最初に、前提として三点からなる閉じた線形状があり、アンカーポイントの数も既知であり、その線形状の選択状況にあるとします.(左図参照)

それではこの座標値を取り出し変数に格納することからはじめましょう。(簡単にする為InHandleとOutHandleは無いものとします.)
dim AnchorPt(2,2),i,j
for i=0 to 2
 for j=0 to 2
  AnchorPt(i,j)=XShade.AnchorPoint(i,j)
 next
next

直接XShade.AnchorPointでfileに書き込んでもいいのですが、一応変数に確保します.

先ほどの 「別ファイルのVBScriptを実行する」 と同じようにFSOオブジェクトのインスタンスを作成します。

dim fso
Set fso=CreateObject("Scripting.FileSystemObject")
Topへ

前項では、すでにあるファイルのpathでしたが今回はまだ存在しないFileのパスを用意しておきます。(新規に作成することを意味します。)
このことは別の言い方をすると「最初のスクリプトの実行では新規作成、2回目に実行した時は上書きされる」ということです。

dim strPath
strPath="c:\posData.txt"

次はやはり先ほどと同じようにOpenTextFileでTextStreamオブジェクトを取得します。
但し今回はファイルがない場合(初回)は作ってしまうようにします。(true)
また第2引数は書き込み専用の2を指定します。

dim objStream
Set objStream=fso.OpenTextFile(strPath, 2, true)

引数の説明は前項を参考にして下さい。
いちばん簡単なのは1行に1データを書く方法なのでその方法で行きます。(他には区切り記号を使う方法があります)
1行ごとにデータを書き込むにはTextStreamオブジェクトのWriteLineメソッドを使います。

Topへ
for i=0 to 2
 for j=0 to 2
  objStream.WriteLine AnchorPt(i,j)
 next
next

これで、データが書き込まれましたのでfileを閉じましょう。

objStream.close()

ついでに開放しておきましょう。

Set fso=nothing
Set objStream=nothing

以上です。
実行するとc:直下にposData.txtという名のテキストファイルができていることが判ります。
(右図はそのテキストファイルをメモ帳で開いたところ)
このデータ(テキストファイル)は次の例題で使うのでとっておいてください。
それでは、まとめておきます。

dim AnchorPt(2,2)
dim strPath
dim fso,objStream
dim i,j

strPath="c:\posData.txt"
for i=0 to 2
 for j=0 to 2
  AnchorPt(i,j)=XShade.AnchorPoint(i,j)
 next
next

Set fso=CreateObject("Scripting.FileSystemObject")
Set objStream=fso.OpenTextFile(strPath, 2, true)

for i=0 to 2
 for j=0 to 2
  objStream.WriteLine AnchorPt(i,j)
 next
next

objStream.close()
Set fso=nothing
Set objStream=nothing


あとは復元する時(データを呼び出す時)に同じ順序で呼び出すことに注意してください。
やはりこの場合も実用性を考慮すると次の点に注意する必要があります。

  • 普通はポイントの数は一定ではない(ポイントの数は別途確保する必要が有る)
  • 形状の種類をチェックする必要がある。
  • 復元する際、閉じた線形状か開いた線形状かなどのデータも必要である。
  • Pathを間違うとファイルを壊す可能性がある。(データをしまうディレクトリを固定したり、拡張子をチェックしたりして防ぐ)


「武器を身につけよう」へ戻る Topへ