当前位置: 代码迷 >> 综合 >> ObjectARX 打印常见问题
  详细解决方案

ObjectARX 打印常见问题

热度:55   发布时间:2023-12-23 22:28:27.0

打印慢

可能是系统变量默认为后台打印,导致生成缓慢,解决方式,设置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;}
  相关解决方案