嗨,Kablamtron,
我可能会在你的Lisp程序中改变一些事情(没有什么不符合你的Lisp程序的地方,但我认为只有一些改进)
- ;ReCalculate Levs by Bradley Linscott
- (prompt "type rlev to activate")
- (defun c:rlev (/ ss i eLst zcoord)
- (prompt "\nSelect Text > ")
- (if (setq ss (ssget (list (cons 0 "TEXT"))))
- (progn
- (setq i (sslength ss))
- (while (not (minusp (setq i (1- i))))
- (setq eLst (entget (ssname ss i))
- zcoord (rtos (cadddr (assoc 10 eLst)) 2 1))
- (entmod (subst (cons 1 zcoord)(assoc 1 eLst) eLst))))
- (princ "\n<!> No Text Selected <!> "))
- (princ)
- )
我会在ssget中使用IF语句,以防用户不选择任何内容,这就不需要错误处理程序。
此外,我将使用while命令而不是repeat,因为repeat最多只能处理32767个实体(整数限制)的选择设置。
此外,您可以将大多数变量组合在一起,并在defun函数中对其进行本地化。
只有几点提示
希望这能有所帮助
干杯
李 |