找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1654|回复: 20

[求助] 问个过于打印的问题

[复制链接]
发表于 2017-7-2 10:19:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
本帖最后由 why1025 于 2017-7-2 10:21 编辑

我自己修改的帮助文档的打印的例子,编译通过,但是加载执行cad崩溃



static void PlotAPI_plotPreview(void)
        {
                Acad::ErrorStatus es;

                AcAxDocLock lock;

                AcDbPlotSettingsValidator* pPSV=NULL;
                //AcDbPlotSettings *pPlotSettings;
                //AcDbPlotSettings* pPlotSetting = (AcDbPlotSettings*)pLayout;
                BOOL m_bFit=FALSE;
                double m_Scale=0;
                BOOL m_Landscape=FALSE;
                AcDbObjectId layoutId;
                //CComPtr<IAsdkPlotNotifySink> pPlotSink=NULL;
                /*, m_Scale(0)
                , m_Landscape(FALSE)
                , m_CurrentDevice(_T(""))
                , pPSV(NULL)
                , m_bFit(FALSE)
                , m_Background(FALSE)
                , m_bPlotToFile(FALSE)
                , m_csFilename(_T(""))
                ,dwAppCF(0)
                ,dwAppObj(0)
                ,pPlotSink(NULL)*/

                /*CComboBox m_Devices;
                CComboBox m_Media;
                double m_Scale;
                AcDbObjectId layoutId;
                BOOL m_Landscape;
                CString m_CurrentDevice;
                CString m_CurrentMedia;
                AcDbPlotSettingsValidator* pPSV;
                AcDbPlotSettings *pPlotSettings;
                void CalcExtents(void);
                BOOL m_bFit;
                BOOL m_Background;
                BOOL m_bPlotToFile;
                CString m_csFilename;
                DWORD dwAppCF;*/
                //DWORD dwAppObj;

                AcApLayoutManager *pLayMan = NULL;
                pLayMan=(AcApLayoutManager*)acdbHostApplicationServices()->layoutManager();
                //get the active layout
                AcDbLayout *pLayout = pLayMan->findLayoutNamed(pLayMan->findActiveLayout(TRUE),TRUE);
                AcDbPlotSettings* pPlotSettings = (AcDbPlotSettings*)pLayout;


                es=pPSV->setPlotType(pPlotSettings,AcDbPlotSettings::kExtents);
                // Set the Scale...
                if (m_bFit)
                {
                        es = pPSV->setUseStandardScale(pPlotSettings,Adesk::kTrue);
                        es = pPSV->setStdScaleType(pPlotSettings,AcDbPlotSettings::kScaleToFit);
                }
                else // Choose to use this custom scale...
                {
                        es=pPSV->setUseStandardScale(pPlotSettings,Adesk::kFalse);
                        es=pPSV->setCustomPrintScale(pPlotSettings,m_Scale,1);
                }
                es=pPSV->setPlotCentered(pPlotSettings,true);

                acedGetAcadFrame()->ShowWindow(SW_SHOW);       
                acedGetAcadFrame()->SetFocus();
                //下面这句注释掉了,编译不过
                /*ShowWindow(SW_HIDE);
                if(pPlotSink)
                        pPlotSink->put_Visible(FALSE);*/

                AcPlPlotEngine* pEngine = NULL;
                if(Acad::eOk==AcPlPlotFactory::createPreviewEngine(pEngine))
                {
                        pEngine->beginPlot(NULL);

                        AcPlPlotPageInfo pageInfo;
                        AcPlPlotInfo plotInfo;

                        plotInfo.setLayout(layoutId);

                        plotInfo.setOverrideSettings(pPlotSettings);

                        AcPlPlotInfoValidator validator;
                        validator.setMediaMatchingPolicy(AcPlPlotInfoValidator::kMatchEnabled);
                        es = validator.validate(plotInfo);

                        const TCHAR *szDocName=acDocManager->curDocument()->fileName();

                        es = pEngine->beginDocument(plotInfo, szDocName);
                        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;
                }
                else
                        AfxMessageBox(_T("Plot Engine is Busy..."));
                //下面这句注释掉了,编译不过
                /*ShowWindow(SW_SHOW);
                if(pPlotSink)
                pPlotSink->put_Visible(TRUE);*/
               
        }
        static void PlotAPI_bPlot(void)
        {
                Acad::ErrorStatus es;

                AcAxDocLock lock;
                AcApLayoutManager *pLayMan = NULL;
                pLayMan=(AcApLayoutManager*)acdbHostApplicationServices()->layoutManager();
                //get the active layout
                AcDbLayout *pLayout = pLayMan->findLayoutNamed(pLayMan->findActiveLayout(TRUE),TRUE);
                AcDbPlotSettings* pPlotSettings = (AcDbPlotSettings*)pLayout;
               
                AcDbPlotSettingsValidator* pPSV=NULL;
                BOOL m_bFit=FALSE;
                double m_Scale=0;
                BOOL m_Landscape=FALSE;
                AcDbObjectId layoutId;


                es=pPSV->setPlotType(pPlotSettings,AcDbPlotSettings::kExtents);
                // Set the Scale...
                if (m_bFit)
                {
                        es = pPSV->setUseStandardScale(pPlotSettings,Adesk::kTrue);
                        es = pPSV->setStdScaleType(pPlotSettings,AcDbPlotSettings::kScaleToFit);
                }
                else // Choose to use this custom scale...
                {
                        es=pPSV->setUseStandardScale(pPlotSettings,Adesk::kFalse);
                        es=pPSV->setCustomPrintScale(pPlotSettings,m_Scale,1);
                }
                // Specify that we want our plot centered by AutoCAD...
                es=pPSV->setPlotCentered(pPlotSettings,true);

                // Create a publish engine, and send the plot through...
                AcPlPlotEngine* pEngine = NULL;
                if(Acad::eOk==AcPlPlotFactory::createPublishEngine(pEngine))
                {
                        // Here is the progress dialog for the current plot process...
                        AcPlPlotProgressDialog *pPlotProgDlg = acplCreatePlotProgressDialog(acedGetAcadFrame()->m_hWnd,false,1);

                        pPlotProgDlg->setPlotMsgString(AcPlPlotProgressDialog::kDialogTitle,_T("Plot API Progress"));
                        pPlotProgDlg->setPlotMsgString(AcPlPlotProgressDialog::kCancelJobBtnMsg,_T("Cancel Job"));
                        pPlotProgDlg->setPlotMsgString(AcPlPlotProgressDialog::kCancelSheetBtnMsg,_T("Cancel Sheet"));
                        pPlotProgDlg->setPlotMsgString(AcPlPlotProgressDialog::kSheetSetProgressCaption,_T("Job Progress"));
                        pPlotProgDlg->setPlotMsgString(AcPlPlotProgressDialog::kSheetProgressCaption,_T("Sheet Progress"));

                        pPlotProgDlg->setPlotProgressRange(0,100);
                        pPlotProgDlg->onBeginPlot();
                        pPlotProgDlg->setIsVisible(true);

                        es = pEngine->beginPlot(pPlotProgDlg);

                        AcPlPlotPageInfo pageInfo;
                        AcPlPlotInfo plotInfo; // Used to describe how the plot is to be made

                        // First, set the layout to the specified layout (which is the current layout in this sample)
                        plotInfo.setLayout(layoutId);// This is required.

                        // Now, override the layout settings with the plot settings we have been populating
                        plotInfo.setOverrideSettings(pPlotSettings);

                        // We need to validate these settings.
                        AcPlPlotInfoValidator validator;
                        validator.setMediaMatchingPolicy(AcPlPlotInfoValidator::kMatchEnabled);
                        es = validator.validate(plotInfo);

                        // Begin document.  The version we call is dependent on the plot-to-file status.
                        const TCHAR *szDocName=acDocManager->curDocument()->fileName();
                        /*if(m_bPlotToFile)
                        es = pEngine->beginDocument(plotInfo, szDocName, NULL, 1, true, m_csFilename);
                        else*/
                                es = pEngine->beginDocument(plotInfo, szDocName);

                        // Follow through sending commands to the engine, and notifications to the progress dialog.
                        pPlotProgDlg->onBeginSheet();
                        pPlotProgDlg->setSheetProgressRange(0, 100);
                        pPlotProgDlg->setSheetProgressPos(0);

                        es = pEngine->beginPage(pageInfo, plotInfo, true);           

                        es = pEngine->beginGenerateGraphics();
                        es = pEngine->endGenerateGraphics();

                        es = pEngine->endPage();

                        pPlotProgDlg->setSheetProgressPos(100);
                        pPlotProgDlg->onEndSheet();
                        pPlotProgDlg->setPlotProgressPos(100);
                        es = pEngine->endDocument();
                        es = pEngine->endPlot();

                        // Destroy the engine
                        pEngine->destroy();
                        pEngine = NULL;
                        // and the progress dialog.
                        pPlotProgDlg->destroy();
                }
                else
                        // Ensure the engine is not already busy...
                        AfxMessageBox(_T("Plot Engine is Busy..."));
               
        }
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-7-2 10:27:14 | 显示全部楼层
调试下,或者加些打印语句, 看看执行到哪行代码,出现崩溃。另外,说明下ARX什么版本,CAD什么版本。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-2 11:00:42 | 显示全部楼层
本帖最后由 why1025 于 2017-7-2 11:02 编辑

