为什么使用 ObjectARX 中的命令创建的视口没有保存到数据库中?

问题描述

总结

我正在尝试编写一个 C# ObjectARX 脚本来使用 -VPORTS Fit 命令创建一个适合布局范围的视口,但由于某种原因,新视口显示在 AutoCAD 中,但从未保存到输出中绘图。

我尝试过的一些事情

  • 使用 acDoc.SendStringToExecute() 而不是 acDoc.Editor.Command()
  • 使用 -VPORTS 而不是 ._VIEWPORTS
  • 在提交事务之前运行命令
    • 导致 AutoCAD 冻结和崩溃。我想我必须先提交新布局,然后才能制作视口

代码片段

[CommandMethod("CreateViewport")]
public static void CreateViewport()
{
    // Get the current document and database,and start a transaction
    Document acDoc = Application.DocumentManager.MdiActiveDocument;
    Database acCurDb = acDoc.Database;

    try
    {
        Entity acObj = null;

        using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
        {
            // Omitted code for opening block record ...

            // Switch to the previous Paper space layout
            Application.SetSystemVariable("TILEMODE",0);
            acDoc.Editor.SwitchToPaperSpace();

            // Omitted code for creating a polyline in model space to focus on (acObj) ...
            // Omitted code for creating a new layout ...

            // Save the new objects to the database
            acTrans.Commit();
        }

        // This is the part that shows in AutoCAD but doesn't save
        acDoc.Editor.Command("._VIEWPORTS","Fit");
        acDoc.Editor.Command("._MSPACE");
        acDoc.Editor.Command("._ZOOM","_O",SelectionSet.FromObjectIds(new ObjectId[] { acObj.ObjectId }),"");
        acDoc.Editor.Command("._PSPACE");
        acDoc.Editor.Command("._ZOOM","E");

        acCurDb.SaveAs("OutputDrawing.dwg",DwgVersion.AC1027);
    }
    catch (Exception ex)
    {
        Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage(ex.ToString());
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)