Dim tAcadDoc As Document = Application.DocumentManager.MdiActiveDocument 'Hintergrundplot-Einstellung sichern und auf 0 setzen Dim tBackGroundPlot_Var As Integer = CType(Application.GetSystemVariable("BACKGROUNDPLOT"), Integer) Application.SetSystemVariable("BACKGROUNDPLOT", 0) Dim tTrAct As Transaction = Nothing Try tTrAct = tAcadDoc.TransactionManager.StartTransaction Dim tLayoutMgr As LayoutManager = LayoutManager.Current 'get current layout Dim tCLayoutID As ObjectId = tLayoutMgr.GetLayoutId(tLayoutMgr.CurrentLayout) Dim tCLayout As Layout = CType(tTrAct.GetObject(tCLayoutID, OpenMode.ForWrite), Layout) 'auf ForWrite setzen, da nicht mit einer Kopie des Layouts gearbeitet wird, sprich die Eigenschaften direkt im aktuellen Layout gesetzt werden Dim tPltInfo As PlotInfo = New PlotInfo() tPltInfo.Layout = tCLayoutID Dim tPltSettings As PlotSettings = New PlotSettings(False) Dim tPSV As PlotSettingsValidator = PlotSettingsValidator.Current tPSV.RefreshLists(tCLayout) tPSV.SetPlotConfigurationName(tCLayout, "DWF6 ePlot.pc3", "ISO_A4_(297.00_x_210.00_mm)") 'leerschritte muessen durch '_' ersetzt werden tPSV.SetCanonicalMediaName(tCLayout, "ISO_A4_(297.00_x_210.00_mm)") tPSV.SetPlotPaperUnits(tCLayout, PlotPaperUnit.Millimeters) tPSV.SetPlotType(tCLayout, Autodesk.AutoCAD.DatabaseServices.PlotType.Layout) tPSV.SetUseStandardScale(tCLayout, False) tPSV.SetStdScaleType(tCLayout, StdScaleType.StdScale1To1) tPSV.RefreshLists(tCLayout) tTrAct.Commit() : tTrAct.Dispose() 'Plot-Fortschritts-dialog initialisieren Dim tPltProcDlg As PlotProgressDialog = New PlotProgressDialog(False, 1, True) 'folgende Einträge gibt's bei mir (2010) anders ausgeführt als scheinbar in 2009 tPltProcDlg.PlotMsgString(PlotMessageIndex.DialogTitle) = "Plot API Progress" tPltProcDlg.PlotMsgString(PlotMessageIndex.CancelJobButtonMessage) = "Cancel Job" tPltProcDlg.PlotMsgString(PlotMessageIndex.CancelSheetButtonMessage) = "Cancel Sheet" tPltProcDlg.PlotMsgString(PlotMessageIndex.SheetSetProgressCaption) = "Job Progress" tPltProcDlg.PlotMsgString(PlotMessageIndex.SheetProgressCaption) = "Sheet Progress" tPltProcDlg.UpperPlotProgressRange = 100 tPltProcDlg.LowerPlotProgressRange = 0 Dim tPltEngine As PlotEngine = PlotFactory.CreatePublishEngine Try tPltProcDlg.OnBeginPlot() tPltProcDlg.IsVisible = True tPltEngine.BeginPlot(Nothing, Nothing) Dim tPltInfoValidator As PlotInfoValidator = New PlotInfoValidator tPltInfoValidator.MediaMatchingPolicy = Autodesk.AutoCAD.PlottingServices.MatchingPolicy.MatchEnabled tPltInfoValidator.Validate(tPltInfo) tPltEngine.BeginDocument(tPltInfo, tAcadDoc.Database.Filename, Nothing, 1, True, tAcadDoc.Database.Filename & "_" & tLayoutMgr.CurrentLayout & ".DWF") tPltProcDlg.OnBeginSheet() tPltProcDlg.UpperSheetProgressRange = 100 tPltProcDlg.LowerSheetProgressRange = 0 tPltProcDlg.SheetProgressPos = 0 Dim tPltPageInfo As PlotPageInfo = New PlotPageInfo() tPltEngine.BeginPage(tPltPageInfo, tPltInfo, True, Nothing) tPltEngine.BeginGenerateGraphics(Nothing) tPltEngine.EndGenerateGraphics(Nothing) tPltEngine.EndPage(Nothing) tPltProcDlg.SheetProgressPos = 100 tPltProcDlg.OnEndSheet() tPltProcDlg.PlotProgressPos = 100 tPltEngine.EndDocument(Nothing) tPltEngine.EndPlot(Nothing) Catch ex2 As Exception Call MsgBox("Error at EX2: " & ex2.Message) End Try tPltProcDlg.Destroy() tPltEngine.Destroy() Catch ex1 As Exception Call MsgBox("Error at EX1: " & ex1.Message) Finally If (tTrAct IsNot Nothing) AndAlso (Not tTrAct.IsDisposed) Then tTrAct.Dispose() : tTrAct = Nothing End Try Application.SetSystemVariable("BACKGROUNDPLOT", tBackGroundPlot_Var) 'Hintergrundplot wieder auf ursprünglichen Wert setzen