应用程序可以选择使用绘图 API 配置时功能、打印时功能或两者。它们还可以包括多页文档、打印到文件、错误处理和覆盖默认打印进度对话框的规定。 注意:
每当通过绘图 API 访问绘图引擎时,如果 BACKGROUNDPLOT 系统变量设置为 0,系统将在前台进行绘图,如果 BACKGROUNDPLOT 系统变量设置为 1、2 或 3,则系统将在后台进行绘制。 使用基本的配置时和打印时 API
以下代码演示了 API 和默认打印进度对话框的基本用法,“打印进度”对话框中对此进行了进一步讨论。 AcPlPlotEngine* pEngine = NULL; if(Acad::eOk==AcPlPlotFactory::createPublishEngine(pEngine)) { // Here is the progress dialog for the current plot process... AcPlPlotProgressDialog *pPlotProgDlg=acplCreatePlotProgressDialog( acedGetAcadFrame()->m_hWnd,false,1); pPlotProgDlg->setPlotMsgString( AcPlPlotProgressDialog::PlotMSGIndex::kDialogTitle, "Plot API Progress"); pPlotProgDlg->setPlotMsgString( AcPlPlotProgressDialog::PlotMSGIndex::kCancelJobBtnMsg, "Cancel Job"); pPlotProgDlg->setPlotMsgString( AcPlPlotProgressDialog::PlotMSGIndex::kCancelSheetBtnMsg, "Cancel Sheet"); pPlotProgDlg->setPlotMsgString( AcPlPlotProgressDialog::PlotMSGIndex::kSheetSetProgressCaption, "Job Progress"); pPlotProgDlg->setPlotMsgString( AcPlPlotProgressDialog::PlotMSGIndex::kSheetProgressCaption, "Sheet Progress"); pPlotProgDlg->setPlotProgressRange(0,100); pPlotProgDlg->onBeginPlot(); pPlotProgDlg->setIsVisible(true); es = pEngine->beginPlot(pPlotProgDlg); AcPlPlotPageInfo pageInfo; // Used to describe how the plot is to be made. AcPlPlotInfo plotInfo; // First, set the layout to the specified layout // (which is the current layout in this sample). plotInfo.setLayout(layoutId);// This is required. // Now, override the layout settings with the plot settings // we have been populating. plotInfo.setOverrideSettings(pPlotSettings); // We need to validate these settings. AcPlPlotInfoValidator validator; validator.setMediaMatchingPolicy( AcPlPlotInfoValidator::MatchingPolicy::kMatchEnabled); es = validator.validate(plotInfo); // Begin document. The version we call is dependent // on the plot-to-file status. const char *szDocName=acDocManager->curDocument()->fileName(); if(m_bPlotToFile) es = pEngine->beginDocument(plotInfo, szDocName, NULL, 1, true, m_csFilename); else es = pEngine->beginDocument(plotInfo, szDocName); // Follow through sending commands to the engine, // and notifications to the progress dialog. pPlotProgDlg->onBeginSheet(); pPlotProgDlg->setSheetProgressRange(0, 100); pPlotProgDlg->setSheetProgressPos(0); es = pEngine->beginPage(pageInfo, plotInfo, true); es = pEngine->beginGenerateGraphics(); es = pEngine->endGenerateGraphics(); es = pEngine->endPage(); pPlotProgDlg->setSheetProgressPos(100); pPlotProgDlg->onEndSheet(); pPlotProgDlg->setPlotProgressPos(100); es = pEngine->endDocument(); es = pEngine->endPlot(); // Destroy the engine pEngine->destroy(); pEngine = NULL; // and the progress dialog. pPlotProgDlg->destroy(); else // Ensure the engine is not already busy... AfxMessageBox("Plot Engine is Busy..."); } |
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-1-8 19:47
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.