0

我为 AutoCAD 编写了一个 C# 插件,用户可以在其中输入一些信息,然后应该打开相应的绘图。

实际的工作流程应该是:

  1. 我在 AutoCAD 中启动我的插件
  2. 用户可以在当前活动图形顶部的窗口形式中输入一些信息
  3. 当用户点击回车按钮时,应该打开一个新的绘图
  4. 应该关闭用户输入一些信息的表单(效果很好)
  5. 应打开一个新窗口表单以输入其他信息(与第一个窗口不同)但在新图纸中

问题是我可以正确关闭第一个窗口并正确打开新图纸。像这样:

    DocumentCollection documentCollection = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager;

    if (File.Exists(absoultePathOfDrawing))
    {
    Document newDrawing = documentCollection.Open(absoultePathOfDrawing, false);
    Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument = newDrawing; // this sets the new drawing as the active one ==> is on top
    }

Dispose(); // closes the first form
DialogResult = DialogResult.OK; // tells my applciation that the first window was successfully closed

表单正确关闭,然后我尝试使用以下命令打开新表单:

if (result == DialogResult.OK)
{
      MessageBox.Show("Test");          

}

但是现在新图在上面,后面是旧图。当我切换回旧图纸时,会显示新的 MessageBox,但实际上这应该显示在新图纸中,因为我将活动文档设置为新图纸。我究竟做错了什么?

4

1 回答 1

1

我找到了解决方案。

我必须使用以下选项加载我的插件:

[CommandMethod("PluginName", Autodesk.AutoCAD.Runtime.CommandFlags.Session)]

没有这个,我的插件只在一个文档中有效(我开始插件的那个)

于 2013-02-13T10:25:38.807 回答