打印慢
可能是系统变量默认为后台打印,导致生成缓慢,解决方式,设置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偏移
或者前台设置DCS
//DCS
ads_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;
}