02-02 控制AutoCAD环境(二) 控制图形窗口(3)使用命名视图

 

3、Use Named Views使用命名视图

You can name and save a view you want to reuse. When you no longer need the view, you can remove it.

我们可以对想要重复使用的视图进行命名并保存,当不再需要这个视图时,可以将其删除。

Named views are stored in the View table, one of the named symbol tables in a drawing database. A named view is created with the Add method to add a new view to the View table. When you add the new named view to the View table, a default model space view is created.

命名视图存储在View表里,View表是图形数据库里的一个命名符号表。命名视图通过用Add方法将新视图添加到View表来创建。当我们往View表添加新的命名视图时,会生成一个默认的模型空间视图。

You name the view when you create it. The name of the view can be up to 255 characters long and contain letters, digits, and the special characters dollar sign ($), hyphen (-), and underscore (_).

在创建视图时对其命名。视图的名称可以至多含255个字符,包括字母、数字及特殊字符中的美元符号($)、连字符(-)、下划线(_)。

A named view can be removed from the View table by simply use the Erase method of the ViewTableRecord object you want to remove.

通过调用想要删除的ViewTableRecord对象的Erase方法,可以将命名视图从View表中删除。

 

Add a named view and set it current 添加命名视图并将其设置为当前视图

The following example adds a named view to the drawing and sets it current.

下面的例子为图形添加一个命名视图并将其设置为当前视图。

 

VB.NET

Imports Autodesk.AutoCAD.ApplicationServices

Imports Autodesk.AutoCAD.DatabaseServices

Imports Autodesk.AutoCAD.Runtime

 

<CommandMethod("CreateNamedView")> _

Public Sub CreateNamedView()

  ' Get the current database

  Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument

  Dim acCurDb As Database = acDoc.Database

 

  ' Start a transaction

  Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()

 

      ' Open the View table for read

      Dim acViewTbl As ViewTable

      acViewTbl = acTrans.GetObject(acCurDb.ViewTableId, OpenMode.ForRead)

 

      ' Check to see if the named view 'View1' exists

      If (acViewTbl.Has("View1") = False) Then

          ' Open the View Table for write

          acViewTbl.UpgradeOpen()

 

          ' Create a new View table record and name the view "View1"

          Dim acViewTblRec As ViewTableRecord = New ViewTableRecord()

          acViewTblRec.Name = "View1"

 

          ' Add the new View table record to the View table and the transaction

          acViewTbl.Add(acViewTblRec)

          acTrans.AddNewlyCreatedDBObject(acViewTblRec, True)

 

          ' Set 'View1' current

          acDoc.Editor.SetCurrentView(acViewTblRec)

 

          ' Commit the changes

          acTrans.Commit()

      End If

 

      ' Dispose of the transaction

  End Using

End Sub

 

C#

using Autodesk.AutoCAD.ApplicationServices;

using Autodesk.AutoCAD.DatabaseServices;

using Autodesk.AutoCAD.Runtime;

 

[CommandMethod("CreateNamedView")]

public static void CreateNamedView()

{

  // Get the current database获取当前数据库

  Document acDoc = Application.DocumentManager.MdiActiveDocument;

  Database acCurDb = acDoc.Database;

 

  // Start a transaction启动事务

  using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())

  {

      // Open the View table for read打开View表,读

      ViewTable acViewTbl;

      acViewTbl = acTrans.GetObject(acCurDb.ViewTableId,

                                    OpenMode.ForRead) as ViewTable;

 

      // Check to see if the named view 'View1' exists

      //检查命名视图View1是否存在

      if (acViewTbl.Has("View1") == false)

      {

          // Open the View table for write打开View表,写

          acViewTbl.UpgradeOpen();

 

          // Create a new View table record and name the view 'View1'

          // 新建一个View表记录并命名为View1

          ViewTableRecord acViewTblRec = new ViewTableRecord();

          acViewTblRec.Name = "View1";

 

          // Add the new View table record to the View table and the transaction

          //添加到View表及事务

          acViewTbl.Add(acViewTblRec);

          acTrans.AddNewlyCreatedDBObject(acViewTblRec, true);

 

          // Set 'View1' current置View1为当前视图

          acDoc.Editor.SetCurrentView(acViewTblRec);

 

          // Commit the changes提交事务

          acTrans.Commit();

      }

 

      // Dispose of the transaction处置事务,回收内存

  }

}

 

VBA/ActiveX Code Reference VBA/ActiveX代码参考

Sub CreateNamedView()

    ' Add a named view to the views collection

    Dim viewObj As AcadView

    Set viewObj = ThisDrawing.Views.Add("View1")

 

    ThisDrawing.ActiveViewport.SetView viewObj

End Sub

 

Erase a named view 删除命名视图

The following example erases a named view from the drawing.

下面的例子从图形中删除一个命名视图。

 

VB.NET

Imports Autodesk.AutoCAD.ApplicationServices

Imports Autodesk.AutoCAD.DatabaseServices

Imports Autodesk.AutoCAD.Runtime

 

<CommandMethod("EraseNamedView")> _

Public Sub EraseNamedView()

  ' Get the current database

  Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument

  Dim acCurDb As Database = acDoc.Database

 

  ' Start a transaction

  Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()

 

      ' Open the View table for read

      Dim acViewTbl As ViewTable

      acViewTbl = acTrans.GetObject(acCurDb.ViewTableId, OpenMode.ForRead)

 

      ' Check to see if the named view 'View1' exists

      If (acViewTbl.Has("View1") = True) Then

          ' Open the View table for write

          acViewTbl.UpgradeOpen()

 

          ' Get the named view

          Dim acViewTblRec As ViewTableRecord

          acViewTblRec = acTrans.GetObject(acViewTbl("View1"), OpenMode.ForWrite)

 

          ' Remove the named view from the View table

          acViewTblRec.Erase()

 

          ' Commit the changes

          acTrans.Commit()

      End If

 

      ' Dispose of the transaction

  End Using

End Sub

 

C#

using Autodesk.AutoCAD.ApplicationServices;

using Autodesk.AutoCAD.DatabaseServices;

using Autodesk.AutoCAD.Runtime;

 

[CommandMethod("EraseNamedView")]

public static void EraseNamedView()

{

  // Get the current database获取当前数据库

  Document acDoc = Application.DocumentManager.MdiActiveDocument;

  Database acCurDb = acDoc.Database;

 

  // Start a transaction启动事务

  using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())

  {

      // Open the View table for read

      ViewTable acViewTbl;

      acViewTbl = acTrans.GetObject(acCurDb.ViewTableId,

                                    OpenMode.ForRead) as ViewTable;

 

      // Check to see if the named view 'View1' exists

      if (acViewTbl.Has("View1") == true)

      {

          // Open the View table for write

          acViewTbl.UpgradeOpen();

 

          // Get the named view获取命名视图

          ViewTableRecord acViewTblRec;

          acViewTblRec = acTrans.GetObject(acViewTbl["View1"],

                                           OpenMode.ForWrite) as ViewTableRecord;

 

          // Remove the named view from the View table从View表删除命名视图

          acViewTblRec.Erase();

 

          // Commit the changes提交修改

          acTrans.Commit();

      }

 

      // Dispose of the transaction

  }

}

 

VBA/ActiveX Code Reference VBA/ActiveX代码参考

 

Sub EraseNamedView()

    On Error Resume Next

    Dim viewObj As AcadView

    Set viewObj = ThisDrawing.Views("View1")

 

    If Err = 0 Then

      ' Delete the view

      viewObj.Delete

    End If

End Sub

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值