Мне нужно добавить эскиз чертежа в Inventor и отредактировать его. Однако, если другой эскиз уже редактируется, моя программа завершает работу, и даже попытка / отлов не помогает. Я не могу найти свойство эскиза, показывающее, редактируется оно или нет. Моя основная часть кода здесь:
// All of these three functions pass try/catch perfectly. Program never terminates
Inventor::Application^ App = (Inventor::Application^)Marshal::GetActiveObject("Inventor.Application");
DrawingDocument^ Doc = (DrawingDocument^)App->ActiveDocument;
Sheet^ Sh = Doc->ActiveSheet;
DrawingSketch^ Sk;
try
{
Sh->Sketches->Add();
Sk = Sh->Sketches[Sh->Sketches->Count];
Sk->Edit(); // Crushes the program completely if another sketch is being edited
}
catch (...)
{
return;
}
Я попытался перебрать все эскизы и закрыть их все. Это ведет себя так, как я не могу понять.
try
{
// Note: in Inventor indexes definitely start from 1
for (int i = 1; i <= Sh->Sketches->Count; i++)
{
Sk = Sh->Sketches[i];
Sk->ExitEdit();
}
}
catch (...)
{
return;
}
Например, когда эскиз 2 открыт, первый цикл (i = 1), который пытается закрыть эскиз 1, каким-то образом закрывает эскиз 2. И вторая итерация (i = 2), которая теперь не может закрыть эскиз 2, поскольку он уже закрыт, вызывает 'catch' и далее 'return'.