打印慢
可能是系统变量默认为后台打印,导致生成缓慢,解决方式,设置BACKGROUNDPLOT系统变量为前台打印
struct resbuf res,res2;acedGetVar(_T("BACKGROUNDPLOT"),&res);res2.restype=RTSHORT;res2.resval.rint=0;acedSetVar(_T("BACKGROUNDPLOT"),&res2);
//恢复系统变量acedSetVar(_T("BACKGROUNDPLOT"),&res);
窗口打印偏移
窗口打印的时候打印范围和设置的范围发生偏移,一般是窗口打印的坐标未设置为DCS。
导致这个问题的原因是View的Target偏移
后台解决方式可以参考 https://blog.csdn.net/txh0001/article/details/44754773
或者前台设置DCS
//DCSads_point minPt={ptMin.x,ptMin.y,0.0};ads_point maxPt={ptMax.x,ptMax.y,0.0};ads_point minPtDcs;ads_point maxPtDcs;struct resbuf from, to;from.restype = RTSHORT;to.restype = RTSHORT;from.resval.rint = 0;to.resval.rint=2;acedTrans(minPt,&from,&to,0,minPtDcs);acedTrans(maxPt,&from,&to,0,maxPtDcs);
打印预览返回值
这是ARX文档挖的一个坑,获取endPage的函数参数返回值即可。
es = AcPlPlotFactory::createPreviewEngine(pEngine,AcPlPlotFactory::kShowPlot|AcPlPlotFactory::kShowNextSheet|AcPlPlotFactory::kShowPreviousSheet);//-------省略---------ACPL_PREVIEWENDPLOT retPreview;memset(&retPreview,0,sizeof(ACPL_PREVIEWENDPLOT));es = pEngine->endPage(&retPreview);//-------省略---------switch(retPreview.nStatus){case kNormal:AfxMessageBox(_T("正常"));break;case kNext:AfxMessageBox(_T("下一页"));break;case kPrevious:AfxMessageBox(_T("上一页"));break;case kPlot:AfxMessageBox(_T("打印"));break;}