明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 839|回复: 3

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

[复制链接]
发表于 2023-4-9 10:08:43 | 显示全部楼层 |阅读模式
本帖最后由 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)
)

发表于 2023-4-9 10:49:42 | 显示全部楼层
直接字符串替换".0"=>".10",".9"=>".91",没必要那么啰嗦的代码

 楼主| 发表于 2023-4-9 11:02:36 | 显示全部楼层
kozmosovia 发表于 2023-4-9 10:49
直接字符串替换".0"=>".10",".9"=>".91",没必要那么啰嗦的代码

666!感谢回复,主要是想用lisp实现快捷修改,减少工作量!
发表于 2023-4-9 11:04:51 | 显示全部楼层
kozmosovia 发表于 2023-4-9 10:49
直接字符串替换".0"=>".10",".9"=>".91",没必要那么啰嗦的代码

哈哈  降维打击
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-16 15:02 , Processed in 0.165922 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表