Visual C++で書かれたCADアプリケーションで図面をPDF3Dに書き出す際に発生するメモリ使用量の問題を解決してほしいと依頼されました。
機能のエクスポートは、単純なモデルまたは複雑なモデルの一部のみでは適切に動作しますが、複雑なモデル全体では適切に動作しません。
U3D オブジェクトの作成には U3D sourceforge プロジェクトを使用しています。PDFに挿入した後。問題があるのはオブジェクト作成部分です。
U3D sourceforge プロジェクトは、C++ で使用するために C++ でビルドされたライブラリでもありますが、2007 年以降廃止されており、ドキュメントが貧弱であり、そのサンプルのコレクションは十分とは言えません! プロジェクトのTODOリストにも、メモリの問題があると記載されています!
そのため、私はこの問題を 2 つの側面から攻撃するよう求められました。
U3D コードのメンテナンスを行います。
アプリケーションが U3D ライブラリと対話する方法を変更します。
彼らはまた、私たちの管理下にあるので、サイド2.が好ましいと言いました。
問題を解決しようとしたとき、2 つの結論を得ました。
私は、U3D メソッド EncodeX がメモリの誤用の原因であると強く疑っています。
アプリケーションがライブラリとやり取りする方法(圧縮パラメーター、フラグなどの変更)について、小さな変更をたくさん試みましたが、そのたびにメモリの過剰割り当てが発生しました。
問題は、このライブラリを使い続ける価値があるかどうかです。そのコードは読むのが楽しいものではありません...または、同じ目的で他のライブラリを見るのは良い考えでしょうか? 私はそれらを調査しませんでしたが、VCGlib または libharu に切り替えることを真剣に考えています。
他の選択肢は次のとおりです: Visual Technologies の PDF3D エクスポーターを使用しますが、これには許容できないコストがかかります。または、U3D エクスポーターの独自の実装を開発することもできます。予想される締め切りの準備ができていません。したがって、これらのオプションは禁止されています。
何が最善かを判断するには、本当に助けが必要です。
前もって感謝します、セルジオ