ペーパークラフトを作りたくなった。ので、印刷ツールを作った。
ペーパークラフトを作りたくて、ペパクラデザイナーのライセンスも持っているのだが、SketchUpとは相性が悪く、新しいCADを導入するのも面倒くさい、ということで、簡単に印刷ツールを作ってみた。
C#のPrintDocumentからLuaを呼び出して、Grahicsのラッパーを提供するプログラムを作った。これにより、図形をLuaで作ることができる。
イメージとしてはPostScriptに似ているかもしれない。forや数学関数が使える点が特徴的かな。
とりあえずAIM-120A/Bをモデルにしてみた。というか、AIM-120のプラモデルがほしいけど多分売ってないのでペーパークラフトで作ろうと思い至った次第。
スクリプト言語ベースなので、同じような図形を配置するのはとても簡単。ボルトが60本ほどあるが、ボルトの形を書く関数を作れば、あとはforで配置できる。
ただ、形状は全部自分で書く必要があるから、ノーズコーンみたいな、矩形で表現できない形状を追加するのは大変。1回処理を作ってしまえば、パラメータを変えて再利用できるのだが、抽象化がうまくできてないと流用できない。面倒。
昨日あたりから初めて、1日かかってようやく印刷できるようになってきた。今は簡単な円筒と円錐だけで、安定翼や操舵翼は作っていない。それを追加すれば見た目は完全にAIM-120になるはず。
5分の1スケールだけど、長さは73cmくらいある。そのくせ直径は3.6cmしかない。LD比20くらいで、APFSDSっぽい。図らずもほぼ実寸台のAPFSDSペーパークラフトになりそうだ。
直径3.6cmだと、A8-3とか入れればそのまま飛ばせそう。ただしこの細長いのが座屈しないかという問題があるけど。印刷ツールのテストが目的なのでコピー用紙で作ったが、かなりフニャフニャ。でもちゃんと接着したらそれなりに強くなるかも。写真用紙みたいな厚紙なら、かなりの強度があるかも。
3.6cmは持っててかなり頼りないので、3分の1とか2.5分の1くらいにしたい。でもそうすると全長が1mを超えてしまう。AIM-120ってデカいんだなぁと実感。でもAIM-54だと長さは同じ程度ながら、直径で2倍以上でかい。デカい。
ペーパークラフトだけで言えば、あとはフィン8枚をつければそれで終りとなる。飛ばすわけじゃないから、エンジンブロックとかも必要ない。
C#側の処理の流れがもうちょっとなんとかなりそうなので、こちらは作り直したいところ。でも今のプログラム向けのスクリプトもすでに700行を超えていて、これを新しいプログラム向けに書き直すのもいやだなぁ、と思っている。目論見どおりに、プログラムの効率化が進めばもっと少ないスクリプトで同じことができるはずなんだけど。
とりあえず、AIM-120が形になったら、次はRIM-67あたりも作ってみたいなぁ。
0 件のコメント:
コメントを投稿