objectARX を使用して、新しいドキュメントを作成しようとしています。私が最初にやっていることは、AutoCad を実行することです。
Process acadApp = new Process();
acadApp.StartInfo.FileName = "C:/Program Files/Autodesk/AutoCAD 2015/acad.exe";
acadApp.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
acadApp.Start();
次に問題は、Acad のインスタンスの準備が整うまで待つときです。Autocad ウィンドウがまだ準備できておらず、AcadApplication インスタンスを作成できないため、Process クラスを使用して彼の名前でプロセスを取得できません。Autocad が完全にロードされた場合にのみ機能するので、 を使用します。
bool checkInstance = true;
//This piece of pure shit listen for an Acad instnce until this is opened
while (checkInstance)
{
try
{
var checkinstance = Marshal.GetActiveObject("AutoCAD.Application");
checkInstance = false;
}
catch (Exception ex)
{
}
}
//Once the acad instance is opende The show starts
Thread.Sleep(12000);
Thread jili2 = new Thread(new ThreadStart(() => acadG.AcadGrid(Convert.ToInt32(grid.floorHeight), Convert.ToInt32(grid.floorWidth), grid.numFloors)));
jili2.Start();
// MessageBox.Show("I don't know why it was executed");
}
スレッドで実行されている acadGrid メソッドは、AutoCad で新しいドキュメントを作成し、グリッドを描画します。機能する場合と機能しない場合があり、機能する場合でも CPU の 50% を使用します。時々、この例外が発生します。