我正在使用objectARX並嘗試創建一個新文檔。我最先做的是運行AutoCad。如何等待Acad的實例運行以創建新的文檔?
Process acadApp = new Process();
acadApp.StartInfo.FileName = "C:/Program Files/Autodesk/AutoCAD 2015/acad.exe";
acadApp.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
acadApp.Start();
然後問題是當我等待,直到Acad的實例準備好。由於Autocad窗口還沒有準備好,我無法通過他的名字來獲取Process進程,我無法創建AcadApplication實例。它只適用於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中創建一個新文檔,然後繪製一個網格。它有時有效,有時不起作用,甚至可以使用50%的CPU。有時我得到這個例外。
謝謝您現在的作品完美,我只刪除了waintForInputIdle。 – MisaelGaray