JW-CADファイル(*.jww)をパースし、DXF形式に変換するライブラリです。MoonBitで実装されており、WebAssembly対応によりブラウザ環境でも高速に動作します。
- クロスプラットフォーム: ブラウザとNode.jsの両方で動作
- 型安全: MoonBitの静的型チェックによる堅牢な実装
- 高速パース: WebAssembly対応のバイナリパーサー
- SJIS対応: 日本語環境でのJWWファイルを正しく処理
- モジュラー設計: コアパーサーとDXFコンバーターを分離
moon add horideicom/jww_parsernpmへのpublishは停止中のため、リポジトリからビルドして利用してください。
git clone https://github.com/horideicom/jww_parser.mbt
cd jww_parser.mbt
pnpm install
pnpm run buildimport { jww_to_dxf, parse, to_dxf_string } from 'jww-parser';
// JWWファイルを読み込んで直接DXFに変換
const jwwData = await readFile('drawing.jww');
const dxfString = jww_to_dxf(jwwData);
// パースしてから変換(途中結果を操作したい場合)
const doc = parse(jwwData);
const dxfString = to_dxf_string(doc);import { readFileSync, writeFileSync } from 'node:fs';
import { jww_to_dxf } from 'jww-parser';
const jwwData = readFileSync('input.jww');
const dxfString = jww_to_dxf(jwwData);
writeFileSync('output.dxf', dxfString);import { jww_to_dxf } from 'jww-parser';
// File API でJWWファイルを読み込み
const file = fileInput.files[0];
const arrayBuffer = await file.arrayBuffer();
const jwwData = new Uint8Array(arrayBuffer);
// DXFに変換
const dxfString = jww_to_dxf(jwwData);
// ファイルとしてダウンロード
const blob = new Blob([dxfString], { type: 'application/dxf' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'output.dxf';
a.click();| エンティティ | 説明 | JW-CAD クラス |
|---|---|---|
| Line | 直線 | CDataSen |
| Arc / Circle | 円弧 / 円 | CDataEnko |
| Point | 点 | CDataTen |
| Text | 文字 | CDataMoji |
| Solid | 塗りつぶし | CDataSolid |
| Block | ブロック挿入 | CDataBlock |
// JWWバイナリデータをパースしてDocumentを返す
function parse(data: Uint8Array): Document
// JWWバイナリデータを直接DXF文字列に変換
function jww_to_dxf(data: Uint8Array): string// DocumentをDXF文字列に変換
function to_dxf_string(doc: Document): string
// DocumentをDXF Documentオブジェクトに変換
function to_dxf_document(doc: Document): DxfDocument
// DocumentをJSON文字列に変換
function to_json_string(doc: Document): stringinterface Document {
header: Header;
layers: Layer[];
entities: Entity[];
blocks: Block[];
}
interface Entity {
type: 'line' | 'arc' | 'circle' | 'point' | 'text' | 'solid' | 'block';
layer: number;
color: number;
// ... エンティティ固有のプロパティ
}examples/ ディレクトリに、ブラウザでJWWファイルをDXFに変換してプレビューできるデモアプリが含まれています。
cd examples
pnpm install
pnpm run devデモでは以下の機能を体験できます:
- JWWファイルのドラッグ&ドロップアップロード
- WASM-GC での高速変換
- Three.js によるDXFの3Dプレビュー(パン/ズーム対応)
- 変換結果のリアルタイム確認とダウンロード
# リポジトリのクローン
git clone https://github.com/horideicom/jww_parser.mbt.git
cd jww_parser.mbt
# 依存関係のインストール
pnpm install
# ビルド
pnpm run build
# テスト
moon test
# デモアプリの実行
cd examples && pnpm install && pnpm run devAGPL-3.0
- f4ah6o/dxf-parser - DXFパーサー
- f4ah6o/three-dxf - Three.jsでDXFを表示