問題タブ [autodesk-inventor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
71 参照

c# - Activator.CreateInstance() で作成したときに Inventor COM オブジェクトが解放されない

私の問題は次のとおりです。Autodesk Inventor が実行されていない場合、私のアプリ (コンソール アプリ) は新しいインスタンスを作成し、Activator.CreateInstance(InventorType);それを COM オブジェクトとして使用します。アプリが Inventor を終了せずに開いたままにし、後でユーザーが手動で終了した場合、タスク マネージャーでのみ実行されているプロセスのInventor.exeがタスク マネージャーでのみ強制終了されます。興味深いことに、この問題は、これら 2 つのことが組み合わされた場合にのみ発生します。アプリがInventorApp.Quit();適切に閉じられた状態で Inventor を終了するたびに、開いたままのプロセスはありません。

アプリが Inventor を起動するProcess.Start(..);か、ユーザーがアプリを起動する前に Inventor を起動し、アプリが Inventor を取得しMarshal.GetActiveObject(ProgId);た場合、アプリまたはユーザーが Inventor を終了しても問題はありません。

アプリで Inventor を起動してから Inventor をActivator.CreateInstance(InventorType);開いたままにしておくと、アプリを閉じてから再起動するMarshal.GetActiveObject(..);と、Inventor が取得されて Inventor が終了しInventorApp.Quit();、問題はありません。

そのため、左に開いたプロセスの問題は、次の特定の組み合わせでのみ発生します。

  1. からInventorを起動しますActivator.CreateInstance(InventorType);
  2. ユーザが手で Inventor を終了する

開いたままのプロセスは実行中のオブジェクト テーブルに存在しないため、COM オブジェクトとして処理できなくなり、UI が表示されなくなります。つまり、タスク マネージャーでのみ強制終了できます。

説明されているように「悪い組み合わせ」を使用して、さまざまな組み合わせと before および/または after で何度か呼び出しを試みましたGC.WaitForPendingFinalizers(); GC.Collect();(これが悪いことはわかっていますが、すべてを試しているだけです) Marshal.ReleaseComObject(invApp); Marshal.FinalReleaseComObject(invApp);。文字通り他に何もしない最小限のアプリも試しました。コードについては、以下を参照してください。

それで、Activator.CreateInstance(InventorType);これを引き起こしているのは何ですか?これを防ぐ方法はありますか?それとも、これは Inventor 固有の問題ですか?

最小限のアプリの例:

0 投票する
1 に答える
255 参照

vba - Inventor VBA 保存ファイル

Inventor 2022 と VBA を使用しています。VBA スクリプト (マクロ - ボタン) でファイルを保存しようとしました。

これは、古いバージョンの Inventor のドキュメントに含まれているコードですが、いくつかのエラーが含まれています。

ソース: https://github.com/ADN-DevTech/Inventor-Training-Material (一般的な Inventor 関数のパワーポイント プレゼンテーション)

私の解決策はすべて正しくありません!

これはオブジェクト ブラウザから書き直されたコードだと思いますが、 Inventor ライブラリにはありません。

私はこのようなものも見つけました:

助けてくれてありがとう。