opencascade.jsの利点
opencascade.js は、WebAssembly テクノロジを使用して OCC をブラウザ側で実行できるようにする非常に興味深いプロジェクトです。以前にもOCCのWebAssemblyコンパイルを紹介しましたが、公式のコンパイル方法と比較すると以下のようなメリットがあります。
- よりカスタマイズすることができ、インターフェイスを公開することを選択でき、印刷する wasm は非常に小さくすることができます。
- インターフェースの公開は簡単です。emccが提供するインターフェースを公開する方法を直接利用すると、各インターフェースにマクロを追加する必要があり開発工数がかかる上、occはLGPLプロトコルであるため感染しやすいです。opencascade.js を使用すると、開発を行わずにインターフェイスを公開できます。
- 各クラスに削除メソッドを提供し、デストラクターをバインドして、メモリ管理をより便利にします。
- opencascade.js は、コード解析技術を利用して occ のクラスやメソッドを抽出し、ts に必要な宣言ファイルを生成するため、ts を使用した開発に非常にフレンドリーです。
opencascade.js の使用方法:
1. opencascde.js の Docker イメージをプルします。docker を使用してコンパイルするのが最も簡単な方法です。
docker pull donalffons/opencascade.js
2. 構成ファイルを作成し、公開する必要があるクラスを指定し、emcc のコンパイル パラメータを指定します。
mainBuild:
name: custom_single.js
bindings:
- symbol: BRepPrimAPI_MakeBox
emccFlags:
- -sEXPORT_ES6=1
- -sUSE_ES6_IMPORT_META=0
- -sALLOW_MEMORY_GROWTH=1
- -sEXPORTED_RUNTIME_METHODS=["FS"]
- -O3
3. コンパイル
docker run -it --rm -v $(pwd):/src -u $(id -u):$(id -g) donalffons/opencascade.js custom_build.yml && mv custom_single* ../src
4. ts または js でモジュールを初期化します。公式のケースを参照してください。
メモリリサイクル技術
1.関数ローカルオブジェクトはdeleteを直接呼び出すことができます
2. 長期的に存続するオブジェクトは FinalizationRegistry に登録でき、js が gc を実行すると delete が自動的にコールバックされます。