f附加进程调试,cad2014,像死机了一样,这调试怎么这么恶心
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-7-2 12:29:01 | 显示全部楼层

那你就在不同的地方加上打印语句,看看执行到哪里了吧。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-2 21:38:01 | 显示全部楼层
vs2002的帮助文档的例子,我编译了一下,编译成功,但是加载就出问题
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-7-2 21:45:22 | 显示全部楼层

那你看看2014帮助文档是否也有这个例子,编译2014文档的,也可能函数用法变了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-2 22:13:03 | 显示全部楼层
我后来就用vs2002的编译器直接编译2002的例子,没升级成2014,搞不懂为什么arx2006自己的例子编译完还出错,想把代码传上来不知怎么传
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-2 22:15:12 | 显示全部楼层
还有很多zhez这种这种情况,2005以上版本编译完加载都没问题,改成2002版本就不知道出什么问题
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2017-7-2 22:26:44 | 显示全部楼层

不太长的代码,直接粘贴到论坛,选中代码后,点 代码 按钮,选C++

大的工程,可以压缩到RAR,传上来,超过几个M,可以多卷压缩。

TIM截图20170702222555.png
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-2 22:28:07 | 显示全部楼层
http://gjj123321.ys168.com/,我放到这里了,看能不能下载
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-2 22:34:28 | 显示全部楼层
本帖最后由 why1025 于 2017-7-3 12:09 编辑

  1. AcApLayoutManager *pLayMan = NULL;
  2.                 pLayMan=(AcApLayoutManager*)acdbHostApplicationServices()->layoutManager();
  3.                 //get the active layout
  4.                 AcDbLayout *pLayout = pLayMan->findLayoutNamed(pLayMan->findActiveLayout(TRUE),TRUE);
  5.                 AcDbPlotSettings* pPlotSetting = (AcDbPlotSettings*)pLayout;
  6.                 char* mediaName;
  7.                 pPlotSetting->getCanonicalMediaName(mediaName);
  8.                 acutPrintf(_T("\nMedia Name:%s"), mediaName);
  9.                
  10.                 pPlotSetting->close();
  11.                 pLayout->close();



这段代码在2005以上都没问题,,改成2002编译成功,加载崩溃,大师帮忙看下啥问题
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6565个

财富等级: 富甲天下

发表于 2017-7-3 00:11:38 | 显示全部楼层
谢谢提问,又有机会学习学习了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3904个

财富等级: 富可敌国

发表于 2017-7-3 07:56:25 | 显示全部楼层
看看执行到哪行代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5060个

财富等级: 富甲天下

发表于 2017-7-3 08:05:07 来自手机 | 显示全部楼层
不会调试的coder是不及格的程序员
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-3 11:11:01 | 显示全部楼层
&nbsp;pPlotSetting->getCanonicalMediaName(mediaName);这句就完蛋了,各位大神,看看你们的vs2002编译这段代码有问题没,会不会是我的编译器安装的出问题了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-14 21:52 , Processed in 0.302348 second(s), 58 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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