明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1981|回复: 1

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

[复制链接]
发表于 2013-11-29 10:38:15 | 显示全部楼层 |阅读模式
工作过程:读待转JPG,把JPG文件读到CAD中,转换成PLT文件输出,然后关闭文档。然后再读待转JPG,新建CAD文档,执行转换任务,但在第二次新建CAD文档后,执行转PLT时“es = pEngine->endPlot();”出现错误:
下面是程序代码:
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;

本帖子中包含更多资源

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

x
发表于 2013-12-18 14:55:05 | 显示全部楼层
做过dwg转jpg,用的是sendmessage,没用api,感觉太复杂
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-28 23:59 , Processed in 0.182112 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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