arx打印dwg为pdf
最近有个项目需要使用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相关推荐
- c# autocad二次开发 dwg文件的框表框图导出pdf方便打印 dwg转pdf工具
20190815 热 项目背景: 最近搞电气装配图,一份dwg里面N份框表框图,打印时,要先一个个框图导出pdf,而导出pdf时又要一个个用窗口模式选择导出范围,流程比较繁琐,于是程序员之魂觉醒赶紧弄 ...
- 解决CAD使用dwg to pdf打印时,新建自定义纸张,重新打开CAD后自定义纸张消失的问题
问题描述 在使用CAD,将图纸导出为pdf格式的时候,经常会用到dwg to pdf绘图仪.有时需要使用一些特殊的图纸尺寸,而CAD自带的图纸尺寸并不能完全满足要求,这时需要我们自定义图纸尺寸. 但是 ...
- JAVA dwg转pdf的正确解法
** 有个项目需要用到dwg转pdf的这个功能,网上搜了好多只有一个解决办法,就是使用aspose的方式但是这种方式的转的pdf特别模糊,而且只有黑色效果非常不好** 我从网上的一个dwg-pdf软件 ...
- ACAD DWG to PDF Converter 9.8.2.4版本更新啦
无需AutoCAD即可快速轻松地转换DWG和DXF文件.将CAD绘图转换为可共享的PDF文件.ACAD DWG to PDF Converter将DWG和DXF文件转换为矢量PDF - 您无需使用Au ...
- 怎么打印加密的PDF文件?
"加密的PDF文件怎么打印?" "加密的PDF文件应该怎么解除限制?" 最近看到很多人在问关于如何打印加密的PDF文件的问题,他们在网上找的大量文档资料其实都是 ...
- 【新】CSDN文章一键打印、输出PDF(自动阅读全文、全清爽模式)
版权声明:本文为丨匿名用户丨原创文章,转载请注明出处:[新]CSDN文章一键打印.输出PDF(自动阅读全文.全清爽模式)_丨晋丨-CSDN博客_csdn打印https://blog.csdn.net/ ...
- java实现dwg转pdf
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.无奈选择第二种 二.jar引入 1.jar地址 2.使用jar,完成dwg转为pdf 总结 前言 由于公司需要最近 ...
- 图纸格式dwg批转pdf如何操作
做图纸人员其实也挺累的 ,天天脑子都快炸了,真相信那句话,脑力劳动不一定比体力劳动轻松! 现在就教大家如何简单的操作dwg转pdf格式. 说的dwg批转pdf工具的话,我只能说都是智商高的.我这旁边有 ...
- 手机上怎么将DWG转PDF?这个方法轻松解决
最近在和别的同事对接文件的时候收到了分享的一个DWG格式的文件,这种文件可能有些小伙伴们不太熟悉,这是CAD图纸绘制中常用到的图纸文件的格式,由于我这边是在手机中接手到的,无法直接查阅文件,但是又不想 ...
最新文章
- 【381天】我爱刷题系列140(2018.02.21)
- 牛客练习赛7 E 珂朵莉的数列
- 被315曝光还霸气回应“不受影响”,这家SaaS公司是真硬气还是无底线?
- PAT甲级1142 Maximal Clique :[C++题解]图论、最大团、枚举
- 用python画雪花飘落_简单说 JavaScript实现雪花飘落效果
- 【树莓派】树莓派3B安装宝塔面板并配置安装LNMP
- Hadoop 101: Programming MapReduce with Native Libraries, Hive, Pig, and Cascading
- MATLAB切换中文(无语言选项)
- 有哪些比较好用的安卓模拟器(电脑端)
- ADXL362 加速度传感器 模拟SPI MSP430G2553 单片机 读取 程序
- Oracle隐含参数查看
- GPS手机射频的一些测试项目
- IC授权卡和复制卡的区别_北京居住证跟居住卡的区别
- java压缩与解压缩(1)使用java.util.zip
- 【微信小程序】—— wx.showToast 延迟页面跳转、一闪而过 问题解决办法
- 日语五十音图(带图)
- 计算机毕业设计ssm物流站环境监测系统
- PEG包裹碳化硅(SiC)量子点荧光材料
- FactorVAE:基于变分自编码器的动态因子模型
- 网络安全 中间人攻击-ARP欺骗 工具:Cain