找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 127|回复: 0

arx打印dwg为pdf

[复制链接]

1

主题

0

回帖

37

积分

管理员

积分
37
发表于 2024-5-26 08:48:46 | 显示全部楼层 |阅读模式
  1. void PlotDwgToPdf(PlotSettingInfo& plotSettingInfo)
  2. {
  3.     // 设置系统变量BACKGROUNDPLOT
  4.     SystemVar backgroudplot(采用T("BACKGROUNDPLOT"), 0);
  5.     // 获取原视图
  6.     BOOL bNeedRestoreView = FALSE;
  7.     AcDbViewTableRecord viewOld;
  8.     GetCurrentView(viewOld);
  9.     AcPlPlotEngine* pEngine = NULL;
  10.     if (Acad::eOk == AcPlPlotFactory::createPublishEngine(pEngine))
  11.     {
  12.         std::set<CString> setPlotFile;
  13.         // Here is the progress dialog for the current plot process...
  14.         AcPlPlotProgressDialog* pPlotProgDlg = acplCreatePlotProgressDialog(acedGetAcadFrame()->m采用hWnd, false, 1);
  15.         pPlotProgDlg->setPlotMsgString(AcPlPlotProgressDialog::PlotMSGIndex::kDialogTitle, L"Plot API Progress");
  16.         pPlotProgDlg->setPlotMsgString(AcPlPlotProgressDialog::PlotMSGIndex::kCancelJobBtnMsg, L"Cancel Job");
  17.         pPlotProgDlg->setPlotMsgString(AcPlPlotProgressDialog::PlotMSGIndex::kCancelSheetBtnMsg, L"Cancel Sheet");
  18.         pPlotProgDlg->setPlotMsgString(AcPlPlotProgressDialog::PlotMSGIndex::kSheetSetProgressCaption, L"Job Progress");
  19.         pPlotProgDlg->setPlotMsgString(AcPlPlotProgressDialog::PlotMSGIndex::kSheetProgressCaption, L"Sheet Progress");
  20.         pPlotProgDlg->setPlotProgressRange(0, 100);
  21.         pPlotProgDlg->onBeginPlot();
  22.         pPlotProgDlg->setIsVisible(true);
  23.         int nDwgCount = plotSettingInfo.m采用vecBlockInfo4Plot.size();
  24.         for (int num = 0; num < plotSettingInfo.m采用vecBlockInfo4Plot.size(); num++)
  25.         {
  26.             if (pPlotProgDlg->isPlotCancelled() || pPlotProgDlg->isSheetCancelled())
  27.             {
  28.                 break;
  29.             }
  30.             CString csFilePathWithoutExt = plotSettingInfo.m采用csSaveLocation + 采用T("\") + CString(plotSettingInfo.m采用vecBlockInfo4Plot[num].m采用sPlotFileName.data());
  31.             CString csDstPdf = GetNextFilePath(csFilePathWithoutExt, 采用T(".pdf"), 0, plotSettingInfo.m采用bOverride);
  32.             CString csStatus;
  33.             csStatus.Format(采用T("正在打印%d/%d..."), num + 1, nDwgCount);
  34.             pPlotProgDlg->setPlotMsgString(AcPlPlotProgressDialog::PlotMSGIndex::kSheetName, csDstPdf);
  35.             pPlotProgDlg->setPlotMsgString(AcPlPlotProgressDialog::PlotMSGIndex::kStatus, csStatus);
  36.             AcPlPlotInfo plotInfo;
  37.             SetPlotInfo(plotSettingInfo.m采用vecBlockInfo4Plot[num], plotSettingInfo.m采用idLayout, plotInfo);
  38.             DoPlot(pPlotProgDlg, pEngine, plotInfo, true, csDstPdf);
  39.             setPlotFile.insert(csDstPdf);
  40.             //int nProgressPercent = (num + 1) * 100 / nDwgCount;
  41.             pPlotProgDlg->setPlotProgressPos(100);
  42.         }
  43.         // Destroy the engine
  44.         pEngine->destroy();
  45.         pEngine = NULL;
  46.         // and the progress dialog.
  47.         pPlotProgDlg->destroy();
  48.         pPlotProgDlg = NULL;
  49.     }
  50.     else
  51.     {
  52.         // Ensure the engine is not already busy...
  53.         AfxMessageBox(L"Plot Engine is Busy...");
  54.     }
  55.     // 恢复视图
  56.     if (bNeedRestoreView)
  57.     {
  58.         // 将视图对象设置为当前视图
  59.         acedSetCurrentView(&viewOld, NULL);
  60.     }
  61. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2025-1-6 15:11 , Processed in 0.133786 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表