菜鸟写的代码,求解答为什么总是只能执行一个子程序,求前辈指点解答
程序目的为了修改文字的高度和倾斜的,执行后总是只能执行第一个子程序,本人为业余自学lisp,水平很菜,如有前辈赐教,不甚感激!(defun c:9test4()
(prompt"\n《框选欲修改的文字》")
(setq old_hh (getvar "textsize"))
(setq str_hh (strcat "\n输入新文字高度<" (rtos old_hh 2) ">: "))
(setq hh (getdist str_hh))
(if (null hh)
(setq hh old_hh)
)
(setq ang (getangle "\n输入倾斜角 <30>: "))
(if (null ang)
(setq ang (/ pi 6)))
(setqss (ssget))
(setqi 0 )
(setqnn (sslength ss))
(repeatnn
(setq ssn (ssname ss i))
(setq ssdata (entget ssn))
(setq sstyp (cdr (assoc 0 ssdata)))
(if(= sstyp "TEXT")
(text_h)
(text_a)
)
(setqi (1+ i))
)
(prin1)
)
(defun text_h()
(setq old_hh (assoc 40 ssdata))
(setq new_hh (cons 40 hh))
(setq ssdata (subst new_hh old_hh ssdata))
)
(defun text_a()
(setq old_ang (assoc 51 ssdata))
(setq new_ang (cons 51 ang))
(setq ssdata (subst new_ang old_ang ssdata))
(entmod ssdata)
)
(prompt "\n << 9TEST4>>连续修改多个文字的高度和倾斜度")
(prin1) (if(= sstyp "TEXT")
(text_h)
(text_a))这段代码用错了,看看if函数的用法
(if (条件表达式) (条件为真时执行的表达式) (条件为假时的表达式))
所以在这里(text_h)是条件为真时的执行的,(text_a)是条件为假时执行的。
你是想在条件为真时按顺序执行(text_h)和(text_a)这两个表达式,所以应该用progn函数对这两个表达式求值。正确的写法如下:(if(= sstyp "TEXT")
(progn (text_h)
(text_a))) vormittag 发表于 2013-6-30 13:56 static/image/common/back.gif
这段代码用错了,看看if函数的用法
(if (条件表达式) (条件为真时执行的表达式) (条件为假时的表达式))
所 ...
谢谢,懂了 vormittag 发表于 2013-6-30 13:56 static/image/common/back.gif
这段代码用错了,看看if函数的用法
(if (条件表达式) (条件为真时执行的表达式) (条件为假时的表达式))
所 ...
感谢了,学习了if执行子程序的的方法,你真是好人啊,这么详细的回答
页:
[1]