サイトアイコン CAD日記

Jw_cadのデータ形式をひもとく

Jw_cadはこの業界の誰もが知っているフリーのCADソフト。その歴史は長く、MS-DOS版の初版が1991年だったというのだから、30年以上も経過しており今でも建築業界で使われている生きるレジェンドだ。1997年にWindows版が出てからでも25年も経っているわけでスゲーなぁ。

日本でCADを作ってるメーカーはJw_cadの存在を無視できないので、jwcやjwwの読み書きを可能にしている。データ形式が公開されているから、C++プログラマーならさして手間をかけずにコンバーターを作れる。以下が公開情報。
Jw_cadのデータ形式

色や線種については別記事で書いたので、ここでは図形について記す。図形タイプは以下の7種類のみ。文字で画像配置が可能なので実質8種類。
線 CDataSen、円弧 CDataEnko、点 CDataTen、文字 CDataMoji、寸法 CDataSunpou、ソリッド CDataSolid、ブロック CDataBlock
これらがどんな情報を持っているのかの詳細は上記サイトからわかるとして、以下では概要と特徴について語る。

【線 CDataSen】
始点と終点の座標があるだけ。
【円弧 CDataEnko】
円、円弧、楕円、楕円弧が表現可能。中心点、半径、開始角、終了角が円弧の基本として、そこに傾き角、扁平率、全円フラグがあるから、多様な幾何図形を表現できる。
【点 CDataTen】
点の座標は当然あるとして、仮点フラグ、点の形状、角度、倍率もあり。
【文字 CDataMoji】
サイズの縦横間隔、始点終点座標、角度、フォント、文字列など。寸法値設定フラグがビットフラグになっていて、小数点以下の桁数はφを頭につけるなんて寸法値固有の属性設定がある。Jwwに寸法という構造がないので、このフラグがどんな意味があるのかはよくわからないが、見た目を再現するためには不要な情報だろう。
文字列の先頭に「^@BM」があると画像として認識して、bmpを表現できる。
【寸法 CDataSunpou】
上で寸法の構造はないと言い切ったが、簡易的な寸法はある。線と文字と点をグループ化したもの。寸法矢印が何でサイズがいくつ。。のような寸法固有情報はない。
【ソリッド CDataSolid】
ハッチングや塗りつぶしとも言う。円や円弧や線で囲んだ領域を塗りつぶす。楕円、楕円弧も可能。でも、複数の円弧をつなげた領域は無理なので、このソリッドを複数配置して最終的な塗りつぶし形状を表現することになる。
【ブロック CDataBlock】
1定義複数配置が可能なおなじみの構造。データリストは一般図形用(m_DataList)とブロック図形用で2種類ある。C一般図形用の中にCDataBlockがあって、その参照先の定義がブロック図形用にある。jwcにはなかった構造だが、一般的なCADには必ずある。

こう見ると、シンプルで必要最小限でほどよい情報量だということがわかる。dwgだと比べようがないほどに複雑怪奇なわけで、対比するととても好ましく感じる。情報量が少ないjwwを多いdwgに変換する分には、書くべきコードは少なくて済む。逆の変換をしようとするとタイヘンだろうな。いやいや、複雑な図形タイプは分解しまくればいいのか。

モバイルバージョンを終了