我需要在Inventor中添加工程图草图并对其进行编辑。但是,如果另一个草图已经在编辑中,我的程序将终止,甚至try/catch也不起作用。我找不到草图的属性,显示它是否正在编辑。我的主要代码部分如下:
// 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打开时,尝试关闭草图1的第一个循环(i = 1)以某种方式关闭草图2。现在不能关闭草图2的第二次迭代(i = 2)调用'catch‘并进一步调用'return’。
发布于 2019-10-18 03:33:36
我对C++不是很熟悉,但下面是如何检测草图是否处于编辑模式的示例
Dim oDrawing As DrawingDocument
Set oDrawing = ThisApplication.ActiveDocument
Dim oSheet As Sheet
Set oSheet = oDrawing.ActiveSheet
Dim editedObject As Variant
Set editedObject = ThisApplication.ActiveEditObject
If editedObject.Type = ObjectTypeEnum.kDrawingSketchObject Then
Dim activeEditSketch As DrawingSketch
Set activeEditSketch = editedObject
activeEditSketch.ExitEdit
End If
Dim oSketch As DrawingSketch
Set oSketch = oSheet.Sketches.Add()我希望你能把这段代码转换成C++
https://stackoverflow.com/questions/58398367
复制相似问题