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?
Solved! Go to 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(acLayout
Mgr.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.Fo rRead) ' 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
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:
Thanks a lot!
Log into access your profile, ask and answer questions, share ideas and more. Haven't signed up yet? Register