自作のアプリを作成して、そのアプリからrapidのCADファイルをPDFにできるようにしました。 Claudecodeを利用して作りました。自分は殆どプログラミング経験ないのですが、AIのおかげでできました。 使用言語は c#、IDEは VSCODE、OLE用に Interop.zwDrawCAD.dll  .net です 下記はメモ書きのような物ですが、用途をAIに投げてあげれば、Claudecodeやcodexなら、ロカール ファイルを直接編集してくれるので、VSCODEを知らなくても完成します。 今回はAIに手伝ってもらいながら一日で出来上がりました(というかAIが作りました) プロンプト次第ということも言えますが、下記2点、AIが試行錯誤した点があるので、それを記します。 ---------------------------------------------------------------------------------- PrintPdf というメソッドが良い。 -------------------------------------------------------------------------------- Doc.PrintAuto(nMode というのもありますが、*保存先を制御できない* のが問題で✘です。 `Interop.zwDrawCAD.dll` をよく調べてみると、`IDocument` インターフェースに以下のメソッドがあることがわかりました。 bool PrintPdf(string path, ZwPrintMode mode, bool bDialog) これを使うと、**仮想プリンタを経由せず、直接PDFファイルを生成**できます。 ```csharp ((IDocument)doc).PrintPdf( @"C:\output\drawing01.pdf", ZwPrintMode.zwPrintAutoPlan, false ); ``` - 保存先パスを完全に指定できる - ダイアログが一切出ない - 仮想プリンタのインストールも不要 - 処理速度が非常に速い(30枚程度なら1分以内)   ---------------------------------------------------------------------------------------- STAスレッドの罠 これは大事みたいなのでAIに教えてください(内容は私にはチンプンカンプンです) ---------------------------------------------------------------------------------------- COM/OLEを使う上で必ず注意が必要なのが、**STA(Single Threaded Apartment)スレッド**の制約です。 ```csharp // これはNG(MTAスレッドプールからCOMを呼ぶとエラーになる) Task.Run(() => { var app = new zwDrawCAD.Application(); // CoInitialize has not been called エラー }); // 正しくは専用STAスレッドを立てる var thread = new Thread(() => { var app = new zwDrawCAD.Application(); // ... OLE操作 ... }); thread.SetApartmentState(ApartmentState.STA); thread.Start(); thread.Join(); ``` `Task.Run` は手軽ですがCOM操作には向きません。意外とここで詰まる方が多いのではないかと思います。 -------------------------- 汎用と思われる部分だけ抜き出した シンプルな実行ファイルをアップしようかと思ったのですが、 どんな問題があるか よくわからないので、 こんな AI向けのプロンプトだけになってしまいました。 ご要望があれば、また制限がわかれば 対応しようかと思います。(C#のソースファイルならいいのかな とか思います)