JW_CADやBeDrawには外部変形というものがあります。
皆さんご存じの通りCADから外部プログラムを呼び出せる機能の事ですが
CADは他のプログラムを起動する前に、画面上に描画された図形要素の情報をテキストファイルに出力します。
起動されたプログラムは、このテキストファイルを自由に編集した後上書保存して終了します。
するとCADは再びこのファイルを読んで編集内容を自身の描画情報に反映させます。
結果、外部プログラムが自動的に描画したことになるというものです。
極外変網では、CADに呼ばれた外部プログラムはテキストファイルを自分で編集できません。
でどうするかというと、通信機能を使ってネット上にある特定のプログラムに接続し、そこに変形作業を下請させるのです。
テキストファイルをネットの先にアップロードし、変形処理が終わったファイルをまたダウンロードして元にもどすというしくみを持っています。(極外変網クライアント)
極外変網クライアントは、ネット上のプログラムの場所とその機能さえわかれば、あちこちに変形下請けをさせるだけなのでただ1個でも複数の仕事ができる事になります。
つまりユーザは機能ごとにいろいろな外変をインストールしたりその動作環境を整備したりという煩雑な作業から解放され、必要な機能を簡単に手に入れて実行することができるのです。
また将来発展して国内中のサーバ型外変が使えるようになれば一種の分散処理システムが構築できます。
極外変網ではクライアント・サーバ型の動作をします、CADから見たときの外部変形実行プログラムが極外変網でのクライアントになっています。
プロトコルは、上り下りともHTTP(S)を使用します。クライアントはIE依存となっていて選択肢はありません。
クライアントは
サーバから依頼品運搬用の箱(フォーム)を受け取る。
CADが出力した外変用のテキストファイルと外変オプションを箱の所定場所に入れてサーバに投げる (OKボタン押)。
待つ。
サーバに加工済品のURLを通知してもらう(フォーム内テキスト)。
加工済品をダウンロード(MSXML)して元のファイルと置換する。
終わる。
サーバはHTTPデーモンのCGIとして動作します。
C-S通信は全てHTMLフォームを介することで実現しています。
依頼品運搬用の箱(フォーム)を用意する。
クライアントに投げてもらった箱の中味をサーバ側ローカルに保存する。
保存したファイルに対して実際の外部変形作業をする。(*1)
処理が終わった加工済品のURLをクライアントに通知(フォーム内テキスト)する。
終わる。
(*1):実際には、サーバがローカル内又は他の場所に再下請けに出すことも可能ですしそれが普通。
クライアント側がDOS、サーバ側がUNIX(Linux)であることを想定しています。
サーバは受信したテキストをローカルに保存する時に改行コードの変換を行ないます。外変プログラムはサーバ側環境で通常のテキスト読込ができます。
クライアントは変形後ファイルをバイナリモードでダウンロードします。したがって外変プログラムが変形後ファイルに書込む時に改行コードをDOSの\r\nにすると都合がよろしいが、\nだけでも支障なく動作することが確認されています。
つまり極外変網では
このような処理を行っています。
外部変形プログラムはテキスト処理であり、特にスクリプト系の場合はWindows上でもサーバ上でも同じように動作しますので今までの資産が有効利用できます。
「わかりにくい」とお考えの方
手動極外変網というのは如何でしょうか。
極外変網クライアント(FENs.exe)の動作を手動で再現してみます。
まず下記のようなbatファイルを用意します。
------------ここから---handshake.bat------
rem 三斜計算on極外変網
rem #jw
rem #cd
rem #hc 三斜計算する三角形範囲を選択
rem #h1
rem #g1
rem #c 領域番号初期値(無指定:1) /_
rem #1 面積表描画位置を指示
rem #e
:exe
start /wait notepad.exe jwc_temp.txt
------------ここまで---------------------
では始めます
これで極外変網のトレースが終わりました。
FEN.exeはこんなことを自動的に行っています。
since 2003/10/26 by .h