首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取工程图草图是否正在编辑?(Autodesk Inventor C++ API)

如何获取工程图草图是否正在编辑?(Autodesk Inventor C++ API)
EN

Stack Overflow用户
提问于 2019-10-15 23:42:24
回答 1查看 252关注 0票数 0

我需要在Inventor中添加工程图草图并对其进行编辑。但是,如果另一个草图已经在编辑中,我的程序将终止,甚至try/catch也不起作用。我找不到草图的属性,显示它是否正在编辑。我的主要代码部分如下:

代码语言:javascript
复制
// 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;
}

我试着循环浏览所有的草图,并将它们全部关闭。这是一种我无法理解的行为方式。

代码语言:javascript
复制
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’。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-18 03:33:36

我对C++不是很熟悉,但下面是如何检测草图是否处于编辑模式的示例

代码语言:javascript
复制
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++

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58398367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档