请教关于调用其它函数的几点疑问
先举一个最简单的例子,假如我在一个lisp中写入了一个命令c(defun c:c()
(setq a(ssget))
(command "copy" a "" pause pause)
(princ)
)
之后我又在该lisp又写了一个命令v
(defun c:v(b x y)
.....
)
在v命令中,我想调用我自己写的c命令,并且用上参数b、x和y,我暂且以一个错误的写法来表达我的意图,我想实现
(command "c" b "" x y )的效果。
c命令本身是需要自己选取一次对象的,但是我想在v命令中,由我指定这个对象为b,并且指定两个pause点分别为x和y。
请问有办法能实现吗?
本帖最后由 819534890 于 2015-10-9 10:22 编辑
应该可以:
首先,c:c先去除前缀c:变为普通函数;
然后用vlax-add-cmd,把c函数 添加到 AutoCAD 内置命令集中;
应该就可以了,你试试吧,本人没试过。
似乎不行,这个只能解决命令调用,无法解决参数置换。 1.
(defun c:v(b x y)
.....
)
这种写法不叫错误
只是不常用而已
命令行中输入v回车
会提示你参数太少
必须输入类似(c:v 1 2 3)才能运行
2.
c中的command语句包含了pause
那么程序执行到pause的时候
它就只能接受键盘或鼠标的输入
而不能接受你预先设定的参数x、y
3.
v对c的调用也有问题
想使用command方式调用c
必须先将c添加到CAD的内置命令集
添加内置命令详见vlax-add-cmd函数
4.
建议你重新整理下思路
不要再纠缠于程序套程序的模式
对于新手这个略显复杂了
知道“程序流程图”么
把你想达成的目的和过程
先用流程图表示出来
尽量写详细点
发到论坛上请大家评判一下
流程没问题了再着手编程
masterlong 发表于 2015-10-9 10:54 static/image/common/back.gif
1.
(defun c:v(b x y)
.....
嗯,我好好整理下再回来请教!
页:
[1]