<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Import Pagesetups from .dwg file in .NET Forum</title>
    <link>https://forums.autodesk.com/t5/net-forum/import-pagesetups-from-dwg-file/m-p/5631529#M40139</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would like a&amp;nbsp;command that imports all pagesetups (?plotsettings?) from an existing drawing to the current one.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I found this code but, TBH, I can't follow it and it throws an exception on the line: &amp;nbsp; &amp;nbsp;&lt;SPAN style="white-space: pre-wrap; line-height: 15px; background-color: #f7f7f7;"&gt;cpl.CopyFrom(pl)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="white-space: pre-wrap; line-height: 15px; background-color: #f7f7f7;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="white-space: pre-wrap; line-height: 15px; background-color: #f7f7f7;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE&gt;    Public Sub ClonePlotSettings(FilePath As String)
        Dim DestDb As Database = Application.DocumentManager.MdiActiveDocument.Database
        Dim SourceDb As New Database(False, True)
        Using docLock As DocumentLock = Application.DocumentManager.MdiActiveDocument.LockDocument()
            Try
                SourceDb.ReadDwgFile(FilePath, System.IO.FileShare.ReadWrite, False, Nothing)
                Using currentTransaction As Transaction = CurrentDatabase.TransactionManager.StartTransaction
                    Using sourceTransaction As Transaction = SourceDatabase.TransactionManager.StartTransaction
                        Dim sourcePlotDic As DBDictionary = SourceDatabase.PlotSettingsDictionaryId.GetObject(OpenMode.ForRead)
                        Dim objID As ObjectId
                        For Each item As DBDictionaryEntry In sourcePlotDic
                            objID = sourcePlotDic.GetAt(item.Key)
                            Dim pl As PlotSettings = objID.GetObject(OpenMode.ForRead)
                            Try
                                Dim cpl As New PlotSettings(False)
                                cpl.CopyFrom(pl)
                                cpl.AddToPlotSettingsDictionary(CurrentDatabase)
                            Catch ex As Exception
                                'MsgBox("Exception in ClonePlotSettings:" + ex.Message)
                            End Try
                        Next
                        currentTransaction.Commit()
                    End Using
                End Using
        End Using
        SourceDb.Dispose()
    End Sub&lt;/PRE&gt;&lt;P&gt;&lt;SPAN style="white-space: pre-wrap; line-height: 15px; background-color: #f7f7f7;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="white-space: pre-wrap; line-height: 15px; background-color: #f7f7f7;"&gt;Can someone help me out? I've found similar posts but are either unanswered or are copying layouts rather than plot settings.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="white-space: pre-wrap; line-height: 15px; background-color: #f7f7f7;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="white-space: pre-wrap; line-height: 15px; background-color: #f7f7f7;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 12 May 2015 17:45:28 GMT</pubDate>
    <dc:creator>SRSDS</dc:creator>
    <dc:date>2015-05-12T17:45:28Z</dc:date>
    <item>
      <title>Import Pagesetups from .dwg file</title>
      <link>https://forums.autodesk.com/t5/net-forum/import-pagesetups-from-dwg-file/m-p/5631529#M40139</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would like a&amp;nbsp;command that imports all pagesetups (?plotsettings?) from an existing drawing to the current one.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I found this code but, TBH, I can't follow it and it throws an exception on the line: &amp;nbsp; &amp;nbsp;&lt;SPAN style="white-space: pre-wrap; line-height: 15px; background-color: #f7f7f7;"&gt;cpl.CopyFrom(pl)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="white-space: pre-wrap; line-height: 15px; background-color: #f7f7f7;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="white-space: pre-wrap; line-height: 15px; background-color: #f7f7f7;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;PRE&gt;    Public Sub ClonePlotSettings(FilePath As String)
        Dim DestDb As Database = Application.DocumentManager.MdiActiveDocument.Database
        Dim SourceDb As New Database(False, True)
        Using docLock As DocumentLock = Application.DocumentManager.MdiActiveDocument.LockDocument()
            Try
                SourceDb.ReadDwgFile(FilePath, System.IO.FileShare.ReadWrite, False, Nothing)
                Using currentTransaction As Transaction = CurrentDatabase.TransactionManager.StartTransaction
                    Using sourceTransaction As Transaction = SourceDatabase.TransactionManager.StartTransaction
                        Dim sourcePlotDic As DBDictionary = SourceDatabase.PlotSettingsDictionaryId.GetObject(OpenMode.ForRead)
                        Dim objID As ObjectId
                        For Each item As DBDictionaryEntry In sourcePlotDic
                            objID = sourcePlotDic.GetAt(item.Key)
                            Dim pl As PlotSettings = objID.GetObject(OpenMode.ForRead)
                            Try
                                Dim cpl As New PlotSettings(False)
                                cpl.CopyFrom(pl)
                                cpl.AddToPlotSettingsDictionary(CurrentDatabase)
                            Catch ex As Exception
                                'MsgBox("Exception in ClonePlotSettings:" + ex.Message)
                            End Try
                        Next
                        currentTransaction.Commit()
                    End Using
                End Using
        End Using
        SourceDb.Dispose()
    End Sub&lt;/PRE&gt;&lt;P&gt;&lt;SPAN style="white-space: pre-wrap; line-height: 15px; background-color: #f7f7f7;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="white-space: pre-wrap; line-height: 15px; background-color: #f7f7f7;"&gt;Can someone help me out? I've found similar posts but are either unanswered or are copying layouts rather than plot settings.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="white-space: pre-wrap; line-height: 15px; background-color: #f7f7f7;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="white-space: pre-wrap; line-height: 15px; background-color: #f7f7f7;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 12 May 2015 17:45:28 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/net-forum/import-pagesetups-from-dwg-file/m-p/5631529#M40139</guid>
      <dc:creator>SRSDS</dc:creator>
      <dc:date>2015-05-12T17:45:28Z</dc:date>
    </item>
    <item>
      <title>Re: Import Pagesetups from .dwg file</title>
      <link>https://forums.autodesk.com/t5/net-forum/import-pagesetups-from-dwg-file/m-p/5631722#M40140</link>
      <description>&lt;P&gt;&lt;SPAN style="font-size: 16.38px; line-height: 17.55px;"&gt;I believe plotsettings.copyfrom(source should be a layout).&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 12 May 2015 19:36:24 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/net-forum/import-pagesetups-from-dwg-file/m-p/5631722#M40140</guid>
      <dc:creator>fieldguy</dc:creator>
      <dc:date>2015-05-12T19:36:24Z</dc:date>
    </item>
    <item>
      <title>Re: Import Pagesetups from .dwg file</title>
      <link>https://forums.autodesk.com/t5/net-forum/import-pagesetups-from-dwg-file/m-p/5631876#M40141</link>
      <description>&lt;PRE&gt;        public static void LoadPlotStyles(Database db, string plotSettingsPathname)
        {
            if (db == null)
                return;

            if (!File.Exists(plotSettingsPathname))
                return;

            DeletePlotSettings(db);

  
            using (Database sourceDb = new Database())
            {
                sourceDb.ReadDwgFile(plotSettingsPathname, FileOpenMode.OpenForReadAndReadShare, true, null);

                using (Transaction trSource = sourceDb.TransactionManager.StartTransaction())
                {
                    using (Transaction tr = db.TransactionManager.StartTransaction())
                    {
                        DBDictionary sourcePlotSettingsDict = (DBDictionary)trSource.GetObject(sourceDb.PlotSettingsDictionaryId, OpenMode.ForRead);
                        foreach (DBDictionaryEntry sourcePlotSettingsDictEntry in sourcePlotSettingsDict)
                        {
                            PlotSettings sourcePlotSettings = (PlotSettings)trSource.GetObject(sourcePlotSettingsDictEntry.Value, OpenMode.ForRead);
                            PlotSettings plotSettings = new PlotSettings(sourcePlotSettings.ModelType);
                            plotSettings.CopyFrom(sourcePlotSettings);
                            plotSettings.AddToPlotSettingsDictionary(db);
                            tr.AddNewlyCreatedDBObject(plotSettings, true);
                        }
                        tr.Commit();
                    }
                    trSource.Commit();
                }
            }
        }&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;        public static void DeletePlotSettings(Database db)
        {
            using (Transaction tr = db.TransactionManager.StartTransaction())
            {
                DBDictionary plotSettingsDict = (DBDictionary)tr.GetObject(db.PlotSettingsDictionaryId, OpenMode.ForRead);

                ObjectIdCollection psIdsToRemove = new ObjectIdCollection();
                foreach (DBDictionaryEntry plotSettingsDictEntry in plotSettingsDict)
                    psIdsToRemove.Add(plotSettingsDictEntry.Value);

                foreach (ObjectId psId in psIdsToRemove)
                {
                    PlotSettings plotSettings = (PlotSettings)tr.GetObject(psId, OpenMode.ForWrite);
                    plotSettings.Erase();
                }
                tr.Commit();
            }
        }&lt;/PRE&gt;</description>
      <pubDate>Tue, 12 May 2015 21:05:56 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/net-forum/import-pagesetups-from-dwg-file/m-p/5631876#M40141</guid>
      <dc:creator>SENL1362</dc:creator>
      <dc:date>2015-05-12T21:05:56Z</dc:date>
    </item>
    <item>
      <title>Re: Import Pagesetups from .dwg file</title>
      <link>https://forums.autodesk.com/t5/net-forum/import-pagesetups-from-dwg-file/m-p/5631878#M40142</link>
      <description>&lt;P&gt;Here is what I use....&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt; Public Sub ImportPageSetups(ByVal FromFile As String)
        Dim myDB As Database = Application.DocumentManager.MdiActiveDocument.Database
        Using myTrans As Transaction = myDB.TransactionManager.StartTransaction()
            Dim myDbPsDict As DBDictionary = TryCast(myTrans.GetObject(myDB.PlotSettingsDictionaryId, OpenMode.ForRead), DBDictionary)
            For Each myDbPs As System.Collections.DictionaryEntry In myDbPsDict
                myTrans.GetObject(myDbPs.Value, OpenMode.ForWrite).Erase()
            Next

            Dim sourceDB As Database = New Database(False, True)
            sourceDB.ReadDwgFile(FromFile, System.IO.FileShare.ReadWrite, False, Nothing)

            Dim HostMap As New DatabaseServices.IdMapping
            Using sourceTrans As Transaction = sourceDB.TransactionManager.StartTransaction()
                Dim dwtDbPsDict As DBDictionary = TryCast(sourceTrans.GetObject(sourceDB.PlotSettingsDictionaryId, OpenMode.ForRead), DBDictionary)
                Dim psIds As New ObjectIdCollection()
                For Each psDbPs As System.Collections.DictionaryEntry In dwtDbPsDict
                    psIds.Add(DirectCast(psDbPs.Value, ObjectId))
                Next
                If psIds.Count = 0 Then
                    Return
                End If
                myDB.WblockCloneObjects(psIds, myDB.PlotSettingsDictionaryId, HostMap, DuplicateRecordCloning.Ignore, False)
                sourceTrans.Commit()
            End Using
            RenameAnonymousPageSetups(HostMap)
            myTrans.Commit()
        End Using
    End Sub

    Private Sub RenameAnonymousPageSetups(plotSettingsIdMap As IdMapping)
        Dim db As Database = plotSettingsIdMap.DestinationDatabase
        Using tr As Transaction = db.TransactionManager.StartTransaction()
            Dim psDict As DBDictionary = TryCast(tr.GetObject(db.PlotSettingsDictionaryId, OpenMode.ForWrite, False), DBDictionary)
            If psDict Is Nothing Then
                Return
            End If
            For Each psIdPair As IdPair In plotSettingsIdMap
                Dim id As ObjectId = psIdPair.Value
                Dim ps As PlotSettings = TryCast(tr.GetObject(id, OpenMode.ForWrite, False), PlotSettings)
                If ps Is Nothing Then
                    Continue For
                End If
                If psDict.Contains(ps.PlotSettingsName) Then
                    Dim existingPsId As ObjectId = psDict.GetAt(ps.PlotSettingsName)
                    If existingPsId &amp;lt;&amp;gt; ObjectId.Null Then
                        psDict.Remove(existingPsId)
                    End If
                End If
                Dim anonymousName As String = psDict.NameAt(id)
                psDict.SetName(anonymousName, ps.PlotSettingsName)
            Next
            tr.Commit()
        End Using
    End Sub&lt;/PRE&gt;&lt;P&gt;I've got another program for setting a specific profile as default..&lt;/P&gt;</description>
      <pubDate>Tue, 12 May 2015 21:06:00 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/net-forum/import-pagesetups-from-dwg-file/m-p/5631878#M40142</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2015-05-12T21:06:00Z</dc:date>
    </item>
    <item>
      <title>Re: Import Pagesetups from .dwg file</title>
      <link>https://forums.autodesk.com/t5/net-forum/import-pagesetups-from-dwg-file/m-p/5632519#M40143</link>
      <description>&lt;P&gt;What is your error? eWrongObjectType?&lt;BR /&gt;If file contains PlotSettings that are model space then you need to pass true to PlotSettings Constructor.&lt;BR /&gt;&lt;A target="_blank" href="http://www.theswamp.org/index.php?topic=46566.msg515764#msg515764"&gt;http://www.theswamp.org/index.php?topic=46566.msg515764#msg515764&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is example that works for me that prompts you to select a file then imports all the page setups into current drawing&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;Public Class Commands

    &amp;lt;CommandMethod("CpyPltSettings")&amp;gt; _
    Public Sub CpyPltSettings()
        Dim opts As New PromptOpenFileOptions(vbLf &amp;amp; "Enter File")
        opts.PreferCommandLine = False
        opts.DialogName = "Select File"
        opts.Filter = "dwg files (*.dwg)|*.dwg"
        opts.DialogName = "Plot Settings"
        opts.DialogCaption = "Plot Settings"

        Dim pfr As PromptFileNameResult = Application.DocumentManager.MdiActiveDocument.Editor.GetFileNameForOpen(opts)
        If pfr.Status &amp;lt;&amp;gt; PromptStatus.OK Then
            Return
        End If

        AddPlotSettings(pfr.StringResult)
    End Sub

    Sub AddPlotSettings(ByVal PlotSettingsFile As String)

        Dim CurrentDatabase As Database = HostApplicationServices.WorkingDatabase
        Dim layName As String = Nothing
        Using SourceDatabase As New Database(False, True)
            SourceDatabase.ReadDwgFile(PlotSettingsFile, FileOpenMode.OpenForReadAndAllShare, True, "")
            Using currentTransaction As Transaction = CurrentDatabase.TransactionManager.StartTransaction

                Using sourceTransaction As Transaction = SourceDatabase.TransactionManager.StartTransaction
                    Dim sourcePlotDic As DBDictionary = SourceDatabase.PlotSettingsDictionaryId.GetObject(OpenMode.ForRead)

                    For Each item As DBDictionaryEntry In sourcePlotDic
                        Dim pl As PlotSettings = sourcePlotDic.GetAt(item.Key).GetObject(OpenMode.ForRead)
                        Dim cpl As New PlotSettings(pl.ModelType)
                        cpl.CopyFrom(pl)
                        cpl.AddToPlotSettingsDictionary(CurrentDatabase)
                    Next

                    sourceTransaction.Commit()
                End Using
                currentTransaction.Commit()
            End Using

        End Using


    End Sub
