hnzgs 发表于 2012-11-23 09:03:00

如何判断布局是否已经存在

如:Layout1

sieben 发表于 2012-11-23 19:18:00

public Autodesk.AutoCAD.DatabaseServices.ObjectId LayoutDictionaryId { get; }
    Autodesk.AutoCAD.DatabaseServices.Database 的成员
public bool Contains(string entryName)
    Autodesk.AutoCAD.DatabaseServices.DBDictionary 的成员

sieben 发表于 2012-11-23 19:21:00

另外有个苯办法是,遍历块表,把里面是布局的块记录取出,进而取得其布局;
public bool IsLayout { get; }
    Autodesk.AutoCAD.DatabaseServices.BlockTableRecord 的成员
public Autodesk.AutoCAD.DatabaseServices.ObjectId LayoutId { set; get; }
    Autodesk.AutoCAD.DatabaseServices.BlockTableRecord 的成员

hnzgs 发表于 2012-11-27 16:49:00


多谢多谢,用笨办法搞定!
'''
    ''' 判断布局是否存在
    '''
    ''' 布局名字
    '''
    '''
    Public Shared Function LayoutNameIndexOf(ByVal layName As String) As Boolean
      
      Dim doc As Document = Application.DocumentManager.MdiActiveDocument
      Dim db As Database = doc.Database
      Dim b As Boolean = False
      Using trans As Transaction = db.TransactionManager.StartTransaction()
            Dim lydiid As ObjectId = db.LayoutDictionaryId
            '获取数据字典
            Dim lydi As DBDictionary = trans.GetObject(lydiid, OpenMode.ForRead)
            '字典计数器
            Dim di As DbDictionaryEnumerator = lydi.GetEnumerator()
            '遍历布局
            While (di.MoveNext())
                Dim lyid As ObjectId = di.Value
                '获取布局
                Dim lyt As Layout = trans.GetObject(lyid, OpenMode.ForRead)
                '因此处区分大小写,所以将名字都转化为大写后再比较
                If UCase(lyt.LayoutName) = UCase(layName) Then
                  b = True
                  Exit While
                End If                           
            End While
      End Using
      Return b
    End Function
页: [1]
查看完整版本: 如何判断布局是否已经存在