求一段CAD程序

实现的功能:在CAD文件中存在G421+110,G536+332,G609+131等这样的数值,将这些数值一次性减去2008(即G421+110-G2+008=G419+102;G536+332-G2+008=G534+324;G609+131-G2+008=G607+123);即将原来的G421+110,G536+332,G609+131变成G419+102,G534+324,G607+123。
2026年09月26日 09:44
有2个网友回答
网友(1):

(defun C:MJL3 ( / &kw &k1 %k1 %k L1 L2 i n nn)
 (setvar "cmdecho" 0)
 (setvar "blipmode" 0)
 (princ "\n请选择文字")
 (setq &kw (ssget '((0 . "TEXT"))))
 (if (/= &kw nil)
  (progn
   (setq i 0)
   (repeat (sslength &kw)
    (setq &k1 (entget (ssname &kw i)))
    (setq i (+ i 1))
    (setq L1 nil)
    (setq L2 nil)
    (setq n 1)
    (setq nn 1)
    (setq %k (cdr (assoc 1 &k1)))
    (repeat (strlen %k)
     (setq %k1 (substr %k n 1))
     (if (and (= nn 1) (or (= %k1 "0") (= %k1 "1")
     (= %k1 "2") (= %k1 "3") (= %k1 "4") (= %k1 "5")
     (= %k1 "6") (= %k1 "7") (= %k1 "8") (= %k1 "9")))
      (progn
       (setq L1 n)
       (setq nn (+ nn 1))
      )
     )
     (if (= %k1 "+") (setq L2 n) )
     (setq n (+ n 1))
    )
    (if (and (/= L1 nil) (/= L2 nil))
     (progn
      (setq %k1 (strcat (substr %k L1 (- L2 L1)) (substr %k (+ L2 1))))
      (setq %k1 (atoi %k1))
      (setq %k1 (itoa (- %k1 2008)))
      (setq %k1 (strcat (substr %k1 1 (- L2 L1)) "+" (substr %k1 (+ (- L2 L1) 1))))
      (if (> L1 1) (setq %k1 (strcat (substr %k 1 (- L1 1)) %k1)) )
      (setq %k1 (cons 1 %k1))
      (setq %k (assoc 1 &k1))
      (setq &k1 (subst %k1 %k &k1))
      (entmod &k1)
     )
    )
   )
  )
 )
 (prin1)
)
;;以上内容复制到记事本以《C:MJL3.lsp》命名
;;加载到AutoCAD就可以修改文字了。

网友(2):

G421+110 是什么形式存在的?文本?