找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1589|回复: 12

[求助] 怎么用command调取插件命令

[复制链接]

已领礼包: 3256个

财富等级: 富可敌国

发表于 2013-5-22 21:12:00 | 显示全部楼层 |阅读模式

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

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

×
请教一个问题,怎么把cad外部插件命令注册为cad命令,这样能用command调用外部命令
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2013-5-22 21:31:41 | 显示全部楼层
vlax-add-cmd
  


将命令添加到 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"

评分

参与人数 1D豆 +5 收起 理由
牢固 + 5 热心帮忙奖!

查看全部评分

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

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

发表于 2013-5-23 23:31:00 | 显示全部楼层
不知道楼主是不是想要这种:比如aa是您想定义的新命令,bb是插件的命令。
  1. (defun c:aa() (c:bb))

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

使用道具 举报

已领礼包: 3256个

财富等级: 富可敌国

 楼主| 发表于 2013-5-25 13:51:06 | 显示全部楼层

首先谢谢您的热心回复,我说的是外部命令,也就是别人写的插件命令,不是您说的子函数定义为cad命令,您的这个vlax-add-cmd函数我知道哦,我要做的是在lisp中用command能调取该命令,而默认情况下,只有cad内部命令可以用command调取,您可能会说,用vla-sendcommand,但是这个还是不能满足我的要求
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-5-25 14:34:26 来自手机 | 显示全部楼层
pengfei2010 发表于 2013-5-25 13:51
首先谢谢您的热心回复,我说的是外部命令,也就是别人写的插件命令,不是您说的子函数定义为cad命令,您 ...

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

使用道具 举报

已领礼包: 3256个

财富等级: 富可敌国

 楼主| 发表于 2013-5-27 19:21:02 | 显示全部楼层

呵呵,可能是我的表达不清楚   我的想法是这样 (command (c:xxx) ss  ""  "")其中的ss是我用lisp写的选择集,只有cad内部命令才能接受ss,对于外部函数,cad会返回  无法重复进入lisp    而我测试了,天正的命令可以用command调用,并接受程序的选择集ss
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-5-27 20:05:10 | 显示全部楼层
pengfei2010 发表于 2013-5-27 19:21
呵呵,可能是我的表达不清楚   我的想法是这样 (command (c:xxx) ss  ""  "")其中的ss是我用lisp写的 ...

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

使用道具 举报

已领礼包: 3256个

财富等级: 富可敌国

 楼主| 发表于 2013-5-27 20:07:52 | 显示全部楼层
牢固 发表于 2013-5-27 20:05
别想了!不行!

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-5-27 21:13:28 | 显示全部楼层
pengfei2010 发表于 2013-5-27 20:07
用vb.net好像可以吧外部命令注册为cad命令

晕了,2楼已经告诉你了啊


vlax-add-cmd   注册为 透明命令,ACRX_CMD_TRANSPARENT

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

使用道具 举报

已领礼包: 3256个

财富等级: 富可敌国

 楼主| 发表于 2013-5-27 21:38:59 | 显示全部楼层
Lispboy 发表于 2013-5-27 21:13
晕了,2楼已经告诉你了啊


ACRX_CMD_TRANSPARENT
这个函数配合vla-sendcommand  能重复进入lisp?  ACRX_CMD_TRANSPARENT这个函数怎么用哇,求您指点

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

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-5-27 22:07:02 | 显示全部楼层
pengfei2010 发表于 2013-5-27 19:21
呵呵,可能是我的表达不清楚   我的想法是这样 (command (c:xxx) ss  ""  "")其中的ss是我用lisp写的 ...

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-5-27 22:24:21 | 显示全部楼层
pengfei2010 发表于 2013-5-27 21:38
ACRX_CMD_TRANSPARENT
这个函数配合vla-sendcommand  能重复进入lisp?  ACRX_CMD_TRANSPARENT这个函数 ...

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

使用道具 举报

已领礼包: 3256个

财富等级: 富可敌国

 楼主| 发表于 2013-5-27 23:02:20 | 显示全部楼层
Lispboy 发表于 2013-5-27 22:24
是的,看下这个帖子:http://www.xdcad.net/forum/thread-667731-1-1.html

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 14:35 , Processed in 0.475977 second(s), 52 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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