用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)
)
直接字符串替换".0"=>".10",".9"=>".91",没必要那么啰嗦的代码
kozmosovia 发表于 2023-4-9 10:49
直接字符串替换".0"=>".10",".9"=>".91",没必要那么啰嗦的代码
666!感谢回复,主要是想用lisp实现快捷修改,减少工作量! kozmosovia 发表于 2023-4-9 10:49
直接字符串替换".0"=>".10",".9"=>".91",没必要那么啰嗦的代码
哈哈降维打击;P
页:
[1]