最近有个项目需要使用arx开发一个插件,把dwg打印为pdf。由于之前使用zrx开发了一个类似功能的插件,于是就把工程配置改了下,使得工程可以生成arx。但经过测试发现了一个问题,在zwcad上可以正常的把dwg的图块批量打印为pdf,但是在autocad上却不行,只能打印出第一个图块,后面的图块都不能打印成pdf。

经过多天的问题排查与资料查找,都没有找到问题原因。最后请教了老大,才发现autocad的打印需要把环境变量BACKGROUNDPLOT设置为0,即前台打印,问题这才解决。

最后附下打印的相关代码,希望可以帮助到更多的人少走弯路。

void PlotDwgToPdf(std::shared_ptr<AcDbPlotSettings>& ptrPlotSettings)
{struct resbuf rbBackGroundPlot;acedGetVar(_T("BACKGROUNDPLOT"), &rbBackGroundPlot);if (rbBackGroundPlot.restype == RTSHORT && rbBackGroundPlot.resval.rint != 0){int nOld = rbBackGroundPlot.resval.rint;rbBackGroundPlot.resval.rint = 0;acedSetVar(_T("BACKGROUNDPLOT"), &rbBackGroundPlot);rbBackGroundPlot.resval.rint = nOld;}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, L"Plot API Progress");pPlotProgDlg->setPlotMsgString(AcPlPlotProgressDialog::PlotMSGIndex::kCancelJobBtnMsg, L"Cancel Job");pPlotProgDlg->setPlotMsgString(AcPlPlotProgressDialog::PlotMSGIndex::kCancelSheetBtnMsg, L"Cancel Sheet");pPlotProgDlg->setPlotMsgString(AcPlPlotProgressDialog::PlotMSGIndex::kSheetSetProgressCaption, L"Job Progress");pPlotProgDlg->setPlotMsgString(AcPlPlotProgressDialog::PlotMSGIndex::kSheetProgressCaption, L"Sheet Progress");pPlotProgDlg->setPlotProgressRange(0, 100);pPlotProgDlg->onBeginPlot();pPlotProgDlg->setIsVisible(true);if (m_PlotSettingInfo.m_vecBlockInfo4Plot.size()){int nDwgCount = m_PlotSettingInfo.m_vecBlockInfo4Plot.size();for (int num = 0; num < m_PlotSettingInfo.m_vecBlockInfo4Plot.size(); num++){if (pPlotProgDlg->isPlotCancelled() || pPlotProgDlg->isSheetCancelled()){break;}CString csStatus;csStatus.Format(_T("正在打印%d/%d..."), num + 1, nDwgCount);pPlotProgDlg->setPlotMsgString(AcPlPlotProgressDialog::PlotMSGIndex::kSheetName, csDstPdf);pPlotProgDlg->setPlotMsgString(AcPlPlotProgressDialog::PlotMSGIndex::kStatus, csStatus);SetPlotSettingValidator(ptrPlotSettings, m_PlotSettingInfo.m_vecBlockInfo4Plot[num]);SetPlotInfo(m_PlotSettingInfo.m_LayoutId, ptrPlotSettings.get());DoPlot(pPlotProgDlg, pEngine, true, csDstPdf);int nProgressPercent = (num + 1) * 100 / nDwgCount;pPlotProgDlg->setPlotProgressPos(100);}}// Destroy the engine pEngine->destroy();pEngine = NULL;// and the progress dialog.pPlotProgDlg->destroy();pPlotProgDlg = NULL;}else{// Ensure the engine is not already busy...AfxMessageBox(L"Plot Engine is Busy...");}acedSetVar(_T("BACKGROUNDPLOT"), &rbBackGroundPlot);
}

参考文档:
BACKGROUNDPLOT (System Variable) | AutoCAD 2020 | Autodesk Knowledge Network

