Set CurrentLayout

Set CurrentLayout

Anonymous
Not applicable
1,771 Views
3 Replies
Message 1 of 4

Set CurrentLayout

Anonymous
Not applicable

Can someone please tell me why I get an 'esetfailed' error?  I must be missing something simple.  Just before this sub I call another sub that changes the active document. ?? This is in AutioCAD 2011 w/ 64bit environment.

 

    Public Shared Sub ActiveLayout(ByVal name As String)
        Dim acDoc As Document = AcApp.DocumentManager.MdiActiveDocument
        Dim Db As Database = HostApplicationServices.WorkingDatabase
        Dim tdoclock As DocumentLock = acDoc.LockDocument
        Dim layMgr As LayoutManager = LayoutManager.Current
        Using acTrans As Transaction = Db.TransactionManager.StartTransaction()
            Try
                Autodesk.AutoCAD.ApplicationServices.Application.ShowAlertDialog(acDoc.Name)
                If Not Regex.Match(layMgr.CurrentLayout, name).Success() Then
                    layMgr.CurrentLayout = name
                End If
                acTrans.Commit()
            Catch ex As Autodesk.AutoCAD.Runtime.Exception
                Autodesk.AutoCAD.ApplicationServices.Application.ShowAlertDialog(ex.Message & vbCr & ex.HelpLink & vbCr & ex.StackTrace)
            Finally
                acTrans.Dispose()
                tdoclock.Dispose()
                tdoclock = Nothing
            End Try
        End Using
    End Sub

 

Any help is greatly appreciated.

Matthew

0 Likes
1,772 Views
3 Replies
Replies (3)
Message 2 of 4

_gile
Consultant
Consultant

Hi,

 

eSetFailed is probably due to the fact the 'name' Layout does not exist in the drawing and no need to complicate so much.

This works for me:

        Public Shared Sub ActiveLayout(ByVal name As String)
            Try
                LayoutManager.Current.CurrentLayout = name
            Catch
                MsgBox(String.Format("Layout '{0}' not found", name))
            End Try
        End Sub

 



Gilles Chanteau
Programmation AutoCAD LISP/.NET
GileCAD
GitHub

0 Likes
Message 3 of 4

Anonymous
Not applicable

I would like to change the question.  Why does that code not work for Drawing1.dwg and Layout1?  It does work with other drawings I have.  I don't have a reason to operate on that drawing, So I will exclude it from the forms listbox.

 

Thanks

Matthew

0 Likes
Message 4 of 4

Hallex
Advisor
Advisor

Delete "acTrans.Dispose" from Finally code block

and try again

_____________________________________
C6309D9E0751D165D0934D0621DFF27919
0 Likes