End Class&lt;/PRE&gt;</description>
      <pubDate>Wed, 13 May 2015 06:10:27 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/net-forum/import-pagesetups-from-dwg-file/m-p/5632519#M40143</guid>
      <dc:creator>jeff</dc:creator>
      <dc:date>2015-05-13T06:10:27Z</dc:date>
    </item>
    <item>
      <title>Re: Import Pagesetups from .dwg file</title>
      <link>https://forums.autodesk.com/t5/net-forum/import-pagesetups-from-dwg-file/m-p/5632611#M40144</link>
      <description>&lt;P&gt;Thankyou all so much.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;It was almost there.&amp;nbsp;Jeff's code showed a small difference.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Instead of:&lt;/P&gt;&lt;P&gt;&lt;SPAN style="white-space: pre-wrap; line-height: 15px; background-color: #f7f7f7;"&gt;Dim cpl As New PlotSettings(False)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;I changed it to..&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp; Dim cpl As New PlotSettings(pl.ModelType)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And it appears to be working fine&amp;nbsp;now.&lt;/P&gt;</description>
      <pubDate>Wed, 13 May 2015 08:36:48 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/net-forum/import-pagesetups-from-dwg-file/m-p/5632611#M40144</guid>
      <dc:creator>SRSDS</dc:creator>
      <dc:date>2015-05-13T08:36:48Z</dc:date>
    </item>
  </channel>
</rss>

