找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1040|回复: 8

[求助]:sendStringToExecute 在AutoCAD启动的时候不执行?

[复制链接]
发表于 2004-5-13 15:01:26 | 显示全部楼层 |阅读模式

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

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

×
sendStringToExecute 在AutoCAD启动的时候不执行?

sendStringToExecute 在ARX加载的时候调用
而这个arx在autocad启动的时候加载(通过注册表或者acad.RX)
执行功能: 发送 load "xxx.VLX"
执行结果:无效
有办法实现启动的时候加载xxx.VLX?




binbin发过

  1. void AEC_Road()
  2. {
  3. CString sCMD = "(load "AEC_ROAD" )" ;
  4. sCMD += "\n";

  5. AcApDocument* pAcTargetDocument = NULL;
  6. pAcTargetDocument = acDocManager->curDocument();

  7. CView * pView = acedGetAcadDwgView();
  8. if(pView != NULL)
  9. {
  10. pView->SetFocus();
  11. }

  12. acDocManager->activateDocument(pAcTargetDocument);
  13. acDocManager->sendStringToExecute(pAcTargetDocument,sCMD,false);
  14. acDocManager->sendStringToExecute(pAcTargetDocument,_T("draw_road "),false);
  15. }
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-5-14 08:30:09 | 显示全部楼层
有文档才可以sendStringToExecute
用ads_queueexpr()吧,,和文档无关
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-14 08:44:02 | 显示全部楼层
既然用acad.RX,為何不用acad.lsp??
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-5-14 08:58:53 | 显示全部楼层
acad.rx 其实不用,我想通过请求加载来加载arx
acad.lsp很容易被修改 而且将来卸载的时候要程序修改acad.lsp,可能会有点麻烦。我希望程序在安装后不影响用户的本来配置。

binbin  ads_queueexpr()是什么函数? 帮助里好像没有啊?谢谢
我是在接受消息 AcRx::kLoadDwgMsg 的时候执行发送字符串的
        case AcRx::kLoadDwgMsg:
                loadvlx();
我自己觉得这个也好像有问题  
但怎么才可以找到一个办法来加载lisp呢?
我就觉得奇怪arx api竟然不(最好只是我不知道)提供加载lisp的接口函数
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-14 10:27:35 | 显示全部楼层
AcRx::kLoadDwgMsg消息時執行一些函數是有問題,我也迷惑中.
acad.lsp放在你程序安裝路徑下,安裝時你給Autocad添加搜索路徑就可以
卸载你把搜索路徑去掉,把你的安裝的程序殺掉就完成了呀!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-14 10:59:40 | 显示全部楼层
这是因为cad启动时,从rx文件加载arx,再创建文档,最后加载acad.lsp,
如果在加载arx时执行了和文档有关的操作,如加载lsp,sendStringToExecute,都是不会成功的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-14 11:40:06 | 显示全部楼层
但是在On_kLoadDwgMsg消息中也不行麼??如果想在文檔打開時作些和文檔相關的事情怎麼處理???
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2004-5-14 11:47:42 | 显示全部楼层
最初由 fylinwater 发布
[B]acad.rx 其实不用,我想通过请求加载来加载arx
acad.lsp很容易被修改 而且将来卸载的时候要程序修改acad.lsp,可能会有点麻烦。我希望程序在安装后不影响用户的本来配置。

binbin  ads_queueexpr()是什么函数? ... [/B]


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

使用道具 举报

发表于 2004-5-14 13:28:21 | 显示全部楼层
对不起 - 没有匹配记录. 请用不同的条件再试.
kLoadDwgMsg and acedCommand()
The acedCommand() works in two basic contexts: when operating on the RQXLOAD and RQSUBR request codes. In ObjectARX, however, it does not work for the ObjectARX application message AcRx::kLoadDwgMsg, which is the ObjectARX equivalent of RQXLOAD. It works fine for the message AcRx::kInvkSubr, which is equivalent to RQSUBR.

It is important to many applications to execute a few AutoCAD commands at the beginning of every drawing edit session. This can be accomplished by queuing up AutoLISP expressions, including use of the (command) function, using ads_queueexpr(), for execution during the edit session initialization, after (s::startup) has been executed.

Note that the queued expressions are not executed during the call to ads_queueexpr(). They will occur after your application has returned from its kLoadDwgMsg message invocation of acrxEntryPoint().

When using ads_queueexpr(), the entered string must be fully expanded, with outer parentheses. Whatever was previously passed in as resbuf chains must be converted to ASCII to use this mechanism.

Multiple calls to ads_queueexpr() from the kLoadDwgMsg callback are perfectly acceptable. They get queued up in the order of the calls.

Do not use ads_queueexpr() in any other context. To do so will have unpredictable results, and may even be damaging, because the queue may not be looked at until active AutoLISP evaluations, MENU items, and/or SCRIPT executions are all quiescent. Use this function sparingly, as it will be removed as soon as the original design can be implemented.

=======================================================
  It's not declared in any ObjectARX headers, so you have to declare it
locally:

extern "C" int ads_queueexpr( char* lisp_expr );
void SomeFunction()
{
  char* pszLispExpression = GetLispExpression();
  //i.e. '(arxunload "myarx.arx")'
  ads_queueexpr( pszLispExpression );
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 17:51 , Processed in 0.471000 second(s), 47 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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