如何合并两个LISP命令?
现有两个LISP命令,暂定为C和CC,如何输入TT,默认运行C,按一次空格运行CC?ljfzx 发表于 2019-1-22 16:39
两个命令是不同的功能,一个是开一个是关,不是连续执行的关系
(defun c:tt ()
(if (= 4_tt 0)
(progn
(c:程序1)
(setq 4_tt 1)
)
(progn
(c:程序2)
(setq 4_tt 0)
)
)
(princ)
)循环两个命令的话可以这样
(defun hss()
(setq bhzg nil)
(if (and (not txt)(not bhx))
(princ(strcat"\n 1=10+,2=20+,3=3+,4=4+,4+=50,-=2,*=3,/=4,5~9对应相同数\n 左键+1右键1,0输入值,+数字编号,A文字引线,Q画↙空格改字高 "(rtos zigao)" ") ) )
(if (and (not txt)(= bhx 1))
(princ(strcat"\n 1=10+,2=20+,3=3+,4=4+,4+=50,-=2,*=3,/=4,5~9对应相同数\n 左键点选对象(空选=1),右键前缀编号,0输入值,空格设置字高 "(rtos zigao)" ") ) )
(if (and (not txt)(= bhx 2))
(princ(strcat "\n 0输入值,1=10+,2=20+,3=3+,4=4+,4+=50,-=2,*=3,/=4,5~9对应相同数,空格=4\n 左键 "ts"右键 2-"ts) ) )
(if (/= txt nil)
(princ "\n 0输入深度,1=10+,2=20+,3=3+,4=4+,4+=50,-=2,*=3,/=4,5~9对应相同数") )
(setq aj (grread)) (cond;(setq u (grread))回车后按任意键
;((= (car aj) 3) (if (/= txt nil)(QuXiao)()) );左键+1
((= (car aj) 25) (if(/= txt nil)(QuXiao)) (if(not bhx)(setq hs 1)) (if(= bhx 1)(qianzhuibh))
(if(= bhx 2)(progn(if(not ts)(setq ts"")(setq ts(strcat"-"ts)))(hs+)) ) ) ;右键1
((= (cadr aj) 48) (if (/= txt nil)(setq hs (getint"\n 请输入深度:")) (setq hs (getint"\n 请输入起始数:")) ) ) ;0输入起始数
((= (cadr aj) 32) (if (/= txt nil)(QuXiao)) (if (/= bhx 2)(progn (setq bhzg 1)(xgbzzg))) (if (= bhx 2)(setq hs 4)) ) ;空格设置字高
((= (cadr aj) 43) (setq bhx 1) ) ;+数字编号
((= (cadr aj) 97) (setq bhx "A") );a文字引线
((= (cadr aj) 65) (setq bhx "A") );A文字引线
((= (cadr aj) 81) (setq jt "Q") (c:ps) );q画箭头
((= (cadr aj) 113) (setq jt "Q") (c:ps) );Q画箭头
;;;;;;;;;;;;;;;;;;;
(defun hs+() ;右键+1
(if (not hs)
(progn (setq hs 1) (princ (strcat"\n左键 2" ts" 右键 3"ts) ))
(progn (if(= hs 2)(setq hs 3))(princ(strcat"\n左键 "(rtos hs)ts" 右键 "(rtos(1+ hs))ts)) ))
(if (getpoint)
(setq hs (if(= hs 1)2 hs))
(progn (setq hs (1+ hs)) (hs+))
) )
自己改一下吧 (defun c:(/ kJ)
(initget 7 "1 2 3");3后面两个空格
(setq kJ (getkword "\n输入选项[<1>,<2>,<3>]:<1>:"))
(cond
((= "2" kJ)(c:程序2快捷键))
((= "3" kJ)(c:程序3快捷键))
(t (c:程序1快捷键)))
(princ))
把码贴上来 (defun c:tt ( )
(c:c)
(pause)
(c:cc)
) kwok 发表于 2019-1-18 11:14
(defun c:tt ( )
(c:c)
(pause)
亲测不行,只能使用第一个命令,无法使用第二个命令 本帖最后由 kwok 于 2019-1-19 15:26 编辑
ljfzx 发表于 2019-1-19 11:49
亲测不行,只能使用第一个命令,无法使用第二个命令
(defun c:tt ()
(c:c)
(princ "\回车运行下一个:")
(while (/= (car (grread)) 2))
(c:cc)
)
kwok 发表于 2019-1-19 15:19
(defun c:tt ()
(c:c)
(princ "\回车运行下一个:")
使用了之后没有运行命令,提示点无效 479274135 发表于 2019-1-19 20:20
(defun c/ kJ)
(initget 7 "1 2 3");3后面两个空格
(setq kJ (getkword "\n输入选项[,,]::"))
你的程序我用起来是可以,但是需要再输入123或者空格,比较麻烦,可不可以默认执行命令1,按一次空格执行2,再按一次执行3? ljfzx 发表于 2019-1-21 15:10
你的程序我用起来是可以,但是需要再输入123或者空格,比较麻烦,可不可以默认执行命令1,按一次空格执行2 ...
为啥要按空格呢。直接弄成一个文件,变成一个命令不好?
页:
[1]
2