wandong 发表于 2014-5-10 19:00:35

自定义命令在AutoLSP中应用

自定义一个命令,比如tt,但运行时需要输入参数,如何在lis中调用,象CAD内置命令一样,比如(command "c:tt" pt1 “”),pt1为一个点。 不知如何实现。

lostbalance 发表于 2014-5-10 23:30:01

定义代码(defun tt (pt1 / )(xxxx))
调用代码(setq pt1 xxxx) (tt pt1)
是这个意思吗,这个好像是很基础的东西啊。。

wandong 发表于 2014-5-11 11:39:07

定义代码(defun c:tt(/ ) xxx),为自定义命令,而不是函数。

nzl1116 发表于 2014-5-11 12:41:50

wandong 发表于 2014-5-11 11:39 static/image/common/back.gif
定义代码(defun c:tt(/ ) xxx),为自定义命令,而不是函数。

你根本就不了解命令和函数的区别,C:tt就是函数名,而tt就是命令名。当然了,自定义命令和CAD内部命令也是有区别的。

lyqiezi 发表于 2014-5-11 12:47:44

(command "c:tt" (getpoint) “”)
是这个意思吗?

Andyhon 发表于 2014-5-11 12:53:01

整体趣向不明,一个猜想...

(defun C:tt ()
(setq pt1 (getpoint))
(tt pt1)
)

;;; 此处 pt1 它处取得
(defun tt (pt1) ...)

nzl1116 发表于 2014-5-11 12:55:17

lyqiezi 发表于 2014-5-11 12:47 static/image/common/back.gif
(command "c:tt" (getpoint) “”)
是这个意思吗?

command函数后面带命令名(命令名要加双引号),C:tt是命令名吗?

lyqiezi 发表于 2014-5-11 13:09:52

上面我搞错了,
但是好像可以直接把(C:TT)作为一个函数调用,前面看到有人说过,不过自己没试过

lyqiezi 发表于 2014-5-11 13:48:56

nzl1116 发表于 2014-5-11 12:41 static/image/common/back.gif
你根本就不了解命令和函数的区别,C:tt就是函数名,而tt就是命令名。当然了,自定义命令和CAD内部命令也是 ...

我明白你的意思了,defun后面接着的就是自定义的函数,
defun c:tt,则c:tt为函数
defun tt,则tt为函数
两个函数的区别就是C:tt是可以单独用tt命令运行的函数
tt则需要用其它函数调用并返回

wandong 发表于 2014-5-11 18:00:13

我的意思是要完成一个任务,需要两个以前自定义过的命令,当然可以将原来的代码变为函数,这样可以接受参数,但是如果能象cad内部命令一样通过command函数输入序列来完成,就不需要新建函数。好像自定义命令不能使用command函数,但如果写成(c:tt),则需要输入参数(参数在新命令中已经获得),这样会变得重复而没有必要。按帮助文件说,好像没有什么办法实现,不知各位高手意下如何。
页: [1] 2
查看完整版本: 自定义命令在AutoLSP中应用