.NET

Reply
Valued Contributor
spanqy
Posts: 90
Registered: ‎11-13-2006
Message 1 of 4 (404 Views)
Accepted Solution

Set page setup current

404 Views, 3 Replies
02-25-2013 12:14 PM

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

 

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

 

Active Member
hyperpics
Posts: 9
Registered: ‎06-13-2003
Message 2 of 4 (367 Views)

Re: Set page setup current

02-26-2013 02:07 PM in reply to: spanqy

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

 

Valued Contributor
spanqy
Posts: 90
Registered: ‎11-13-2006
Message 3 of 4 (362 Views)

Re: Set page setup current

02-26-2013 03:28 PM in reply to: spanqy

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!

 

 

 

 

Active Member
hyperpics
Posts: 9
Registered: ‎06-13-2003
Message 4 of 4 (357 Views)

Re: Set page setup current

02-26-2013 03:44 PM in reply to: spanqy

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

Post to the Community

Have questions about Autodesk products? Ask the community.

New Post
Announcements
Do you have 60 seconds to spare? The Autodesk Community Team is revamping our site ranking system and we want your feedback! Please click here to launch the 5 question survey. As always your input is greatly appreciated.