図面出力にかんして その2

さて,前の記事に引き続いて,今回はPostScriptにおける出力の記事.

何でまたまた.psなんて古いものを...と思う方もいるとおもうが,私自身これを始めた理由がチームで今まで使っていたプロペラソフト「Dpeller」(これで私がどこの誰だか分かる人もいると思うが)が.PS出力しか対応していなかった,という理由につきる.

しかし始めて見ると,ghostscript+GSview+pstoeditの組み合わせが非常に強力で,.dxf出力も.pdf出力も何でもござれである.
まぁ,この組み合わせを使いこなせるようになるのも結構コツがいるのだが.

さて,始めてみよう.

まず,PostScriptを使う環境を整える.

上に述べた三つのプログラムは,このURLからダウンロードするのがいいだろう.
http://pages.cs.wisc.edu/~ghost/gsview/index.htm
この中からGhostscript,GSview,pstoeditをダウンロードする.注意点として,pstoeditフォルダはGSviewの存在するフォルダであるプログラムファイルの中の「Ghostgum」の中に入れておく必要がある.

後は.psをGSviewに関連付ければOK.

開いてみるとこんな感じ.用紙のサイズがあっていなかったらMediaタブで変更できる.


さらに,pstoeditが正しくインストールされていれば,Editの中のConvert to vector format...で.dxfに変換できる(直線の集まりとして出力するか,スプラインとして出力するかも選ぶことが出来る.変換に関する注意点は後で詳しく.)

さて,.psファイルの中身を見てみよう.テキストエディタで開くとこんな感じ.

%!PS-Adobe-3.0
/Times-Roman findfont 36 scalefont setfont
/mm {2.834646 mul } def
newpath
10 mm 87 mm moveto
(a plane on the sand) show
/Times-Roman findfont 18 scalefont setfont
0 mm -42 mm rmoveto
(yuukivel) show
0 mm 100 mm moveto
200 mm 0 mm rlineto
200 mm 50 mm lineto
stroke
showpage

このプログラムをGSviewで開くと次のように表示される.



なかみを詳しく見ていこう.
最初の行 %!PS-Adobe-3.0 は宣言の文らしい..PSファイルにはこれを先頭に書く.

続いて /Times-Roman findfont 36 scalefont setfont
 はTimes-Romanと言うフォントをライブラリから探して大きさ36ポイントでセットしなさいという意味.
これを書くとこれ以降このフォントが用いられる.フォント変更は6行目のように書く.

3行目 /mm {2.834646 mul } def という言葉だが,これは出力をmm単位にする魔法の言葉.ちゃんと書くとmmという言葉を 2.834646 mul という言葉に翻訳しろという意味.
PostScriptはスタックという概念を用いて演算を行う.詳しいこと書くとめんどくさいので,知りたくなったらググってくれい.じっさい,図面を書くだけならスタックの概念は分からなくても大丈夫.

newpath moveto lineto rmoveto rlinetoに関して,PostScriptはカレントポイントという概念があって,カレントポイントを筆に見立てて,カレントページに絵を描いていくという考え方.
まぁこのあたりはPostScriptで軽くググればいくらでも出てくるので省略.円を描く演算子arcにかんしても同様.ググって下さい.

4行目 (a plane on the sand) show
だが,単純にカレントポイントから()内の文字を写せという意味.

stroke showpage に関してはこれもまたおまじないみたいなもの.strokeで今まで動かしてきたpathをカレントページに描画する.そしてshowpageでページ出力.いままで書いたpathは消去される.


ね.簡単でしょう(爆)

ざっとした説明だったけれども,ネットに結構参考資料があるので,試行錯誤しながら頑張って下さい.

さて,これで翼型図面を出力するにはどうするか.そうですね.3DCADに出力するときに利用した座標を使えば良い.

つまり,翼型を出すだけなら
%!PS-Adobe-3.0
/mm {2.834646 mul } def
newpath
(翼型の始点x座標) mm (翼型の始点y座標) mm moveto
(翼型のx座標) mm (翼型のy座標) mm lineto

(翼型のx座標) mm (翼型のy座標) mm lineto
stroke
showpage


で何とかなる.ただし,原点はページの左下なので,座標に第二,第三象限のものがあると見切れてしまう.適当な値を足しておくことをオススメする.
また,これはスプラインでも何でも無いので,翼型の座標点の点数は,翼型前縁に相当増やさないと残念な感じになる.
参考までに,私は翼型のx座標0〜0.1までに600点,それ以外に200点入れている.(たぶんやり過ぎ)

こんな感じで加えて文字とか装飾を施し,仕上げたのが一番最初の.psファイル画像になる.

このPostScriptファイルを運用する時,.pdf や.dxfに変換する必要があろうが,この点に関してGSview&pstoeditは非常に強力なツール.

.pdf変換の時はGSviewのfileタブのconvert... でDeviceのところでpdfwriteを使えば良い.
と多くの参考資料に書いてあるのだが,私のGSviewのDeviceのところにそんなものはなかった.これが困った.
解決法「Deviceのところに「pdfwrite」と打ち込む.」が正しい.

後はページサイズを可変にして,.pdfで保存する.これでおしまい.

.dxfは前に述べたとおりだが,注意点として,チェックボックスの二つともにチェックを付けること(理由知らない),Driver options に(mmで記述したなら)「-mm」と入れておくこと.
これらに注意して変換すれば,ホラ,ちゃんと.dxf出来たでしょ.

凄く雑駁な感じになったが,出力に関してはこんな感じ.

プログラムで図面が印刷できるようになれば,翼型混合などの設計の幅は広がるし,なにより,出力する方法がなくて新しい方法に手が出せない設計者が,実力を発揮できるようになると信じている.