Hi!
at the weekend i search less in web and found several examples and by the following i get some success. know my Code Looks like.
thanks for your much time you send to find a way.
jan
Public Sub RasterPlot(PlotFullName As String)
' ------ Quelle: https://www.keanw.com/2007/09/driving-a-basic.html
_Log.WriteFuncName((New StackTrace).GetFrame(0).GetMethod.Name)
_Log.WriteParameter("PlotFullName", PlotFullName)
Dim doc As Autodesk.AutoCAD.ApplicationServices.Document = Autodesk.AutoCAD.ApplicationServices.Core.Application.DocumentManager.MdiActiveDocument
Dim ed As Editor = doc.Editor
Dim db As Database = doc.Database
Dim tr As Transaction = db.TransactionManager.StartTransaction()
Using tr
Try
Dim btr As BlockTableRecord = CType(tr.GetObject(db.CurrentSpaceId, Autodesk.AutoCAD.DatabaseServices.OpenMode.ForRead), BlockTableRecord)
Dim lo As Layout = CType(tr.GetObject(btr.LayoutId, Autodesk.AutoCAD.DatabaseServices.OpenMode.ForRead), Layout)
Dim pi As PlotInfo = New PlotInfo()
pi.Layout = btr.LayoutId
Dim ps As PlotSettings = New PlotSettings(lo.ModelType)
ps.CopyFrom(lo)
Dim psv As PlotSettingsValidator = PlotSettingsValidator.Current
'psv.SetPlotType(ps, Autodesk.AutoCAD.DatabaseServices.PlotType.Extents)
psv.SetPlotType(ps, Autodesk.AutoCAD.DatabaseServices.PlotType.Window) 'angepasst
psv.SetUseStandardScale(ps, True)
psv.SetStdScaleType(ps, StdScaleType.StdScale1To1) 'angepasst
psv.SetPlotCentered(ps, True)
' HINWEIS: hier den internen Namen des Papierformates ermitteln
' Dim fPlot As New EBL.Acad.Plotten()
' Dim ListPossibleDeviceMedium As String = fPlot.GetPossibleMedia("_DWG To PDF_NoPreview.pc3")
psv.SetPlotConfigurationName(ps, "_DWG To PDF_NoPreview.pc3", "UserDefinedMetric (1040.00 x 1040.00mm)")
pi.OverrideSettings = ps
Dim piv As PlotInfoValidator = New PlotInfoValidator()
piv.MediaMatchingPolicy = MatchingPolicy.MatchEnabled
piv.Validate(pi)
If PlotFactory.ProcessPlotState = ProcessPlotState.NotPlotting Then
Dim pe As PlotEngine = PlotFactory.CreatePublishEngine()
Using pe
Dim ppd As PlotProgressDialog = New PlotProgressDialog(False, 1, True)
Using ppd
' -- mit den nachfolgenden ppd-Parametern bin ich nicht klargekommen
''ppd.PlotMsgString(PlotMessageIndex.DialogTitle = "Custom Plot Progress")
''ppd.PlotMsgString(PlotMessageIndex.CancelJobButtonMessage, "Cancel Job")
''ppd.PlotMsgString(PlotMessageIndex.CancelSheetButtonMessage, "Cancel Sheet")
''ppd.PlotMsgString(PlotMessageIndex.SheetSetProgressCaption, "Sheet Set Progress")
''ppd.PlotMsgString(PlotMessageIndex.SheetProgressCaption, "Sheet Progress")
ppd.LowerPlotProgressRange = 0
ppd.UpperPlotProgressRange = 100
ppd.PlotProgressPos = 0
ppd.OnBeginPlot()
ppd.IsVisible = True
pe.BeginPlot(ppd, Nothing)
pe.BeginDocument(pi, doc.Name, Nothing, 1, True, PlotFullName)
ppd.OnBeginSheet()
ppd.LowerSheetProgressRange = 0
ppd.UpperSheetProgressRange = 100
ppd.SheetProgressPos = 0
Dim ppi As PlotPageInfo = New PlotPageInfo()
pe.BeginPage(ppi, pi, True, Nothing)
pe.BeginGenerateGraphics(Nothing)
pe.EndGenerateGraphics(Nothing)
pe.EndPage(Nothing)
ppd.SheetProgressPos = 100
ppd.OnEndSheet()
pe.EndDocument(Nothing)
ppd.PlotProgressPos = 100
ppd.OnEndPlot()
pe.EndPlot(Nothing)
End Using 'ppd
End Using 'pe
Else
ed.WriteMessage(vbLf & "Another plot is in progress.")
_Log.WriteAsError("Another plot is in progress!")
End If
Catch ex As System.Exception
_Log.WriteAsError("Fehler bei der Plotausgabe!" & Environment.NewLine & ex.ToString)
End Try
End Using
End Sub