找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1997|回复: 10

[求助] 给多个数字加一个定值的lsp程序,望各位完善

[复制链接]
发表于 2014-4-8 17:11:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

(defun C:qq ()
(setq ss1 (ssget)
      len1 (sslength ss1)
      cnt 0
      add (getreal "\n加值(可为负值,然后回车)")
      )
(while (< cnt len1)
  (setq dent (entget (ssname ss1 cnt))
        txt (cdr (assoc 1 dent))
        len (strlen txt)
        cnt1 1
        )
   (while (<= cnt1 len)
    (if (/= (substr txt cnt1 1) " ")
     (progn
      (setq num (atof (substr txt cnt1 len))
            numlen (strlen (rtos num 2 5)))
       (if (/= num 0)
         (progn   
          (cond ((= (substr txt cnt1 numlen) (rtos num 2 5)) (setq sp 0))
                ((= (substr txt cnt1 (- numlen 1)) (rtos num 2 1)) (setq sp 1))
                ((= (substr txt cnt1 (- numlen 3)) (rtos num 2 0)) (setq sp 3))
            );cond      
            (setq rtxt (substr txt (- (+ cnt1 numlen) sp) len)
                  num (+ add num)
                  numt (rtos num 2 5)
                  ntx  (strcat (substr txt 1 (-  cnt1 1)) numt rtxt)
                  old (assoc 1 dent)
                  new (cons 1 ntx)
                  dent (subst new old dent)   
                  cnt1 (+ 1 len)
               );setq
                (entmod dent)
               );progn
             )));if,progn,if
        (setq cnt1 (1+ cnt1))      
      );end while
  (setq cnt (1+ cnt))   
);while
);defun


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2014-4-8 17:14:59 | 显示全部楼层
该程序存在的问题是:如1.00(2.00)加值为0.5 会变成1.5.00(2.00),希望加0.5后变成1.50(2.00);1.50(2.00)加值为0.5 会变成20(2.00),希望加0.5后变成2.00(2.00)。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-9 12:05:09 | 显示全部楼层
该程序的问题是:如1.00加0.50后是1.5.00而你不是1.50;2.50加0.50后是30而不是3.00。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-4-9 22:43:23 | 显示全部楼层
看来我还要等几天才能下载
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2014-4-10 09:57:04 | 显示全部楼层
如果仅仅是单行文本,可以到我的U盘下载ce.lsp用用看看,使用时注意看提示。
现在没精力再去看程序了,所以只能这样帮你了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 10423个

财富等级: 富甲天下

发表于 2014-4-10 11:25:30 | 显示全部楼层
本帖最后由 zxq0220 于 2014-4-23 08:36 编辑
  1. (defun C:qq ()
  2. (setq ss1 (ssget '((0 . "*TEXT")))
  3.       cnt 0
  4.       add (getreal "\n加值(可为负值,然后回车)"))
  5. (repeat (sslength ss1)
  6.   (setq dent (entget (ssname ss1 cnt))
  7.         txt (cdr (assoc 1 dent))
  8.         len (strlen txt)
  9.         cnt1 1
  10.         ntxt "")
  11.   (while (and (<= cnt1 len) (wcmatch (setq a (substr txt cnt1 1)) "#,`."))
  12.     (setq ntxt (strcat ntxt a)
  13.           cnt1 (1+ cnt1))
  14.   );while
  15.   (print ntxt)
  16.   (setq numlen (strlen ntxt)
  17.    ntxt (substr (rtos (+ (atof ntxt) add) 2 5) 1 numlen))
  18.    (if (< numlen len)
  19.      (setq ntxt (strcat ntxt (substr txt numlen)))
  20.    )
  21.    (entmod (subst (cons 1 ntxt) (assoc 1 dent) dent))
  22.   (setq cnt (1+ cnt))
  23. );repeat
  24. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-14 13:58:19 | 显示全部楼层
你好 ,很感谢你的回答  可还是不行 但1.00加0.5可以变成1.50了  可还是有些问题,比如1.50加0.5还是变成20  如果20加0.5不会有任何变化

点评

那样怎样修改程序才能使1.50加上0.5后是2.00,而不是20。希望您能给出完整的修改程序  详情 回复 发表于 2014-4-16 09:31
程序只保留原来的有效数位,如果原来只有两位整数,则+0.5后尾数被剪掉。  详情 回复 发表于 2014-4-15 19:56
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 10423个

财富等级: 富甲天下

发表于 2014-4-15 19:56:08 | 显示全部楼层
xunzhao123 发表于 2014-4-14 13:58
你好 ,很感谢你的回答  可还是不行 但1.00加0.5可以变成1.50了  可还是有些问题,比如1.50加0.5还是变成20 ...

程序只保留原来的有效数位,如果原来只有两位整数,则+0.5后尾数被剪掉。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-16 09:31:29 | 显示全部楼层
xunzhao123 发表于 2014-4-14 13:58
你好 ,很感谢你的回答  可还是不行 但1.00加0.5可以变成1.50了  可还是有些问题,比如1.50加0.5还是变成20 ...

那样怎样修改程序才能使1.50加上0.5后是2.00,而不是20。希望您能给出完整的修改程序
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-22 14:24:14 | 显示全部楼层
谁能帮帮忙
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 10423个

财富等级: 富甲天下

发表于 2014-4-23 08:36:47 | 显示全部楼层
6楼改了。再试试。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-24 10:24 , Processed in 0.402603 second(s), 56 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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