Set page setup current

Set page setup current

MarkSanchezSPEC
Advocate Advocate
2,180 Views
3 Replies
Message 1 of 4

Set page setup current

MarkSanchezSPEC
Advocate
Advocate

I have existing .NET code that adds page setups to drawings.  I now wanted to set the newly added page setup as "current" within the drawing. 

 

The "manual" way to do what I am asking is by clicking the "Set Current" button from within the Page Setup Manager dialog.  How would I do this programmatically?

 

TIA

 

0 Likes
Accepted solutions (1)
2,181 Views
3 Replies
Replies (3)
Message 2 of 4

hyperpics
Participant
Participant
Accepted solution

Here is something similar to what I have done in the past.

 

Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.PlottingServices

' Assigns a page setup to a layout
<CommandMethod("AssignPageSetupToLayout")> _
Public Shared Sub AssignPageSetupToLayout()
    ' Get the current document and database, and start a transaction
    Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
    Dim acCurDb As Database = acDoc.Database

    Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
        ' Reference the Layout Manager
        Dim acLayoutMgr As LayoutManager = LayoutManager.Current

        ' Get the current layout and output its name in the Command Line window
        Dim acLayout As Layout = _
            acTrans.GetObject(acLayoutMgr.GetLayoutId(acLayoutMgr.CurrentLayout), _
                              OpenMode.ForRead)

        Dim acPlSet As DBDictionary = _
            acTrans.GetObject(acCurDb.PlotSettingsDictionaryId, OpenMode.ForRead)

        ' Check to see if the page setup exists
        If acPlSet.Contains("MyPageSetup") = True Then
            Dim plSet As PlotSettings = _
                acPlSet.GetAt("MyPageSetup").GetObject(OpenMode.ForRead)

            ' Update the layout
            acLayout.UpgradeOpen()
            acLayout.CopyFrom(plSet)

            ' Save the new objects to the database
            acTrans.Commit()
        Else
            ' Ignore the changes made
            acTrans.Abort()
        End If
    End Using

    ' Update the display
    acDoc.Editor.Regen()
End Sub

 

Message 3 of 4

MarkSanchezSPEC
Advocate
Advocate

Works great!

 

I only had to add another using statement like this to lock the document:

 

Using dl as DocumentLock = dwg.LockDocument

End Using

 I think this is becuase I run in batch mode using:

    <CommandMethod("MYCOMMAND", CommandFlags.Session)>

 

Thanks a lot!

 

 

 

 

0 Likes
Message 4 of 4

hyperpics
Participant
Participant

Glad it helped and you were able to adapt it to your particular situation.

0 Likes