找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2067|回复: 14

[求助] 【已解决】arx中,获取正在执行的命令,终止当前正在执行命令,和正在排队等待执行..

[复制链接]

已领礼包: 3个

财富等级: 恭喜发财

发表于 2018-11-19 09:43:30 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 newer 于 2018-11-19 17:51 编辑

arx中,如何判断当前正在执行的命令,和正在排队等待执行的命令?终止当前运行的命令?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-11-19 10:55:15 | 显示全部楼层
反应器 AcEdRactor, 监视 commandWillStart , 命令即将执行前会通过这个回调告诉你
正在执行的命令,通过系统变量 cmdnames得到
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3个

财富等级: 恭喜发财

 楼主| 发表于 2018-11-19 11:25:43 | 显示全部楼层
newer 发表于 2018-11-19 10:55
反应器 AcEdRactor, 监视 commandWillStart , 命令即将执行前会通过这个回调告诉你
正在执行的命令,通过 ...

这个是可以的,但是不能中止命令,如果是sendStringToExecute发送的异步命令,没执行的时候,也检测不到,不知道有没有命令队列之类的东西?
我想实现的功能:例如cad正在执行line命令划线,我点击了个自己的按钮开始做其他操作,此时需要先中止line命令,否则的话会出现干扰,我也尝试用,acedGetAcadTextCmdLine()->PostMessage(WM_CHAR,VK_ESCAPE,0);发送取消命令,结果把我自己的命令给干掉了,上一个命令确实正常的

点评

终止命令,在 commandWillStart里面用veto() 搜索下论坛  详情 回复 发表于 2018-11-19 11:39
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-11-19 11:39:15 | 显示全部楼层
本帖最后由 newer 于 2018-11-19 11:41 编辑
tong76890 发表于 2018-11-19 11:25
这个是可以的,但是不能中止命令,如果是sendStringToExecute发送的异步命令,没执行的时候,也检测不到,不知 ...
不管你用什么执行命令,命令即将执行前,都必激发commandWillStart或者 lispWillStart()没有命令队列一说,你不执行,CAD怎么知道你想干什么

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

使用道具 举报

已领礼包: 4365个

财富等级: 富可敌国

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

使用道具 举报

已领礼包: 3个

财富等级: 恭喜发财

 楼主| 发表于 2018-11-19 16:06:26 | 显示全部楼层
newer 发表于 2018-11-19 11:39
不管你用什么执行命令,命令即将执行前,都必激发commandWillStart或者 lispWillStart()没有命令队列一说, ...

我的目的是为了取消当前正在运行的cad命令后,执行我的cad命令,commandWillStart是通知截获,commandWillStart截获到命令的时候,我还不知道是否需要取消该命令,无法处理.如果是为了阻止某个命令的运行,这个veto()是可以的.
查了下:
1.sendStringToExecute发送的字符串命令,可以用inputPending函数查看缓存的字节数
2.如果在执行命令时想要取消上一个正在执行的命令,先发送esc消息也是可以的,
3.但是像我那种,直接在按钮里面执行功能函数,而不是通过cad命令的方式执行功能函数,发送esc是不行的,esc会先终止我的功能函数,
4.所以我把按钮实现的功能放在一个cad命令中去执行,而我的按钮就是判断,当前是否有正在运行的命令,如果有,那么先取消该命令,然后运行我自己的cad命令(我都绕晕了)
5.实现方法:
       //判断是否有命令在运行
        if (curDoc()->isQuiescent())
        {
                //当前cad没有正在运行其他命令
                acDocManager->sendStringToExecute(curDoc(),_T("open "));
        }
        else{
                //有命令在运行中,发送esc键取消该命令,并执行open命令
                 acDocManager->sendStringToExecute(curDoc(),_T("\003open "));
        }

点评

取消正在执行的命令,你发送两个 0X1E 就行了,相当按下两次ESC  详情 回复 发表于 2018-11-19 16:47
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-11-19 16:47:40 | 显示全部楼层
tong76890 发表于 2018-11-19 16:06
我的目的是为了取消当前正在运行的cad命令后,执行我的cad命令,commandWillStart是通知截获,commandWillSt ...

取消正在执行的命令,你发送两个 0X1E 就行了,相当按下两次ESC
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3个

财富等级: 恭喜发财

 楼主| 发表于 2018-11-19 17:47:07 | 显示全部楼层
newer 发表于 2018-11-19 16:47
取消正在执行的命令,你发送两个 0X1E 就行了,相当按下两次ESC

用哪个函数发送? mfc  消息吗?

点评

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-11-19 17:50:47 | 显示全部楼层
tong76890 发表于 2018-11-19 17:47
用哪个函数发送? mfc  消息吗?

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

使用道具 举报

已领礼包: 3个

财富等级: 恭喜发财

 楼主| 发表于 2018-11-21 09:06:04 | 显示全部楼层
newer 发表于 2018-11-19 16:47
取消正在执行的命令,你发送两个 0X1E 就行了,相当按下两次ESC

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

使用道具 举报

发表于 2018-11-21 11:32:09 | 显示全部楼层
我原来用的
acedPostCommand(_T("CANCELCMD"));

要在cpp文件加声明
extern Adesk::Boolean acedPostCommand(const ACHAR* );

点评

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

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-11-21 11:37:58 | 显示全部楼层
edata 发表于 2018-11-21 11:32
我原来用的
acedPostCommand(_T("CANCELCMD"));

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

使用道具 举报

发表于 2018-11-21 11:45:35 来自手机 | 显示全部楼层
marting 发表于 2018-11-21 11:37
那你现在用的是什么呢?

还是用的这个postcommand
实际上楼主用的好像我都用过,没用过的也用过,忘记了最后怎么定的用postcommand
键盘也发过,sendstring..也用过,还有那个ads_q.....什么的也用过。
来自: 微社区
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3个

财富等级: 恭喜发财

 楼主| 发表于 2018-11-30 09:05:05 | 显示全部楼层
edata 发表于 2018-11-21 11:45
还是用的这个postcommand
实际上楼主用的好像我都用过,没用过的也用过,忘记了最后怎么定的用postcomma ...

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

使用道具 举报

发表于 2018-11-30 12:51:52 | 显示全部楼层
"CANCELCMD"就是cad的取消。。有点类似于pause,是cad支持的,不是自定义。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 00:46 , Processed in 0.462386 second(s), 62 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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