arx打印dwg为pdf相关推荐

  1. c# autocad二次开发 dwg文件的框表框图导出pdf方便打印 dwg转pdf工具

    20190815 热 项目背景: 最近搞电气装配图,一份dwg里面N份框表框图,打印时,要先一个个框图导出pdf,而导出pdf时又要一个个用窗口模式选择导出范围,流程比较繁琐,于是程序员之魂觉醒赶紧弄 ...

  2. 解决CAD使用dwg to pdf打印时,新建自定义纸张,重新打开CAD后自定义纸张消失的问题

    问题描述 在使用CAD,将图纸导出为pdf格式的时候,经常会用到dwg to pdf绘图仪.有时需要使用一些特殊的图纸尺寸,而CAD自带的图纸尺寸并不能完全满足要求,这时需要我们自定义图纸尺寸. 但是 ...

  3. JAVA dwg转pdf的正确解法

    ** 有个项目需要用到dwg转pdf的这个功能,网上搜了好多只有一个解决办法,就是使用aspose的方式但是这种方式的转的pdf特别模糊,而且只有黑色效果非常不好** 我从网上的一个dwg-pdf软件 ...

  4. ACAD DWG to PDF Converter 9.8.2.4版本更新啦

    无需AutoCAD即可快速轻松地转换DWG和DXF文件.将CAD绘图转换为可共享的PDF文件.ACAD DWG to PDF Converter将DWG和DXF文件转换为矢量PDF - 您无需使用Au ...

  5. 怎么打印加密的PDF文件?

    "加密的PDF文件怎么打印?" "加密的PDF文件应该怎么解除限制?" 最近看到很多人在问关于如何打印加密的PDF文件的问题,他们在网上找的大量文档资料其实都是 ...

  6. 【新】CSDN文章一键打印、输出PDF(自动阅读全文、全清爽模式)

    版权声明:本文为丨匿名用户丨原创文章,转载请注明出处:[新]CSDN文章一键打印.输出PDF(自动阅读全文.全清爽模式)_丨晋丨-CSDN博客_csdn打印https://blog.csdn.net/ ...

  7. java实现dwg转pdf

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.无奈选择第二种 二.jar引入 1.jar地址 2.使用jar,完成dwg转为pdf 总结 前言 由于公司需要最近 ...

  8. 图纸格式dwg批转pdf如何操作

    做图纸人员其实也挺累的 ,天天脑子都快炸了,真相信那句话,脑力劳动不一定比体力劳动轻松! 现在就教大家如何简单的操作dwg转pdf格式. 说的dwg批转pdf工具的话,我只能说都是智商高的.我这旁边有 ...

  9. 手机上怎么将DWG转PDF?这个方法轻松解决

    最近在和别的同事对接文件的时候收到了分享的一个DWG格式的文件,这种文件可能有些小伙伴们不太熟悉,这是CAD图纸绘制中常用到的图纸文件的格式,由于我这边是在手机中接手到的,无法直接查阅文件,但是又不想 ...

最新文章

  1. 【381天】我爱刷题系列140(2018.02.21)
  2. 牛客练习赛7 E 珂朵莉的数列
  3. 被315曝光还霸气回应“不受影响”,这家SaaS公司是真硬气还是无底线?
  4. PAT甲级1142 Maximal Clique :[C++题解]图论、最大团、枚举
  5. 用python画雪花飘落_简单说 JavaScript实现雪花飘落效果
  6. 【树莓派】树莓派3B安装宝塔面板并配置安装LNMP
  7. Hadoop 101: Programming MapReduce with Native Libraries, Hive, Pig, and Cascading
  8. MATLAB切换中文(无语言选项)
  9. 有哪些比较好用的安卓模拟器(电脑端)
  10. ADXL362 加速度传感器 模拟SPI MSP430G2553 单片机 读取 程序
  11. Oracle隐含参数查看
  12. GPS手机射频的一些测试项目
  13. IC授权卡和复制卡的区别_北京居住证跟居住卡的区别
  14. java压缩与解压缩(1)使用java.util.zip
  15. 【微信小程序】—— wx.showToast 延迟页面跳转、一闪而过 问题解决办法
  16. 日语五十音图(带图)
  17. 计算机毕业设计ssm物流站环境监测系统
  18. PEG包裹碳化硅(SiC)量子点荧光材料
  19. FactorVAE:基于变分自编码器的动态因子模型
  20. 网络安全 中间人攻击-ARP欺骗 工具:Cain

热门文章

  1. 5.15 英语单词小记
  2. 第八十七篇 朴素贝叶斯
  3. 杨氏不等式(控制中的应用)
  4. 中国工商银行网上银行B2C在线支付接口说明
  5. 从水处理速度梯度的公式,复习一下物理学常用公式,擦边爱因斯坦质能方程
  6. 摄影测量外方位元素代码
  7. NAS不够快?那就上SSD享受如火箭般的体验吧!
  8. C# 怎么把集合转换成数据库添加语句,把类转换成sql语句
  9. 春生冬至时——今日冬至
  10. Python 基于sicpy求解定积分 ,不定积分以及多重积分