明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 771|回复: 4

关于打印的一个奇葩问题

[复制链接]
发表于 2025-8-2 23:28:34 | 显示全部楼层 |阅读模式

大佬们给看看这段代码,页面设置我已经在cad里手动设置好了,直接打印就可以,用这段代码前面都正常,唯独最后es = pEngine->endPlot();报错了。
  1. void PlotSiglePageA()//打印单页文档
  2. {
  3.     Acad::ErrorStatus es;
  4.     AcDbPlotSettings* pPlotSettings=nullptr;
  5.     AcDbObjectId layoutId;
  6.     {
  7.      AcDbLayoutManager* pLayoutManager = acdbHostApplicationServices()->layoutManager();//获取布局管理器
  8.      AcDbObjectId btrId = pLayoutManager->getActiveLayoutBTRId();//当前布局的块表记录ID
  9.      AcDbBlockTableRecord* pBTR;
  10.      if (acdbOpenObject(pBTR,btrId,AcDb::kForRead)!=Acad::eOk)
  11.      {
  12.       acutPrintf(_T("\n错误:无法打开布局块表记录!"));
  13.       return;
  14.      }
  15.      layoutId= pBTR->getLayoutId();//获取当前布局id
  16.      pBTR->close();
  17.      if (!layoutId.isValid ())
  18.      {
  19.       return;
  20.      }
  21.      AcDbLayout* pLayout = NULL;
  22.      if (acdbOpenObject(pLayout,layoutId,AcDb::kForRead)!=Acad::eOk)
  23.      {
  24.       return;
  25.      }
  26.      pPlotSettings = new AcDbPlotSettings(pLayout->modelType());
  27.      es=pPlotSettings->copyFrom(pLayout);     
  28.      pLayout->close();
  29.      if (es != Acad::eOk) {
  30.       acutPrintf(_T("\n错误:无法复制打印设置!"));
  31.       delete pPlotSettings;
  32.       return;
  33.      }
  34.     }  
  35.     AcPlPlotEngine* pEngine;
  36.     if (Acad::eOk == AcPlPlotFactory::createPublishEngine(pEngine))
  37.     {
  38.      es = pEngine->beginPlot(NULL);
  39.      if (es==Acad::eOk)
  40.      {
  41.       AcPlPlotPageInfo pageInfo;
  42.       AcPlPlotInfo plotInfo;
  43.       plotInfo.setLayout(layoutId);
  44.       plotInfo.setOverrideSettings(pPlotSettings);

  45.       AcPlPlotInfoValidator validator;
  46.       validator.setMediaMatchingPolicy(AcPlPlotInfoValidator::kMatchEnabled);
  47.       es = validator.validate(plotInfo);
  48.       if (es==Acad::eOk)
  49.       {
  50.        const ACHAR *szDocName=acDocManager->curDocument()->fileName();   
  51.        if (szDocName != nullptr && wcslen(szDocName) > 0)
  52.        {
  53.         es = pEngine->beginDocument(plotInfo, szDocName);
  54.         es = pEngine->beginPage(pageInfo, plotInfo, true);   
  55.         es = pEngine->beginGenerateGraphics();
  56.         es = pEngine->endGenerateGraphics();
  57.         es = pEngine->endPage();
  58.         es = pEngine->endDocument();  
  59.         es = pEngine->endPlot();
  60.         acutPrintf(_T("\nARX错误信息:%s"),acadErrorStatusText(es));  
  61.         //前面的es都正常,唯独这里报错了。eInvalidInput
  62.        }
  63.       }
  64.      }
  65.      pEngine->destroy();  
  66.      pEngine = NULL;
  67.     }
  68.     delete pPlotSettings;
  69.     return;
  70. }

回复

使用道具 举报

发表于 2025-8-3 00:21:48 | 显示全部楼层
不知道,2020年参考sdk里面写的。
上传个看看有没有帮助。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-8-3 00:24:10 | 显示全部楼层
gzxl 发表于 2025-8-3 00:21
不知道,2020年参考sdk里面写的。
上传个看看有没有帮助。

先谢谢G大。
我也实在找不出问题所在了。原来写的时候不是这样写是可以的,但是这样写就报错,不知道咋回事。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-8-3 01:29:02 | 显示全部楼层
gzxl 发表于 2025-8-3 00:21
不知道,2020年参考sdk里面写的。
上传个看看有没有帮助。

刚试了,还是一样的问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-8-3 02:10:51 | 显示全部楼层
问题已解决,是打开了后台打印,导致的。关闭后台打印就没事了。

评分

参与人数 1明经币 +1 收起 理由
gzxl + 1 很给力!

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2026-1-9 04:30 , Processed in 0.173896 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表