找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3521|回复: 23

[求助] ODCL 是否能用空格重复按钮的命令呢

[复制链接]

已领礼包: 127个

财富等级: 日进斗金

发表于 2013-11-30 11:53:09 | 显示全部楼层 |阅读模式

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

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

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

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-11-30 12:32:47 | 显示全部楼层
你要想让空格后执行命令,那么你点按钮后那个回调函数,执行的要设计成命令。
而且你说的是非模式对话框里面的按钮吧?

点评

不太懂 附上我的代码 你帮我改一个命令 我看看 比如 谷歌-图层 里的实验命令1 如何在执行完实验命令1后 点空格或者回车后在执行这个命令呢  详情 回复 发表于 2013-11-30 16:02
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2013-11-30 16:02:31 | 显示全部楼层
newer 发表于 2013-11-30 12:32
你要想让空格后执行命令,那么你点按钮后那个回调函数,执行的要设计成命令。
而且你说的是非模式对话框里 ...

不太懂

附上我的代码  你帮我改一个命令 我看看 比如

谷歌-图层 里的实验命令1   如何在执行完实验命令1后  点空格或者回车后在执行这个命令呢

XGGJToolsPanel.lsp

10.54 KB, 下载次数: 19, 下载积分: D豆 -1 , 活跃度 1

XGGJToolsPanel.odcl

10.9 KB, 下载次数: 13, 下载积分: D豆 -1 , 活跃度 1

点评

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-11-30 16:39:29 | 显示全部楼层
spp_wall 发表于 2013-11-30 16:02
不太懂

附上我的代码  你帮我改一个命令 我看看 比如

把你的那些 (c:xxxx)用 Vlax-Add-Cmd 定义成命令。

点评

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

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2013-11-30 17:22:12 | 显示全部楼层
newer 发表于 2013-11-30 16:39
把你的那些 (c:xxxx)用 Vlax-Add-Cmd 定义成命令。

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-11-30 17:56:22 | 显示全部楼层
和ODCL无关,你把你程序里面定义的 (c:xxx)这些函数,找几个,用vlax-add-cmd定义成命令,然后你再执行那个按钮,然后空格看看。

点评

比如 (defun c:1111 () (princ "\n圆:相切 相切 半径:") (COMMAND "CIRCLE" "2P") (princ) ) 这个命令 如何用vlax-add-cmd定义成命令呢  详情 回复 发表于 2013-11-30 19:46
并非指的是整个程序的命令  发表于 2013-11-30 18:45
他的意思是 , odcl按钮控件的命令能否点击一次过后再次重复执行只需要直接按空格键就可以了,我也一直想知道这个问题的答案  发表于 2013-11-30 18:44
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2013-11-30 19:46:11 | 显示全部楼层
newer 发表于 2013-11-30 17:56
和ODCL无关,你把你程序里面定义的 (c:xxx)这些函数,找几个,用vlax-add-cmd定义成命令,然后你再执行那个 ...

比如

(defun c:1111 ()
(princ "\n圆:相切 相切 半径:")
(COMMAND "CIRCLE" "2P")
(princ)
)


这个命令 如何用vlax-add-cmd定义成命令呢

点评

将命令添加到 AutoCAD 内置命令集中(vlax-add-cmd global-name func-sym [local-name cmd-flags])使用 vlax-add-cmd 可以将函数定义为 AutoCAD 命令,而无需在函数名中使用 c: 前缀。用它也可以定义透明 AutoLISP 命  详情 回复 发表于 2013-11-30 20:00
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-11-30 20:00:56 | 显示全部楼层
spp_wall 发表于 2013-11-30 19:46
比如

