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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |