if (PlotFactory.ProcessPlotState == ProcessPlotState.NotPlotting)
{
if (imageType != enImageType.unknown)
{
if (transaction.StartTransaction())
{
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); acPlotSettings.ScaleLineweights = false;
acPlotSettings.ShowPlotStyles = false;
acPlotSettings.ShadePlot = PlotSettingsShadePlotType.AsDisplayed;
acPlotSettings.ShadePlotResLevel = ShadePlotResLevel.Normal;
acPlotSettings.PrintLineweights = true;
acPlotSettings.PlotTransparency = true;
acPlotSettings.DrawViewportsFirst = true;
acPlotSettings.PlotPlotStyles = false;
PlotSettingsValidator acPlotSettingsValidator = PlotSettingsValidator.Current;
acPlotSettingsValidator
.SetPlotWindowArea(acPlotSettings,
new Extents2d
(ll, ur
)); acPlotSettingsValidator.SetPlotType(acPlotSettings, Autodesk.AutoCAD.DatabaseServices.PlotType.Window);
// Maßstab
acPlotSettingsValidator.SetStdScaleType(acPlotSettings, StdScaleType.ScaleToFit);
//acPlotSettingsValidator.SetStdScale(acPlotSettings, dotsXPerUnit);
acPlotSettingsValidator.SetPlotCentered(acPlotSettings, true);
acPlotSettingsValidator.SetZoomToPaperOnUpdate(acPlotSettings, true);
acPlotSettingsValidator.SetPlotRotation(acPlotSettings, PlotRotation.Degrees000);
// Plotter setzten
if (imageType == enImageType.jpg)
acPlotSettingsValidator.SetPlotConfigurationName(acPlotSettings, "PublishToWeb JPG.pc3", "VGA_(640.00_x_480.00_Pixels)");
else
acPlotSettingsValidator.SetPlotConfigurationName(acPlotSettings, "PublishToWeb PNG.pc3", "VGA_(640.00_x_480.00_Pixels)");
acPlotInfo.OverrideSettings = acPlotSettings;
PlotInfoValidator acPlotInfoValidator
= new PlotInfoValidator
(); // Bildgröße setzten
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);
}
}
}