LISP如何循环

来源:百度知道 编辑:UC知道 时间:2024/05/09 11:03:44
急死我了
救救我!
这个程序有什么问题?每输入一次文本就变一次不是我需要的。

(defun C:CS(/ ss ent zl p1 d p2)

;;获取文本
(setq ss (ssget))
(setq ENT (entget (ssname SS 0))
STR (cdr (assoc 1 ENT))
)
;;连接后面的文本
(if (setq ZL (getdist "\n点取总长度"))
(progn
(setq STR (strcat STR " [ZL]" (RTOS ZL 2 0)))
)
)

(setq JL 0)
(setq p1 (getdist "\n点取第一段距离"))
(setq JL (+ JL p1))

(setq d "T")
(while d
(setq p2 (getdist "\n点取下一段距离"))
(if (= p2 "")(setq d nil))

(setq STR (strcat STR " [JL]" (RTOS JL 2 0)))
(setq ENT (entget (ssname SS 0)))
(setq ENT (subst (cons 1 STR) (assoc 1 ENT) ENT))
(entmod ENT)
(setq JL (+ JL p2))
)

)
本人已经找到答案了

不是很理解你说的 else不可以接一串语句是什么原因
我不是搞 autocad 下的lisp开发的 但我也用lisp的一个变种语言搞开发
用(progn) 就可以连接多个操作啊
怎么在你的环境下就不行吗?
还有你的环境没有 (loop……)语句吗?