hebps 发表于 2023-4-9 10:08:43

用ChatGPT生成的LISP程序-[修改数字小数部分]

本帖最后由 hebps 于 2023-4-9 10:08 编辑

;功能是检查图面所有数字的小数部分,第一个字符是否为0或9并根据要求修改。
;如果是0则在0前边插入数字1,如果是9则在9后边插入数字1。
;例:
;66.0123... 改为 66.10123...
;66.987...改为 66.9187...

;期待各位大佬改进,看看能否实现!

;;;以下是生成的程序
(defun modify-all-decimals ( / ss lst result)
(setq ss (ssget "_X" '((0 . "TEXT,MTEXT,ATTRIB"))))
(setq lst '())
(repeat (sslength ss)
    (setq ent (ssname ss (setq i (1- i))))
    (setq str (vla-get-TextString ent))
    (if (and (/= str "")
             (setq num (atof str))
             (not (equal num 0.0))
             (not (equal num -0.0))
             (not (equal num 0))
             (not (equal num -0)))
      (progn
      (setq decimals (substr str (+ (vl-string-position "." str) 2)))
      (setq first-char (substr decimals 1 1))
      (if (equal first-char "0")
          (setq decimals (strcat "1" decimals))
          (if (equal first-char "9")
            (setq decimals (strcat decimals "1"))
          )
      )
      (setq str (strcat (substr str 1 (+ (vl-string-position "." str) 1)) decimals))
      (vla-put-TextString ent str)
      (setq lst (cons num lst))
      )
    )
)
(princ (strcat "修改了 " (itoa (length lst)) " 个数字的小数部分。"))
(princ)
)

kozmosovia 发表于 2023-4-9 10:49:42

直接字符串替换".0"=>".10",".9"=>".91",没必要那么啰嗦的代码

hebps 发表于 2023-4-9 11:02:36

kozmosovia 发表于 2023-4-9 10:49
直接字符串替换".0"=>".10",".9"=>".91",没必要那么啰嗦的代码

666!感谢回复,主要是想用lisp实现快捷修改,减少工作量!

liuhe 发表于 2023-4-9 11:04:51

kozmosovia 发表于 2023-4-9 10:49
直接字符串替换".0"=>".10",".9"=>".91",没必要那么啰嗦的代码

哈哈降维打击;P
页: [1]
查看完整版本: 用ChatGPT生成的LISP程序-[修改数字小数部分]