找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1458|回复: 7

[编程申请] 求一个 点击左键数字+1 右键点击数字-1 的程序

[复制链接]
发表于 2013-6-11 22:50:56 | 显示全部楼层 |阅读模式

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

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

×
求一个 点击左键数字+1 右键点击数字-1 的程序:
要求;
1.支持单行文字、多重引线里的数字(即零件序号)
2.支持框选

附:一个单行文字的ADD程序供参考
;序号增值
(defun c:add ()
  (setq ss (ssget '((0 . "TEXT")))
        nadd (getint "\n增加值<1>:")
        dec (getint "\n精度<0>:")
        i 0)
  (if (not nadd)(setq nadd 1))
  (if (not dec)(setq dec 0))
  (repeat (sslength ss)
    (setq ent (ssname ss i)
          entl (entget ent)
          i (1+ i)
    )
    (txtadd entl nadd dec)
  )
  (princ)
)
;;;;;txtadd
(defun txtadd (entl nadd dec /)
  (setq        bnam0 (cdr(assoc 1 entl)));;;old txt
  (princ "\n原字串:")(princ bnam0)
  ;;使得序号不重复
  (setq nlen (strlen bnam0)
        n1 1
        lastn nil)
  (while (and (/= 0 nlen)(member (substr bnam0 nlen 1) '("0" "1" "2" "3" "4" "5" "6" "7" "8" "9" ".")))
        (setq lastn (atof (substr bnam0 nlen n1));;字串尾序号
              nlen (1- nlen)
              n1 (1+ n1)
        )
  );;end while
  (if lastn;;;;;;;;确定新字串---尾序号累加nadd,无序号加nadd
   (progn (setq lastn (+ lastn nadd))
          (if (or (= 'INT (type (read bnam0))) (= 'REAL (type (read bnam0))));;当字串如"3"
              (setq bnam (rtos lastn 2 dec))
              (setq bnam (strcat (substr bnam0 1 nlen) (rtos lastn 2 dec)))
          )
   )
   (progn (setq lastn nadd)         ;;else
          (if (or (= 'INT (type (read bnam0)))(= 'REAL (type (read bnam0))))
              (setq bnam (rtos lastn 2 dec))
              (setq bnam (strcat bnam0 (rtos lastn 2 dec)))
          )
   )
  );;end if
  (princ " 改为:")(princ bnam)
  (setq entl (subst (cons 1 bnam) (assoc 1 entl) entl))
  (entmod entl)(entupd ent)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-6-11 23:01:44 | 显示全部楼层
本帖最后由 newer 于 2013-6-11 23:03 编辑

贴图,传DWG。
既然你想支持框选了,那还有左键,右键吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

发表于 2013-6-11 23:24:48 | 显示全部楼层
我猜想楼主的意思可能是,框选所有要加减的数字后,再单击左键实现数字+1,单击右键实现数字-1。

点评

那不是费劲吗,这样写工具应用面太窄了。 不如给个选择,加几,减几自己输入下。  详情 回复 发表于 2013-6-11 23:58
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-6-11 23:58:08 | 显示全部楼层
sicky111 发表于 2013-6-11 23:24
我猜想楼主的意思可能是,框选所有要加减的数字后,再单击左键实现数字+1,单击右键实现数字-1。

那不是费劲吗,这样写工具应用面太窄了。

不如给个选择,加几,减几自己输入下。

点评

我只是猜想楼主的意图而已。  详情 回复 发表于 2013-6-12 00:17
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-12 00:12:08 | 显示全部楼层
主要是插入序号后,后面的序号+1,序号是用多重引线画的,不是单行文字,效果能和上面的add程序差不多就可以了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

发表于 2013-6-12 00:17:08 | 显示全部楼层
XDSoft 发表于 2013-6-11 23:58
那不是费劲吗,这样写工具应用面太窄了。

不如给个选择,加几,减几自己输入下。

我只是猜想楼主的意图而已。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-12 10:56:22 | 显示全部楼层
简单的说  就是想给多重引线里的数字加1  
我贴的代码只能给单行文本加1
求大神们帮忙看看~~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 9903个

财富等级: 富甲天下

发表于 2013-6-13 21:27:08 | 显示全部楼层
;改了一下,试试看。
  1. ;序号增值
  2. (defun c:add ()
  3. (setq ss (ssget '((-4 . "<OR") (0 . "TEXT") (102 . "{ACAD_REACTORS") (-4 . "OR>")))
  4.        nadd (getint "\n增加值<1>:")
  5.        dec (getint "\n精度<0>:")
  6.        i 0)
  7. (if (not nadd)(setq nadd 1))
  8. (if (not dec)(setq dec 0))
  9. (repeat (sslength ss)
  10.   (setq ent (ssname ss i)
  11.         entl (entget ent)
  12.         i (1+ i))
  13.   (txtadd entl nadd dec)
  14. )
  15. (princ)
  16. )
  17. ;;;;;txtadd
  18. (defun txtadd (entl nadd dec /)
  19. (setq bnam0 (cdr(assoc 1 entl)));;;old txt
  20. (princ "\n原字串:")
  21. (princ bnam0)
  22.   ;;使得序号不重复
  23. (setq nlen (strlen bnam0)
  24.        n1 1
  25.        lastn nil)
  26. (while (and (/= 0 nlen)(wcmatch (substr bnam0 nlen 1) "[0-9],."))
  27.   (setq lastn (atof (substr bnam0 nlen n1));;字串尾序号
  28.         nlen (1- nlen)
  29.         n1 (1+ n1))
  30. );while
  31. (if lastn (progn ;;;;;;;;确定新字串---尾序号累加nadd,无序号加nadd
  32.   (setq lastn (+ lastn nadd))
  33.   (if (numberp (read bnam0));;当字串如"3"
  34.    (setq bnam (rtos lastn 2 dec))
  35.    (setq bnam (strcat (substr bnam0 1 nlen) (rtos lastn 2 dec)))
  36.   )
  37. ) (progn
  38.   (setq lastn nadd)         ;;else
  39.   (if (numberp (read bnam0))
  40.    (setq bnam (rtos lastn 2 dec))
  41.    (setq bnam (strcat bnam0 (rtos lastn 2 dec)))
  42.   )
  43. ));;end if
  44. (princ " 改为:")(princ bnam)
  45. (setq entl (subst (cons 1 bnam) (assoc 1 entl) entl))
  46. (entmod entl)(entupd ent)
  47. )

评分

参与人数 1D豆 +10 收起 理由
XDSoft + 10 热心帮忙奖!

查看全部评分

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-29 11:14 , Processed in 0.181358 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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