一个自己编的lisp小程序遇到了一个坎,求助!!!! 首先我来简单说下这个程序的功能:我是做结构设计的,希望将CAD中的文字(例如“20.0-80.8-24.0”)进行拆分,就是根据文字中的“-”这个字符为定位,将“-”之前之后的文字都分拆出来,(就是拆成"20.0",“80.8”,“24.0”三个独立部分),我程序已经写了一半,但是遇到一个棘手问题,先上代码然后说问题: ;以下开始主程序 (defun C:CFWZ ( ) (princ "\n请选择文字:") (setq ss1 (ssget (list (cons 0 "TEXT") ))) (setq i 0) ;;以下开始循环,循环的作用是处理大片文字。 (repeat (sslength ss1) (setq a (entget (ssname ss1 i))) (setq WENZI (cdr (assoc 1 a)));;获得配筋值 (setq POINT (cdr (assoc 10 a))) (setq HIGHT (cdr (assoc 40 a))) (setq ANG1 (cdr (assoc 50 a))) (setq ANG (* (/ ANG1 3.1415926 ) 180)) (setq t1(vl-string-search "-" WENZI )) (setq t2(vl-string-search "-" WENZI (+ t1 1))) (setq t3(- t2 t1 1)) (setq W1(substr WENZI 1 t1)) (setq W2(substr WENZI (+ t1 2 ) t3)) (setq W3(substr WENZI (+ t2 2 ) )) (command "-text" POINT HIGHT ANG w1 "ESC")
) ) 本人刚自学这个LISP编程,写的比较混乱,现在问题就是在最后一行运行 (command "-text" POINT HIGHT ANG w1 "ESC")这个命令的时候解决了第一个文字书写,但是到第二个文字书写的时候不知道插入点该怎么输,我是希望分拆后的文字能跟原文字重合,但是第二个文字“80.8”的定位就不好解释了,各位有什么好办法吗?第二个文字单位解决了的话第三个文字定位就迎刃而解了。
|