「武器を身につけよう」へ戻る | |||
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 |
|||
|
|||
「武器を身につけよう」へ戻る | Topへ |