找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 708|回复: 8

[求助] 求一个简单的数字求和lisp,结果覆盖指定文本

[复制链接]
发表于 2018-7-5 14:45:14 | 显示全部楼层 |阅读模式

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

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

×
如题,工作中需要大量统计单行文本的数字求和,希望一个lisp能实现输入命令--框选数字文本--程序求和--选择一个文本--该文本覆盖为求和数据,同时命令行提示求和值。
手上有的求和lisp和插件都是求和后新建个文本,我想直接覆盖某个文本,因为这个文本的位置已经留好了。当然如果lisp最后一步能提示新建或者覆盖文本最好了,非常感谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-7-5 20:50:51 | 显示全部楼层
数字求和.gif

  1. (defun c:XDTB_addnum (/                   #alignmentpoint
  2.                       #HorizontalMode                #rotation
  3.                       #textsize           #verticalmode
  4.                       #WidthFactor e                eold
  5.                       num           p0                ss
  6.                       styl           tf                tol
  7.                       txts old
  8.                      )
  9.   (xdrx_begin)
  10.   (setq        tf  t
  11.         num 0.0
  12.   )
  13.   (if (not #XDTB_addnum_tol)
  14.     (setq #XDTB_addnum_tol 2)
  15.   )
  16.   (if (setq
  17.         tol (getint
  18.               (xdrx_prompt "\n保留小数位数<" #XDTB_addnum_tol ">:" t)
  19.             )
  20.       )
  21.     (setq #XDTB_addnum_tol tol)
  22.   )
  23.   (while (and tf
  24.               (xdrx_initssget "\n选取求和的文字<退出>:")
  25.               (setq ss (xdrx_ssget '((0 . "*TEXT"))))
  26.          )
  27.     (if        ss
  28.       (progn
  29.         (xdrx_getpropertyvalue
  30.           (setq eold (ssname ss 0))
  31.           "textstring"
  32.           "rotation"
  33.           "HorizontalMode"
  34.           "verticalmode"
  35.           "WidthFactor"
  36.           "textsize"
  37.           "alignmentpoint"
  38.         )
  39.         (setq styl (xdrx_getpropertyvalue eold "textstyle"))
  40.         (setq txts (xdrx_entity_getproperty ss "textstring")
  41.               txts (xd::list:flat txts)
  42.               txts (xdrx_string_regexps
  43.                      "[0-9.]+"
  44.                      (xdrx_string_join txts ",")
  45.                    )
  46.         )
  47.         (setq num (apply '+ (mapcar 'atof txts)))
  48.         (prompt (strcat "\n累加和:" (rtos num 2 #XDTB_addnum_tol)))
  49.         (if (and (setq p0 (getpoint "\n插入点<修改存在文字>:"))
  50.                  (setq p0 (trans p0 1 0))
  51.                  num
  52.             )
  53.           (progn (setq e (xdrx_text_make
  54.                            p0
  55.                            (rtos num 2 #XDTB_addnum_tol)
  56.                            (car styl)
  57.                            #textsize
  58.                            (+ 0 #rotation)
  59.                          )
  60.                  )
  61.                  (xdrx_setpropertyvalue e "WidthFactor" #WidthFactor)
  62.                  (xdrx_entity_setpropertiesfrom e eold)
  63.                  (if (not (equal #alignmentpoint '(0 0 0) 1e-3))
  64.                    (progn (XD::Text:AdjustAlignMent
  65.                             e
  66.                             #HorizontalMode
  67.                             #verticalmode
  68.                           )
  69.                           (xdrx_entity_move
  70.                             e
  71.                             (xdrx_getpropertyvalue e "alignmentpoint")
  72.                             p0
  73.                           )
  74.                    )
  75.                  )
  76.           )
  77.           (progn
  78.             (if        (and num
  79.                      (setq old (xdrx_entsel
  80.                                  "\n拾取覆盖文本<退出>:"
  81.                                  '((0 . "text"))
  82.                                )
  83.                      )
  84.                 )
  85.               (progn
  86.                 (xdrx_setpropertyvalue
  87.                   (car old)
  88.                   "textstring"
  89.                   (rtos num 2 #XDTB_addnum_tol)
  90.                 )
  91.               )
  92.             )
  93.           )
  94.         )
  95.       )
  96.       (setq tf nil)
  97.     )
  98.   )
  99.   (xdrx_end)
  100.   (princ)
  101. )


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

使用道具 举报

 楼主| 发表于 2018-7-5 21:35:26 | 显示全部楼层

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

使用道具 举报

 楼主| 发表于 2018-7-5 21:37:43 | 显示全部楼层

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

使用道具 举报

 楼主| 发表于 2018-7-5 21:39:15 | 显示全部楼层

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

使用道具 举报

 楼主| 发表于 2018-7-5 21:41:33 | 显示全部楼层

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2018-7-5 22:15:24 | 显示全部楼层
本帖最后由 Lispboy 于 2018-7-5 22:17 编辑
lixwkkk001 发表于 2018-7-5 21:41
再打搅下,如果求和完不要插入文本,只要覆盖文本功能,该删除哪一段呢,多谢!


  1. (defun c:XDTB_addnum (/                  #alignmentpoint
  2.                       #HorizontalMode              #rotation          #textsize
  3.                       #verticalmode              #WidthFactor
  4.                       e                  eold              num          p0
  5.                       ss          styl              tf          tol
  6.                       txts          old
  7.                      )
  8.   (xdrx_begin)
  9.   (setq        tf  t
  10.         num 0.0
  11.   )
  12.   (if (not #XDTB_addnum_tol)
  13.     (setq #XDTB_addnum_tol 2)
  14.   )
  15.   (if (setq
  16.         tol (getint
  17.               (xdrx_prompt "\n保留小数位数<" #XDTB_addnum_tol ">:" t)
  18.             )
  19.       )
  20.     (setq #XDTB_addnum_tol tol)
  21.   )
  22.   (while (and tf
  23.               (xdrx_initssget "\n选取求和的文字<退出>:")
  24.               (setq ss (xdrx_ssget '((0 . "*TEXT"))))
  25.          )
  26.     (setq txts (xdrx_entity_getproperty ss "textstring")
  27.           txts (xd::list:flat txts)
  28.           txts (xdrx_string_regexps
  29.                  "[0-9.]+"
  30.                  (xdrx_string_join txts ",")
  31.                )
  32.     )
  33.     (setq num (apply '+ (mapcar 'atof txts)))
  34.     (prompt (strcat "\n累加和:" (rtos num 2 #XDTB_addnum_tol)))
  35.     (if        (and num
  36.              (setq old (xdrx_entsel
  37.                          "\n拾取覆盖文本<退出>:"
  38.                          '((0 . "text"))
  39.                        )
  40.              )
  41.         )
  42.       (progn
  43.         (xdrx_setpropertyvalue
  44.           (car old)
  45.           "textstring"
  46.           (rtos num 2 #XDTB_addnum_tol)
  47.         )
  48.       )
  49.       (setq tf nil)
  50.     )
  51.   )
  52.   (xdrx_end)
  53.   (princ)
  54. )

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

使用道具 举报

已领礼包: 6056个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 675个

财富等级: 财运亨通

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 01:05 , Processed in 0.465640 second(s), 47 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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