印刷用の星図をさっさか作るプロジェクト っていうか、メモその1 →その2 その3 その4 その5 その6 その7 その8 その9

 

日々、星図作りをやっている気がする。初心者向けの説明用がほとんど。結構、手間がかかる。肩も凝る。さっさか作りたい。ではどうすればよいのか。

世の多くの同業者は、ステラナビゲータ(アストロアーツ社)を使っている。たしかに、グラフィカルにはきれいだし、便利。高機能。ふつうにはこれでいいと思う。で、私も使うのだけれど、印刷用にはどうなんだろうと思う。

こんなの簡単に(所要時間1分)できますけどね。by ステラナビゲータ7 & ペイントブラシ

印刷星図にするとき、上の図で気に食わないことは、

1.白黒反転したい

2.そもそも印刷ではモノクロのほうがよい

3.解像度がたりない、印刷ではシャープに表現されない

4.オリオン と ベテルギウス の 文字が重なってる

5.こいぬ と 星が重なってる

6.星座の線の結び方が気にくわない。

7.もっと星が少ない場合には、星がないところに線が引かれるのが気に食わん

8.星座の線と星の間には、ちょっと空白がほしい

9.エトセトラエトセトラ

で、これがいやだから、ミョーなことをやる。WEBの絵を作成するんは、Adobe の(というかMacromedeaの)fireworks を 使うことが多い。

このfireworksに、上の図を読み込んで、それを下絵にして書き直すのである。さて、何分かかるかな・・・・15分あまりかかった。まあ、ずいぶん手慣れてだけれど・・・手作業だからね。

この作業の中間がやれればいいと思う。

1.白黒反転でモノクロな図が高解像度で欠けて、

2.星座や星の名称も自動的に付加されて、しかもその位置を微調整できて

3.星座の線も、ちょっと空白開けて表示

fireworks は、ベクター系のソフトでもあるので文字などがそれぞれオブジェクトとして保持されており、その位置やフォントの変更、表現や大きさの変更が簡単にできる。上の図をちょっといじると、こうなる。所要時間は2分間

あまり、センスがいいとはいえないが、こんな修正が簡単にできる。

つまり、下絵をダイレクトに fireworks に描くプログラムがあれば楽なのにな。と思う。なぞる手間がぐっとなくなる。

では、自動的に fireworks に下絵を描かせることはできるのか?

まず、fireworks 形式のPNGファイルをプログラムで作成することを考えてみた・・・・。PNG形式のあまりのややこしさと fireworks が独自の形式を用いているらしいことがわかり、その情報も得られないので挫折。

次に、fireworks の自動化を考えてみる。

実は、fireworks は マクロ(コマンド)を Javascript で書くことができる。

メニュー にある コマンドの実行 を使えばいいのだ

 

 

fireworks は、jsf という拡張子のテキストファイルに書かれた Javascript を実行することができる。

もちろん、fireworks をコントロールするためのAPIがあり、PDFで公開されている。こっちはバージョン8用。英語しかマニュアルないけど。手元にもおいておく。

日本語で、この件にかかれているページは皆無に等しい。そんな使い方はしないからなのか。

唯一見つけたのが、フリープログラマのアキ氏のページだ。ここには、ほんのわずかだがサンプルスクリプトが書かれている。

でも、おそらく当人が飽きちゃったのか、それ以上のつっこみはない。

下は、アキ氏が書いたスクリプトをほんのちょっとだけいじくった test.jsf の中身です。実行すると、新しいファイルに図(file:///C|/nissyokumap3.gif)が挿入されました。なお、file:///C| と |を使っているのは、UNIX かなにかで : が区切り子としてみなされてしまうらしいからだそうです。

−−−−−−−−−−−−−−−

var docW=fw.getDocumentDOM().width;
var docH=fw.getDocumentDOM().height;
fw.getDocumentDOM().importFile("file:///C|/nissyokumap3.gif", {left:0,right:0,top:0,bottom:0}, false);
var layerW=fw.getDocumentDOM().getSelectionBounds().right-fw.getDocumentDOM().getSelectionBounds().left;
var layerH=fw.getDocumentDOM().getSelectionBounds().bottom-fw.getDocumentDOM().getSelectionBounds().top;

fw.getDocumentDOM().moveSelectionTo({x:docW-layerW, y:docH-layerH}, false, false);
fw.exportDocumentAs(fw.getDocumentDOM(),null,fw.getDocumentDOM().exportOptions);

−−−−−−−−−−−−−−−

頻繁にでてくるDOMというのは、黒い三連星ではなくDocument Object Model(DOM) のことです。アプリケーションソフト(この場合は fireworks) から、html や xml 形式のファイル(この場合は、jsf ファイル)を読むために定められた規格とのことです。wikiの解説はこちら。

2008年01月05日 記す

続く