【问题标题】:How to get the LayoutManager of a closed dwg file in Autocad?如何在 Autocad 中获取已关闭 dwg 文件的 LayoutManager?
【发布时间】:2015-11-30 19:49:21
【问题描述】:

对于 .Net 中的 Autocad,我有一个包含 dwg 文件的文件夹,我想删除除“模型”和“布局 1”之外的每个文件中的布局。我正在将此代码用于在 Autocad 中打开的文件:

public void RemoveLayout(Transaction transaction, Database database, ObjectId layoutId)
{
    if (!layoutId.IsErased)
    {
        Layout layout = transaction.GetObject(layoutId, OpenMode.ForRead) as Layout;
        LayoutManager.Current.DeleteLayout(layout.LayoutName);
    }
  }

但是,当我尝试打开文件夹中的文档并将文档设置为活动时:

Document doc = Application.DocumentManager.Open(file, false);
Application.DocumentManager.MdiActiveDocument = doc;

LayoutManager.current 仍然指向我的第一个文档,所以我无法使用以下代码删除想要的布局:

LayoutManager.Current.DeleteLayout(layout.LayoutName);

【问题讨论】:

    标签: .net autocad


    【解决方案1】:

    您需要将Session 添加到您的命令标志中。并且需要显式锁定文档:

    [CommandMethod("YOURCOMMAND", CommandFlags.Session)]
    public void YourCommand()
    {
      [..]
      Document doc = Application.DocumentManager.Open(file);
      // No need here to set MdiActiveDocument, it's done by the Open method.
      using (doc.LockDocument())
      using (Transaction tr = doc.TransactionManager.StartTransaction())
      {
        LayoutManager.Current.DeleteLayout("Your layout name");
        tr.Commit();
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-10-30
      • 1970-01-01
      • 1970-01-01
      • 2016-08-22
      • 2016-10-23
      • 2014-08-28
      • 2020-02-15
      • 2012-03-11
      相关资源
      最近更新 更多