Message 1 of 3
how to turn on "Plot with plot styles" in the code?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
hi, I tried to print in black and white. I found, if "Plot with plot styles" is checked, then it's black and white. but if it's not checked, then the output still colored. how I can make sure "Plot with plot styles" is checked in my code.
here is my code
private static bool PublishFile(string outputFilename,
string mediaName,
string styleSheetName,
string plotDeviceName,
int intStdScaleType)
{
PlotRotation myPlotRotation = PlotRotation.Degrees000;
bool ret = false;
BlockTableRecord btr = Active.Database.CurrentSpaceId.GetObject<BlockTableRecord>();
Layout lo = btr.LayoutId.GetObject<Layout>();
// We need a PlotInfo object linked to the layout
PlotInfo pi = new PlotInfo();
pi.Layout = btr.LayoutId;
// We need a PlotSettings object based on the layout settings which we then customize
PlotSettings ps = new PlotSettings(lo.ModelType);
ps.CopyFrom(lo);
// The PlotSettingsValidator helps create a valid PlotSettings object
PlotSettingsValidator psv = PlotSettingsValidator.Current;
// We'll plot the extents, centered and scaled to fit
psv.SetPlotType(ps, Autodesk.AutoCAD.DatabaseServices.PlotType.Extents);
//
psv.SetUseStandardScale(ps, true);
//psv.SetStdScaleType(ps, StdScaleType.ScaleToFit);
StdScaleType myStdScaleType = StdScaleType.ScaleToFit;
if (Enum.IsDefined(typeof(StdScaleType), intStdScaleType))
{
myStdScaleType = (StdScaleType)intStdScaleType;
}
psv.SetStdScaleType(ps, myStdScaleType);
//
try
{
//psv.SetPlotCentered(ps, true);
psv.SetPlotCentered(ps, false);
psv.SetPlotOrigin(ps, new Point2d(0, 0));
//psv.SetPlotPaperUnits(ps, PlotPaperUnit.Inches);
//psv.SetPlotPaperUnits(ps, PlotPaperUnit.Millimeters);
psv.SetPlotRotation(ps, myPlotRotation);
}
catch (System.Exception caught)
{
throw;
}
// print in color or black/white
psv.RefreshLists(ps);
//
psv.SetCurrentStyleSheet(ps, styleSheetName);
//
psv.SetPlotConfigurationName(ps, plotDeviceName, mediaName);
// We need to link the PlotInfo to the PlotSettings and then validate it
pi.OverrideSettings = ps;
PlotInfoValidator piv = new PlotInfoValidator();
piv.MediaMatchingPolicy = MatchingPolicy.MatchEnabled;
piv.Validate(pi);
// A PlotEngine does the actual plotting (can also create one for Preview)
if (PlotFactory.ProcessPlotState == ProcessPlotState.NotPlotting)
{
PlotEngine pe = PlotFactory.CreatePublishEngine();
using (pe)
{
pe.BeginPlot(null, null);
// We'll be plotting a single document
pe.BeginDocument(pi, Active.Document.Name, null, 1, true, outputFilename);
PlotPageInfo ppi = new PlotPageInfo();
pe.BeginPage(ppi, pi, true, null);
pe.BeginGenerateGraphics(null);
pe.EndGenerateGraphics(null);
// Finish the sheet
pe.EndPage(null);
// Finish the document
pe.EndDocument(null);
pe.EndPlot(null);
}
ret = true;
}
else
{
ret = false;
}
return ret;
}
Windows 10 64 bit, AutoCAD (ACA, Map) 2023