Sunteți pe pagina 1din 3

Imports Imports Imports Imports Imports Imports Imports

Autodesk.AutoCAD.ApplicationServices Autodesk.AutoCAD.EditorInput Autodesk.AutoCAD.Runtime Autodesk.AutoCAD.Windows ACSMCOMPONENTS18Lib System.Windows.Forms System

Namespace MyApplication Public Class Commands Private Shared ps As PaletteSet = Nothing Private Shared userControl As UserControl1 = Nothing <CommandMethod("SSTREE")> _ Public Sub PopulateCustomSheetTree() ' Check the state of the paletteset If (ps Is Nothing) Then ' Then create it ps = New PaletteSet("Custom Sheet Tree") userControl = New UserControl1 ps.Add("MySheetView", userControl) End If ps.Visible = true ' Get the AutoCAD Editor Dim ed As Editor = acApp.Application.DocumentManager.MdiActiveDocume nt.Editor ' Get the SheetSet Manager Dim mgr As AcSmSheetSetMgr = New AcSmSheetSetMgr ' Create a new SheetSet Database Dim db As AcSmDatabase = New AcSmDatabase ' Try and load a default DST file... Try db = mgr.OpenDatabase(("C:\Program Files\Autodesk\AutoCAD 2011\S ample\" + "Sheet Sets\Architectural\IRD Addition.dst"), true) Catch ex As System.Exception ed.WriteMessage(ex.ToString) Return End Try ' Lock the db for processing db.LockDb(db) Dim ss As AcSmSheetSet = db.GetSheetSet ' Create a root item in the TreeView, ' the name of the SheetSet Dim root As TreeNode = New TreeNode(ss.GetName) userControl.treeView1.Nodes.Add(root) ProcessEnumerator(ss.GetSheetEnumerator, root) db.UnlockDb(db, true) mgr.Close(db) End Sub Private Sub ProcessEnumerator(ByVal iter As IAcSmEnumComponent, ByVal ro ot As TreeNode) Dim item As IAcSmComponent = iter.Next While (Not (item) Is Nothing) Dim type As String = item.GetTypeName Select Case (type)

Case "AcSmSubset" Try Dim subset As AcSmSubset = CType(item,AcSmSubset) Dim subName As String = subset.GetName If Not String.IsNullOrEmpty(subName) Then Dim tn As TreeNode = AddTreeNode(root, subName) Dim enumerator As IAcSmEnumComponent = CType(sub set.GetSheetEnumerator,IAcSmEnumComponent) ProcessEnumerator(enumerator, tn) End If Catch As System.Exception End Try Case "AcSmSheet" Try Dim sh As AcSmSheet = CType(item,AcSmSheet) Dim shName As String = sh.GetName If Not String.IsNullOrEmpty(shName) Then Dim tn As TreeNode = AddTreeNode(root, shName) Dim enumerator As IAcSmEnumComponent = CType(sh. GetSheetViews,IAcSmEnumComponent) ProcessEnumerator(enumerator, tn) End If Catch As System.Exception End Try Case "AcSmSheetViews" Try Dim sh As AcSmSheet = CType(item,AcSmSheet) Dim shName As String = sh.GetName If Not String.IsNullOrEmpty(shName) Then Dim tn As TreeNode = AddTreeNode(root, shName) Dim enumerator As IAcSmEnumComponent = CType(sh. GetSheetViews,IAcSmEnumComponent) ProcessEnumerator(enumerator, tn) End If Catch As System.Exception End Try Case "AcSmSheetView" Try Dim sv As AcSmSheetView = CType(item,AcSmSheetView) Dim svName As String = sv.GetName If Not String.IsNullOrEmpty(svName) Then AddTreeNode(root, svName) End If Catch As System.Exception End Try Case "AcSmCustomPropertyValue" Dim pv As AcSmCustomPropertyValue = CType(item,AcSmCusto mPropertyValue) AddTreeNode(root, ("Custom property value: " + pv.GetVal ue.ToString)) Case "AcSmObjectReference" Dim or As AcSmObjectReference = CType(item,AcSmObjectRef erence) AddTreeNode(root, ("Object reference: " + or.GetReferenc edObject.GetTypeName)) Case "AcSmCustomPropertyBag"

Try Dim bag As AcSmCustomPropertyBag = CType(item,AcSmCu stomPropertyBag) Dim tn As TreeNode = AddTreeNode(root, "Custom prope rty bag") Dim enumerator As IAcSmEnumComponent = CType(bag.Get PropertyEnumerator,IAcSmEnumComponent) ProcessEnumerator(enumerator, tn) Catch As System.Exception End Try Case "AcSmAcDbLayoutReference" Dim lr As AcSmAcDbLayoutReference = CType(item,AcSmAcDbL ayoutReference) AddTreeNode(root, ("Layout reference: " + lr.GetName)) Case "AcSmFileReference" Dim fr As AcSmFileReference = CType(item,AcSmFileReferen ce) AddTreeNode(root, ("Layout reference: " + fr.GetFileName )) Case "AcSmAcDbViewReference" Dim vr As AcSmAcDbViewReference = CType(item,AcSmAcDbVie wReference) AddTreeNode(root, ("View reference: " + vr.GetName)) Case "AcSmResources" Try Dim res As AcSmResources = CType(item,AcSmResources) Dim tn As TreeNode = AddTreeNode(root, "Resources") Dim enumerator As IAcSmEnumComponent = CType(res.Get Enumerator,IAcSmEnumComponent) ProcessEnumerator(enumerator, tn) Catch As System.Exception End Try Case Else Dim doc As Document = acApp.Application.DocumentManager. MdiActiveDocument Dim ed As Editor = doc.Editor ed.WriteMessage((""& vbLf&"Missed Type = " + type)) End Select item = iter.Next End While End Sub Private Function AddTreeNode(ByVal root As TreeNode, ByVal name As Strin g) As TreeNode ' Create a new node on the tree view Dim node As TreeNode = New TreeNode(name) ' Add it to what we have root.Nodes.Add(node) Return node End Function End Class End Namespace

S-ar putea să vă placă și