Autodesk Community Tipsではちょっとしたコツ、やり方、ショートカット、アドバイスやヒントを共有しています。
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 に設定する必要があります。