(defun c:1111 ()

将命令添加到 AutoCAD 内置命令集中
(vlax-add-cmd global-name func-sym [local-name cmd-flags])
使用 vlax-add-cmd 可以将函数定义为 AutoCAD 命令,而无需在函数名中使用 c: 前缀。用它也可以定义透明 AutoLISP 命令,而对于 c: 函数,这是不可能的。
警告! 不能使用 command 函数透明调用那些由 vlax-add-cmd 函数定义的命令。这样做会造成 AutoCAD 意外关闭。
vlax-add-cmd 函数使某个 明经通道 Visual LISP 函数在当前 AutoCAD 任务中作为 ObjectARX 类型的命令,在 AutoCAD 命令行提示中使用。vlax-add-cmd 函数提供了对 ObjectARX acedRegCmds 宏的访问,从而提供了一个到 ObjectARX 系统 AcEdCommandStack 对象的指针。
vlax-add-cmd 函数自动将命令指定到命令组。从文档名称空间发出命令时,vlax-add-cmd 将命令添加到组 doc-ID。doc-ID 是标识文档的十六进制值。从独立名称空间 VLX 发出命令时,vlax-add-cmd 将命令添加到组 VLC-Ddoc-ID:VLX-name。这里 VLX-name 是发出 vlax-add-cmd.的应用程序名。
推荐从独立名称空间 VLX 使用 vlax-add-cmd 函数。然后使用 APPLOAD 命令明确加载 VLX,这样比将 LISP 文件放到启动组好。
注意 不能使用 vlax-add-cmd 显露创建反应器对象的函数,也不能用它来显露反应器的回调函数。
参数
global-name
字符串。
func-sym
符号,指定不带参数的 明经通道 Visual LISP 函数。
local-name
字符串(缺省值为 global-name)。
cmd-flags
整数型(缺省值为 ACRX_CMD_MODAL + ACRX_CMD_REDRAW)。
主要标志有:
ACRX_CMD_MODAL (0) 在使用其他命令时不能调用该命令。
ACRX_CMD_TRANSPARENT (1) 在使用其他命令时可以调用该命令。
二级标志有:
ACRX_CMD_USEPICKSET (2) 检索选择优先集时,在 AutoCAD 中清除设置。命令能够获取优先集,但不能检索或设置夹点。
ACRX_CMD_REDRAW (4) 检索选择优先集或夹点集时,不将它们从 AutoCAD 中清除。命令可获取优先集和夹点集。
如果同时设置了 ACRX_CMD_USEPICKSET 和 ACRX_CMD_REDRAW,则效果和仅设置 ACRX_CMD_REDRAW 一样。关于标志的详细信息,请参见 《ObjectARX 参考手册》中的“Command Stack”。
返回值
如果成功则返回 global-name 参数。如果 acedRegCmds->addCommand(...) 返回错误条件,则函数返回 nil。

示例
下例中的 hello-autocad 函数没有 c: 前缀,但 vlax-add-cmd 将其作为 ObjectARX 类型的命令显示在 AutoCAD 命令行提示:
_$ (defun hello-autocad () (princ "hello Visual LISP"))HELLO-AUTOCAD_$ (vlax-add-cmd "hello-autocad" 'hello-autocad)"hello-autocad"
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-12-3 18:05:55 | 显示全部楼层
Odcl有向命令行发送命令的函数,你只需在控件事件函数里执行向命令行发送你想要执行的命令,你再次按空格就可以达到你想要的效果了。

点评

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

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2013-12-3 20:29:26 | 显示全部楼层
Gdlprfcu 发表于 2013-12-3 18:05
Odcl有向命令行发送命令的函数,你只需在控件事件函数里执行向命令行发送你想要执行的命令,你再次按空格就 ...

不知如何操作呢!!!!

点评

假如下面的函数是你按钮的点击事件函数,当你点击后就会向命令行发送画直线命令,完成后再次按空格就可以重复画直线啦。。。 (defun c:Button_OnClicked() (dcl_SendString "line ") )  详情 回复 发表于 2013-12-3 20:58
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-12-3 20:58:42 | 显示全部楼层
spp_wall 发表于 2013-12-3 20:29
不知如何操作呢!!!!

假如下面的函数是你按钮的点击事件函数,当你点击后就会向命令行发送画直线命令,完成后再次按空格就可以重复画直线啦。。。
(defun c:Button_OnClicked()  (dcl_SendString "line ")

)

点评

好想我的程序里的命令 用你说的办法不行 能看下我的代码 在2楼 随便修改一个命令 我参考下么 因为我是用别人的模板 很多命令不太懂  详情 回复 发表于 2013-12-6 09:20
这个我试试看 谢谢 我刚学的 都是在别人的ODCL上面改  详情 回复 发表于 2013-12-4 11:34
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2013-12-4 11:34:50 | 显示全部楼层
Gdlprfcu 发表于 2013-12-3 20:58
假如下面的函数是你按钮的点击事件函数,当你点击后就会向命令行发送画直线命令,完成后再次按空格就可以 ...

这个我试试看 谢谢

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

使用道具 举报

发表于 2013-12-5 21:27:27 | 显示全部楼层
多谢Gdlprfcu
原来是这样
  1. (defun c:test_ChForm_TCListView_OnClicked (Row Column /)
  2.   (setq str (dcl_ListView_GetItemText test_ChForm_TCListView Row Column))
  3.   (cond
  4.     ((= str "测试") (c:aa_aa) (dcl_SendString "aa_aa"))
  5.   )
  6. )

  7. (defun c:aa_aa (/ p1 p2)
  8.   (setq p1 (getpoint "\n选取点位置: "))
  9.   (setq p2 (getpoint p1))
  10.   (command "line" p1 p2 "")
  11.   (princ)
  12. )

点评

好想我的程序里的命令 用你说的办法不行 能看下我的代码 在2楼 随便修改一个命令 我参考下么 因为我是用别人的模板 很多命令不太懂  详情 回复 发表于 2013-12-6 09:36
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2013-12-6 09:20:24 | 显示全部楼层
Gdlprfcu 发表于 2013-12-3 20:58
假如下面的函数是你按钮的点击事件函数,当你点击后就会向命令行发送画直线命令,完成后再次按空格就可以 ...

  好想我的程序里的命令 用你说的办法不行

能看下我的代码 在2楼  随便修改一个命令 我参考下么

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

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

 楼主| 发表于 2013-12-6 09:36:02 | 显示全部楼层
QiaoCheng 发表于 2013-12-5 21:27
多谢Gdlprfcu
原来是这样

  好想我的程序里的命令 用你说的办法不行
能看下我的代码 在2楼  随便修改一个命令 我参考下么
因为我是用别人的模板 很多命令不太懂

点评

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 20:38 , Processed in 0.220886 second(s), 65 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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