图幅变换
请高手帮个忙如何让字符串为A2x3变成1.5A1字符串
A2x2.5=》1.25A1
A3x4 =>2A2
等等谢谢啦 FIND查找替换 本帖最后由 namezg 于 2013-9-17 20:46 编辑
(mapcar 'test '("A2x3" "A2x2.5" "A3x4"))
返回值:'("1.5A1" "1.25A1" "2A2")
(defun test (str / i j k newstr)
(setq i (substr str 2 1))
(setq j (substr str (+ (vl-string-search "x" str) 2)))
(setq k (/ (read j) 2.0))
(if (= (- (float k) (fix k)) 0)
(setq k (fix k))
(setq k (float k))
)
(setq newstr (strcat (vl-princ-to-string k) "A" (itoa (1- (atoi i)))))
)
现来个简单点的
;(mapcar 'test '("A2x3" "A2x2.5" "A3x4"))
;返回值:'("1.5A1" "1.25A1" "2A2")
(defun test (str / i j k newstr)
(setq i (substr str 2 1))
(setq j (substr str (+ (vl-string-search "x" str) 2)))
(setq k (/ (read j) 2.0))
(setvar "dimzin" 8)
(setq newstr (strcat (rtos k 2 4) "A" (itoa (1- (atoi i)))))
)
namezg 发表于 2013-9-17 20:52 static/image/common/back.gif
现来个简单点的
好谢谢namezg
我看到了思路明天去公司试试
我在结合特定的程序看看谢谢啦 本帖最后由 流_星 于 2013-10-11 19:18 编辑
;这里谢谢namezg,给我的帮助
(setq s nil s (ssget "X" (list (cons 2 "tzmu"))))
(if s (Progn
(setq ss (entget (ssname s 0)))
(SETQ SQ NIL)
(WHILE (/= SQ "SEQEND")
(SETQ SS (ENTGET (ENTNEXT (CDR (ASSOC '-1 SS)))));(PRINCSS)
(SETQ SQ (CDR (ASSOC '0 SS)))
(if (= "图幅" (cdr (assoc '2 ss)))(setq tf (cdr (assoc '1 ss))))
) ;WHILE SQ
(if (= (strlen tf) 2)(setq ntf tf))
(if (> (strlen tf) 2)(progn
(setq i (substr tf 2 1))
(setq j (substr tf (+ (vl-string-search "x" tf) 2)))
(setq k (/ (read j) 2.0))
(setq ntf (strcat (rtos k 2 4) "A" (itoa (1- (atoi i)))))
))
))
现在就是变不了不知道啥原因请高手修改一下谢谢
如tf=“A3x2.5”那么应该结果ntf应该是1.25A2等等
tf=”A2x3“那么tf应该是1.5A1
谢谢高手啦
页:
[1]