乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 20|回复: 1

调用CAD程序,通过开关文档,把JPG转PLT出现的问题,求解,急。。

[复制链接]

16

主题

51

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
115
发表于 2013-11-29 10:38:00 | 显示全部楼层 |阅读模式
工作过程:读待转JPG,把JPG文件读到CAD中,转换成PLT文件输出,然后关闭文档。然后再读待转JPG,新建CAD文档,执行转换任务,但在第二次新建CAD文档后,执行转PLT时“es = pEngine->endPlot();”出现错误:

1wwirotrsxv.jpg

1wwirotrsxv.jpg


下面是程序代码:
CPlot::CPlot(CString strPath)//初始化
{
m_strDevice = _T("DesignJet 750C Plus C4708B.pc3");
m_strPath = strPath;
m_pPSV= (AcDbPlotSettingsValidator*)acdbHostApplicationServices()->plotSettingsValidator();
// 取得当前layout
AcDbLayoutManager *pLayoutManager = acdbHostApplicationServices()->layoutManager();
AcDbObjectId btrId = pLayoutManager->getActiveLayoutBTRId();
AcDbBlockTableRecord *pBTR;
Acad::ErrorStatus es=acdbOpenObject(pBTR,btrId,AcDb::kForRead);
m_layoutId = pBTR->getLayoutId();
AcDbLayout *pLayout=NULL;
acdbOpenObject(pLayout,m_layoutId,AcDb::kForRead);
#pragma warning (disable: 4800)
m_pPlotSettings = new AcDbPlotSettings(pLayout->modelType());
#pragma warning (default: 4800)
m_pPlotSettings->copyFrom(pLayout);
pLayout->close();
pBTR->close();
m_pPlotSettings->close();
}
//开始转换
void CPlot::StartPlt()
{
Acad::ErrorStatus es;
es = m_pPSV->setPlotType(m_pPlotSettings, AcDbPlotSettings::kExtents);
//设置缩放比例
es = m_pPSV->setUseStandardScale(m_pPlotSettings, Adesk::kFalse);
es = m_pPSV->setCustomPrintScale(m_pPlotSettings, 1, 1);
es = m_pPSV->setPlotCentered(m_pPlotSettings, true);
es = m_pPSV->setPlotCfgName(m_pPlotSettings,m_strDevice);
m_pPSV->refreshLists(m_pPlotSettings);
AcPlPlotEngine* pEngine = NULL;
    if(Acad::eOk == AcPlPlotFactory::createPublishEngine(pEngine))
{
es = pEngine->beginPlot(NULL);
  AcPlPlotPageInfo pageInfo;
  AcPlPlotInfo plotInfo;
     
  // 设置布局
  plotInfo.setLayout(m_layoutId);
  // 重置参数
  plotInfo.setOverrideSettings(m_pPlotSettings);
  AcPlPlotInfoValidator validator;
  validator.setMediaMatchingPolicy(AcPlPlotInfoValidator::kMatchEnabled);
  es = validator.validate(plotInfo);
  // 开始打印
  const TCHAR *szDocName = acDocManager->curDocument()->fileName();
  es = pEngine->beginDocument(plotInfo, szDocName, NULL, 1, true, m_strPath);
es = pEngine->beginPage(pageInfo, plotInfo, true);     
  es = pEngine->beginGenerateGraphics();
  es = pEngine->endGenerateGraphics();
  es = pEngine->endPage();
  es = pEngine->endDocument();
  es = pEngine->endPlot();//就是这一行报错
  pEngine->destroy();
  pEngine = NULL;
  delete pEngine;
}
else
{
  acedAlert(_T("打印DWF失败!"));
}
}
//下面是调用的方法
CPlot *plt=new CPlot(strPltFile);
plt->StartPlt();
  plt->DestroyPlot();
  delete plt;
  plt=NULL;
回复

使用道具 举报

1

主题

24

帖子

3

银币

初来乍到

Rank: 1

铜币
28
发表于 2013-12-18 14:55:00 | 显示全部楼层
做过dwg转jpg,用的是sendmessage,没用api,感觉太复杂
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-5 06:48 , Processed in 0.156085 second(s), 59 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表