流_星 发表于 2013-9-17 19:36:26

图幅变换

请高手帮个忙如何让字符串为A2x3
变成1.5A1字符串
A2x2.5=》1.25A1
A3x4    =>2A2
等等谢谢啦

q3_2006 发表于 2013-9-17 20:02:53

FIND查找替换

namezg 发表于 2013-9-17 20:33:57

本帖最后由 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)))))
)

namezg 发表于 2013-9-17 20:52:49

现来个简单点的
;(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)))))
)

流_星 发表于 2013-9-17 21:14:30

namezg 发表于 2013-9-17 20:52 static/image/common/back.gif
现来个简单点的

好谢谢namezg
我看到了思路明天去公司试试
我在结合特定的程序看看谢谢啦

流_星 发表于 2013-9-18 20:25:10

本帖最后由 流_星 于 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]
查看完整版本: 图幅变换