找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1578|回复: 2

[ARX函数]:调用函数打开文件失败,郁闷

[复制链接]
发表于 2002-10-25 13:18:07 | 显示全部楼层 |阅读模式

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

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

×
我增加了一个ARX命令,其类型为ACRX_CMD_MODAL | ACRX_CMD_NOINTERNALLOCK,然后在此命令中调用acDocManager->appContextOpenDocument(DwgFilePath);
老是失败,通过IAcadDocuments自动化接口打开文件直接死机,通过接口IAcadDocument打开文件还是不行。期待指点迷津。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 13个

财富等级: 恭喜发财

发表于 2002-10-25 13:45:59 | 显示全部楼层

Re: [ARX函数]:调用函数打开文件失败,郁闷

最初由 EMeiMonkey 发布
[B]我增加了一个ARX命令,其类型为ACRX_CMD_MODAL | ACRX_CMD_NOINTERNALLOCK,然后在此命令中调用acDocManager->appContextOpenDocument(DwgFilePath);
老是失败,通过IAcadDocuments自动化接口打开文件直接死机,通?.. [/B]


下面是用ActiveX Automotion 接口,打开一个图形


  1. //MDI 模式下
  2. // 要保证用ACRX_CMD_SESSION bit注册命令
  3. //
  4. void openDwg()
  5. {
  6.         CWinApp* pWinApp = acedGetAcadWinApp();
  7.         if(!pWinApp)
  8.                 return;
  9.         CComPtr<IDispatch> pDisp = pWinApp->GetIDispatch(TRUE);
  10.         if(!pDisp)
  11.                 return;

  12.         CComPtr<IAcadApplication> pComApp;
  13.         HRESULT hr = pDisp->QueryInterface(IID_IAcadApplication,
  14. (void**)&pComApp);
  15.         if(FAILED(hr))
  16.                 return;

  17.         CComPtr<IAcadDocument> pDoc;
  18.         hr = pComApp->get_ActiveDocument(&pDoc);
  19.         if(FAILED(hr))
  20.                 return;
  21.        
  22.         BSTR fName;
  23.         hr = pDoc->get_Name(&fName);

  24.         _bstr_t dwg1("Drawing1.dwg");
  25.         _bstr_t dwg2(fName);
  26.         if(SUCCEEDED(hr) && dwg1 == dwg2)
  27.         {
  28.                 _variant_t vb(VARIANT_FALSE);
  29.                 _variant_t vnam(dwg1);
  30.                 hr = pDoc->Close(vb, vnam);
  31.                 if(FAILED(hr))
  32.                 {
  33.                         acutPrintf("\nFailed to close drawing1.dwg.");
  34.                         return;
  35.                 }
  36.         }

  37.         _bstr_t fileName("c:\\test.dwg");

  38.         CComPtr<IAcadDocuments> pDocs;
  39.         hr = pComApp->get_Documents(&pDocs);
  40.         if(FAILED(hr))
  41.                 return;

  42.         _variant_t b(VARIANT_FALSE);
  43.         CComPtr<IAcadDocument> pDoc1;
  44.         hr = pDocs->Open(fileName, b, &pDoc1);
  45.         if(FAILED(hr))
  46.                 acutPrintf("\nFailed to open the dwg file.");
  47. }

  48. 非SDI 模式, 用下面代码//
  49. //
  50. void openDwg()
  51. {
  52.     CWinApp* pWinApp = acedGetAcadWinApp();
  53.     if(!pWinApp)
  54.           return;
  55.     CComPtr<IDispatch> pDisp = pWinApp->GetIDispatch(TRUE);
  56.     if(!pDisp)
  57.           return;

  58.     CComPtr<IAcadApplication> pComApp;
  59.     HRESULT hr = pDisp->QueryInterface(IID_IAcadApplication, (void**)&pComApp);
  60.     if(FAILED(hr))
  61.           return;

  62.     CComPtr<IAcadDocument> pDoc;
  63.     hr = pComApp->get_ActiveDocument(&pDoc);
  64.     if(FAILED(hr))
  65.           return;

  66.     _bstr_t fileName("c:\\test.dwg");
  67.     hr = pDoc->Open(fileName, &pDoc);
  68.     if(FAILED(hr))
  69.           acutPrintf("\nFailed to open the dwg file.");
  70. }
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-10-27 19:03:53 | 显示全部楼层
其类型为ACRX_CMD_SESSION| ACRX_CMD_NOINTERNALLOCK。然后在此命令中调用acDocManager->appContextOpenDocument(DwgFilePath);
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 16:49 , Processed in 0.178897 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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