Autodesk Community Tips- ADNオープン
Autodesk Community Tipsではちょっとしたコツ、やり方、ショートカット、アドバイスやヒントを共有しています。

AutoCAD .NET API :ページ設定を利用したバッチ印刷

Issue

オンラインヘルプ「レイアウトをパブリッシュする(.NET) 」の例では、PublishExecute メソッドを利用して DSD ファイルを使ったバッチ印刷の方法を説明しています。ただし、この例では "DWG to PDF.PC3" を指定してプロッタ環境設定をオーバーライド(上書き)しています。

印刷対象のレイアウトに設定されたページ設定を利用してバッチ印刷する方法はありますか?

 

Solution

PublishDsd メソッドで、定義済みのページ設定(印刷デバイスと設定)を使用してレイアウトを印刷、または、/ファイル出力することが出来ます。この場合、また、DsdData.SheetType の値を SheetType.OriginalDevice に指定することで、プロッタ環境設定(.pc3)を指定せずに連続印刷をおこなうことが可能です。

次のコードは、その C# 例です。

      Try
        Dim collection As DsdEntryCollection = New DsdEntryCollection()
        Dim entry As DsdEntry
        entry = New DsdEntry()
        entry.Layout = "レイアウト1"
        entry.DwgName = "c:\Temp\Drawing1.dwg"
        entry.Nps = "Setup1"
        entry.Title = "Sheet1"
        collection.Add(entry)
        entry = New DsdEntry()
        entry.Layout = "レイアウト1"
        entry.DwgName = "c:\Temp\Drawing2.dwg"
        entry.Nps = "Setup1"
        entry.Title = "Sheet2"
        collection.Add(entry)
        Dim dsd As DsdData = New DsdData()
        dsd.SetDsdEntryCollection(collection)
        dsd.ProjectPath = "c:\Temp\"
        dsd.LogFilePath = "c:\Temp\logdwf.log"
        dsd.SheetType = SheetType.OriginalDevice
        dsd.NoOfCopies = 1
        dsd.SheetSetName = "PublisherSet"
        dsd.WriteDsd("c:\Temp\publisher.dsd")
        Dim nbSheets As Integer = collection.Count

        Using progressDlg As PlotProgressDialog = New PlotProgressDialog(False, nbSheets, True)
          progressDlg.UpperPlotProgressRange = 100
          progressDlg.LowerPlotProgressRange = 0
          progressDlg.UpperSheetProgressRange = 100
          progressDlg.LowerSheetProgressRange = 0
          progressDlg.IsVisible = True
          Autodesk.AutoCAD.ApplicationServices.Application.SetSystemVariable("BACKGROUNDPLOT", 0)
          Dim publisher As Autodesk.AutoCAD.Publishing.Publisher = Autodesk.AutoCAD.ApplicationServices.Application.Publisher
          publisher.PublishDsd("c:\Temp\publisher.dsd", progressDlg)
          progressDlg.Destroy()
        End Using

      Catch ex As Autodesk.AutoCAD.Runtime.Exception
        MsgBox(ex.Message)
      End Try
    End Sub

なお、PublishDsd メソッドを使用して DSD ファイルをパブリッシュする前に、BACKGROUNDPLOT システム変数を 0 に設定する必要があります。