あしたから本気出す
いろいろ工作して情報発信してみる。自作キーボードとか。
開発ブログ
自作キーボード「TypingTrigger-SDZERO」
自作スマートフォン緊急充電器
プログラマブルな自動化キーボード実装編
プログラマブルな自動化キーボード(プロトタイプ編)を作ってみる-後編
開発ブログをもっと見る
ブログなど
ブログはこちら
ダウンロード
JW_WIN外部変形Kiefer
JW_WIN外部変形FastMeasure
お知らせ
2010/10/1 ブログを新しくした
2009/9/4 twitter始めた
2009/7/14 サイトのタイトル変更した

管理者プロフィール (-)
suda 81年神奈川県生まれ
職業:GRAFZ.NETという屋号でプログラム制作してます。
一言:実用性を形にする。工作の日々。
コンタクトは以下までお願いします。感想、応援、苦情とか
RSS
ブログをRSS配信してます。


© GRAFZ.NET 2008-2010
9月2日
Jw_cadの外部変形の作り方



Jw_cadの外部変形の作り方

Jw_cad、外部変形とは何か
Jw_cadは根強いシェアを誇るフリーのCADソフトウェアで、ホビー用途からプロまで幅広く支持されている。ちなみに僕の実家は造園設計屋なのだが、DOS版までさかのぼると15年近く商売道具として利用しているようだ。多くの他のソフトウェアと同じく、機能拡張のために様々なプラグインを利用することができる。Jw_cadではプラグインは「外部変形」という名前で呼ばれている。

Jw_cad単体でも直感的で優れた操作性を備えたすばらしいソフトだが、外部変形を利用することで図形の描画や処理の自動化など、ユーザーごとの細かい要求に手が届くようになっている。外部変形の開発に必要なSDKは公開されていて、既に数多くの秀逸なプログラムが無償で公開されている。

外部変形を作る意義
Jw_cadを掃除機に例えるのはひょっとしたら僕が人類初かもしれないのだが、もし先をゆく者がいたらメールをください。人類初を泣く泣く譲らねばならないので。話をもどそう。Jw_cadが掃除機だとしたら外部変形はノズルであり、自分の部屋の隅にフィットしたノズルは自分で作ろうと思えば不可能ではない。テキストファイルをプログラムで操作するスキルさえあれば、RubyでもCでもVBでも、プログラムの種類関係なく開発可能である。

外部変形で何が出来るのか。さすがに自分の代わりに仕事をしてもらい、空いた時間を腹筋の強化に当てるというのは難しいかもしれない。がしかし、いちおう無限の可能性を秘めており、例えば特定の長さの線分のみを選択状態にしたり、位置を指定するだけでマンホールの絵を自動で描いてくれたりする。外部変形を自作できれば、CADオペレータである親戚のおじさん(もしそういう人がいれば)にそれをプレゼントし、見返りとして5万円くらいの小遣いをゲットできるかもしれない。おっと、執筆者の汚い一面が見えてしまったので金の話はこのくらいにしておこう。

C++で作る
先にも触れた通り、外部変形はテキスト操作ができればプログラムの種類は問われない。これはどういう仕組みなのか。実は、外部変形が実行されるとJw_cadがテキストファイルを出力すると同時に、それを処理する実行ファイルを実行するのである。そのテキストには図形データが含まれていて、実行ファイルは必要に応じてそれを編集し、あるいは新しいデータを追加し、上書きをする。そのタイミングでJw_cadがテキストを改めて読み、外部変形の処理内容を反映してくれる、という仕組みである。プラグインの実装方法は他にDLLなどがあるが、外部変形のようにテキストファイルを介したものは、柔軟性があって仕組みとしてユニークである。

今回はC++で外部変形の最小のプログラムを作成することにした。C++を選んだしっかりとした理由は無いけれど、あえてメリットを挙げるとすれば、OSとの親和性が良くて処理も速い。では、具体的な手順を・・。

コンパイラはVisual Studio .NETを使用する。新しいプロジェクトを作成し、 Win32プロジェクトを選択。次に、プロジェクトを作成するディレクトリを指定する(ディレクトリの場所は任意)。アプリケーションの設定でコンソールアプリケーション、空のプロジェクトを選択する。ここまでが下ごしらえ。

肝心のソースコードを書く
プロジェクトにソースファイルを追加し、それにコードを書いていきます。ファイル名は「helloworld.cpp」としておきます。

「helloworld.cpp」
1:
2:
3:
4:
5:
6:
7:
8:
#include <stdio.h>

int main(){
if(FILE *fp = fopen("JWC_TEMP.TXT","w")){
fputs("ch 0.0 0.0 100 0 \" hello world!\n",fp);
fclose(fp);
}
}

全部で8行と短いコードになりました。4行目でオープンしているJWC_TEMP.TXTというテキストファイルが、Jw_cadが吐き出した図形情報です。5行目で、座標(0,0)に文字「hello world!」を追加するための記述をしています。文字列冒頭の「ch」は横文字の文字列、という意味です。

テキストファイルの書式については、
Daisy Daisy「jwc_temp.txtの解説」
にて詳しい説明がされています。

実行ファイルをビルドし、それをJw_cadをインストールしたフォルダにコピーします。
外部変形の実行には、他にバッチファイルが必要で、今回は以下のような記述です。


「helloworld.bat」
1:
2:
3:
4:
5:
6:
@REM 外部変形のハローワールド
@echo off
REM #jww
REM #h0
REM #e
helloworld.exe
1行目はコメントであり、続いて順に、「命令はプロンプトに非表示にし、」「DOS形式ではなくWINDOWS形式の出力で、」「データ選択はせず、」「設定終了」最後に実行ファイル名、という内容です。このバッチファイルも同じフォルダに保存します。では、実行してみましょう。

「その他」>「外部変形」>「helloworld.bat」を選択します。
Jw_cadの外部変形の作り方
座標(0,0)に「hello world!」という文字が追加されます。

次回は図形を選択し、それを元に何らかの線を描画する外部変形を作る予定です。

ダウンロードページ
「あしたから本気出す」オリジナル外部変形

RSS:記事の購読
RSSリーダー等で記事をご購読できます。

最後までお読みいただきありがとうございました <(_ _)>