一个自己编的lisp小程序遇到了一个坎,求助
首先我来简单说下这个程序的功能:我是做结构设计的,希望将CAD中的文字(例如“20.0-80.8-24.0”)进行拆分,就是根据文字中的“-”这个字符为定位,将“-”之前...
首先我来简单说下这个程序的功能:我是做结构设计的,希望将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”的定位就不好解释了,各位有什么好办法吗?第二个文字单位解决了的话第三个文字定位就迎刃而解了。 展开
;以下开始主程序
(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”的定位就不好解释了,各位有什么好办法吗?第二个文字单位解决了的话第三个文字定位就迎刃而解了。 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询