Code:
public Boolean generate(clTransaction transaction, clBeanPixelFormat thisPixelformat)
{
if (transaction == null) throw new ArgumentNullException("transaction darf nicht null sein");
Boolean result = false;
if (PlotFactory.ProcessPlotState == ProcessPlotState.NotPlotting)
{
if (transaction.StartTransaction())
{
try
{
Object bgPlott = Application.GetSystemVariable("BACKGROUNDPLOT");
Application.SetSystemVariable("BACKGROUNDPLOT", 0);
BlockTableRecord acBlockTableRecord = transaction.getObject(transaction.AcDatabase.CurrentSpaceId, OpenMode.ForRead) as BlockTableRecord;
Layout acLayout = transaction.getObject(acBlockTableRecord.LayoutId, OpenMode.ForRead) as Layout; PlotInfo acPlotInfo = new PlotInfo();
acPlotInfo.Layout = acLayout.ObjectId;
PlotSettings acPlotSettings = new PlotSettings(acLayout.ModelType);
PlotConfigInfo acPlotConfigInfo = new PlotConfigInfo();
acPlotSettings.CopyFrom(acLayout);
if (acLayout.ModelType)
{
acPlotSettings.ScaleLineweights = true;
acPlotSettings.ShowPlotStyles = false;
acPlotSettings.ShadePlot = PlotSettingsShadePlotType.AsDisplayed;
acPlotSettings.ShadePlotResLevel = ShadePlotResLevel.Normal;
acPlotSettings.PrintLineweights = true;
acPlotSettings.PlotTransparency = true;
acPlotSettings.DrawViewportsFirst = true;
acPlotSettings.PlotPlotStyles = false;
}
else
{
}
PlotSettingsValidator acPlotSettingsValidator = PlotSettingsValidator.Current;
// Plotter setzten
acPlotSettingsValidator.SetPlotConfigurationName(acPlotSettings, "PNG_PLOTTER.pc3", thisPixelformat.AcadPlottFormatName);
acPlotSettingsValidator.SetStdScaleType(acPlotSettings, StdScaleType.ScaleToFit);
acPlotSettingsValidator.SetPlotCentered(acPlotSettings, true);
acPlotSettingsValidator.SetPlotWindowArea(acPlotSettings, new Extents2d(ll, ur));
acPlotSettingsValidator.SetPlotType(acPlotSettings, Autodesk.AutoCAD.DatabaseServices.PlotType.Window);
//acPlotSettingsValidator.SetStdScale(acPlotSettings, dotsXPerUnit);
acPlotSettingsValidator.SetPlotCentered(acPlotSettings, true);
acPlotSettingsValidator.SetZoomToPaperOnUpdate(acPlotSettings, true);
acPlotSettingsValidator.SetPlotRotation(acPlotSettings, PlotRotation.Degrees000);
acPlotInfo.OverrideSettings = acPlotSettings;
PlotInfoValidator acPlotInfoValidator = new PlotInfoValidator();
acPlotInfoValidator.MediaMatchingPolicy = MatchingPolicy.MatchDisabled;
acPlotInfoValidator.Validate(acPlotInfo);
if (acPlotInfo.IsValidated)
{
using (PlotEngine acPlotEngine = PlotFactory.CreatePublishEngine())
{
using (PlotProgressDialog acPlotProgressDialog = new PlotProgressDialog(false, 1, true))
{
if (acPlotEngine != null)
{
acPlotProgressDialog.LowerPlotProgressRange = 0;
acPlotProgressDialog.UpperPlotProgressRange = 100;
acPlotProgressDialog.OnBeginPlot();
acPlotProgressDialog.IsVisible = true;
acPlotEngine.BeginPlot(acPlotProgressDialog, null);
acPlotEngine.BeginDocument(acPlotInfo, transaction.AcDocument.Name, null, 1, true, exportFileName);
PlotPageInfo acPlotPageInfo = new PlotPageInfo();
acPlotProgressDialog.LowerSheetProgressRange = 0;
acPlotProgressDialog.UpperSheetProgressRange = 100;
acPlotProgressDialog.set_PlotMsgString(PlotMessageIndex.Status, "Erzeuge [" + exportFileName + "]");
acPlotProgressDialog.OnBeginSheet();
acPlotEngine.BeginPage(acPlotPageInfo, acPlotInfo, true, null);
acPlotEngine.BeginGenerateGraphics(null);
acPlotEngine.EndGenerateGraphics(null);
acPlotEngine.EndPage(null);
acPlotProgressDialog.SheetProgressPos = 100;
acPlotProgressDialog.OnEndSheet();
acPlotEngine.EndDocument(null);
acPlotProgressDialog.PlotProgressPos = 100;
acPlotProgressDialog.OnEndPlot();
acPlotEngine.EndPlot(null);
acPlotProgressDialog.IsVisible = false;
}
}
}
}
acPlotInfoValidator.Dispose();
acPlotInfo.Dispose();
acPlotSettings.Dispose();
Application.SetSystemVariable("BACKGROUNDPLOT", bgPlott);
}
catch (Exception ex)
{
clEditor.LogException(ex);
}
}
}
else
clEditor.writeStringLF("\nAnderer Plot in Arbeit!");
return result;
}