Visual C ++からU3D/PDF3Dをエクスポートします
-
10-10-2019 - |
質問
図面をPDF3Dにエクスポートしようとするときに発生するVisual C ++に記述されたCADアプリケーションのメモリ使用の問題を解決するように要求されました。
特徴のエクスポートは、単純なモデルまたは複雑なモデルの一部のみで動作しますが、複雑なモデル全体では動作しません。
U3Dオブジェクトを作成するために、U3D SourceForgeプロジェクトを使用しています。 PDFに挿入した後。問題があるのはオブジェクトを作成する部分です。
U3D SourceForgeプロジェクトは、2007年以来死んでいるC ++で使用するためのC ++に組み込まれたライブラリであり、ドキュメントが不十分で、そのサンプルのコレクションは十分ではありません!プロジェクトのTODOリストには、メモリの問題があるとも述べられています!
だから私は2つの側面で問題を攻撃するように求められました:
U3Dコードのメンテナンスを行います。
アプリケーションがU3Dライブラリと対話する方法を変更します。
彼らはまた、私たちの管理下にあるので、サイド2を好む。
問題を解決しようとすると、2つの結論が得られました。
U3DメソッドEncoDexがメモリの誤用に責任を負うことを強く疑っています。
私は、ApllicationがLIB(圧縮パラメーター、フラグなどの変更)と相互作用する方法のために、小さなことの多くの変更を試みました。
質問は次のとおりです。このライブラリを使用し続ける価値はありますか?それのコードは読む喜びではありません...または、同じ目的のために他のLIBを見るのは良い考えかもしれませんか?私はそれらを探索しませんでしたが、私は真剣にVcglibまたはLibharuに切り替えることを考えています...それが良いことを知っていれば、何か他のものを提案してください。
もう1つの選択肢は、視覚技術PDF3D輸出国を使用して、容認できないコストを抱えているか、U3D輸出業者の私自身の実装を開発します。 NTは、予想される締め切りの準備をします。したがって、これらのオプションを禁じられていると考えてください。
何が最善かを決めるために本当に助けが必要です。
よろしくお願いします、セルジオ
解決 2
いくつかの絶望と悪い眠りの夜の後、記憶の漏れや他の記憶のトラブルを発見しようとすると、最も実用的な解決策について結論付けました。
ファイルをロードしてU3Dとして小さなプログラムにエクスポートし、メインのCADアプリケーションに呼び出すために必要なコードパーツのみを抽出します。それは最もエレガントなソリューションではありませんが、本当にうまく機能します - 2 GBの障壁に近いメモリ使用量に達するプロセスはありません。
私はこのように事前に物事を解決することを許可されていたことを願っています。私は次のような他のことを提案しました:
64ビットに移動します
最新のWindowsバージョンが各プロセスのメモリ限界を2 GB以上に拡張するためのサポートを使用するオプションを使用します
これらの2つのソリューションはどれも受け入れられませんでした。これは、一部の顧客にすでに実行されているハードウェアまたはソフトウェアを再インストールするように強制する必要があるためです。
他のヒント
いくつかのコメント:VCGLIB-無関係に、MESHLABはコア関数にVCGLIBに依存していますが、U3Dエクスポートコマンドラインツールはテキスト形式からU3Dに変換され、そのツールはSF U3D LIBからです。 libharu- 3DモデルをPDF出力に埋め込み、モデル(U3DファイルまたはPRCファイル)を作成できません。
もう1つのオプションは、他のAdobe 3D PDF形式、PRCをアウトプットすることです。 Acrobat SDKには、擬似コードの形式の形式の説明があります。そのPRC出力に基づいて、漸近ツールに実装されました。 SourceForgeで見つけて、興味がある場合はAsymptoteフォーラムで質問してください。