找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 9523|回复: 86

[工具] 最强“拷贝+1”来了

  [复制链接]

已领礼包: 51个

财富等级: 招财进宝

发表于 2016-6-24 01:14:43 | 显示全部楼层 |阅读模式
  • 插件名称 : 拷贝+1
  • 作  者 : Lispboy
  • 运行环境 :XDRX API 晓东工具箱 
  • 发布时间 :2016-06-24
  • 命令名称 :XDTB_COPY+1
  • 插件介绍 :文字,属性块拷贝同时数字+1,可以拷贝也可以阵列。阵列时候两点确定方向和间距。
  • 备  注 : (点击图片可以放大)
    处理文字,属性的最后一组数字+1, 数字前后可以有其他字符串。
(点击图片可以放大)

晓东温馨提示 1、运行环境为 晓东工具箱XDRX API 的插件,请下载最新版本的 晓东工具箱XDRX API开发环境 一键安装
2、在ACAD中如何加载插件,请看 论坛插件使用方法
3、如果您有要求需要定制插件,请到 编程申请 论坛发帖求助

插件详细内容

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

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

×
本帖最后由 Lispboy 于 2018-6-6 01:31 编辑

支持曲线阵列的第二版发布,见:http://bbs.xdcad.net/thread-716036-1-1.html

----------------------------------------------
打造最强的“拷贝+1”,如有建议,请跟帖。


更新日志:  1、2016.625日第二次更新,谢谢liuyj建议,增强功能,可以根据鼠标位置的数字进行递增操作。
        需要2016.0625+的XDRX API支持。
        新的LISP函数XD::Text:IndexAtCursor见:http://bbs.xdcad.net/thread-704581-1-1.html

[sell=30]
  1. (defun c:XDTB_Copy+1 (/ base dis dynpt e e1 i info msg myerr next num olderr
  2.                         p p1 p2 pos posl prev pt tf txt txt1 txt2 typ v x
  3.                      )
  4.   (defun myerr (msg)
  5.     (princ (strcat "\n" msg))
  6.     (xdrx_end)
  7.     (xdrx_entity_delete e)
  8.     (setq *error* olderr)
  9.     (princ)
  10.   )
  11.   (defun _callback (dynpt)
  12.     (xdrx_entity_move e (trans base 1 0) dynpt)
  13.     (setq base (trans dynpt 0 1))
  14.   )
  15.   (defun _cale ()
  16.     (setq e (xdrx_entity_copy e)
  17.           e (ssname e 0)
  18.           txt2 (strcat prev (itoa (+ (atoi txt1) 1 i)) next)
  19.     )
  20.     (setq typ (car (xdrx_object_classname e)))
  21.     (cond
  22.       ((= typ "INSERT")
  23.         (setq e1 (xdrx_getpropertyvalue e "AttributeEntities"))
  24.         (xdrx_setpropertyvalue (car e1) "textstring" txt2)
  25.       )
  26.       (t
  27.         (xdrx_setpropertyvalue e "textstring" txt2)
  28.       )
  29.     )
  30.     (setq i (1+ i))
  31.   )
  32.   (defun _check (e p / i next pos posl prev tf txt txt1 x)
  33.       (setq typ (xdrx_object_classname e))
  34.       (if (= (car typ) "INSERT")
  35.         (setq e (car (xdrx_getpropertyvalue e "AttributeEntities")))
  36.       )
  37.     (if (and
  38.           (setq txt (xd::text:indexatPoint e p))
  39.           (setq pos (cadr txt)
  40.                 txt (car txt)
  41.           )
  42.           (setq txt1 (xdrx_string_regexps "[0-9]+" txt))
  43.           (setq posl (xdrx_string_regexpv)
  44.                 i -1
  45.           )
  46.           (vl-some '(lambda (x)
  47.                       (setq i (1+ i))
  48.                       (if (setq tf (<= (car x) pos (cadr x)))
  49.                         (setq pos x)
  50.                       )
  51.                     ) posl
  52.           )
  53.         )
  54.       (progn
  55.         (setq prev (xdrx_string_mid txt 0 (car pos))
  56.               next (xdrx_string_mid txt (last pos))
  57.         )
  58.         (list prev (nth i txt1) next)
  59.       )
  60.     )
  61.   )
  62.   (if (and
  63.         (setq e (xdrx_entsel "\n选取带数字的字符串或属性<退出>" '(
  64.                               (-4 . "<or")
  65.                               (-4 . "<and")
  66.                               (0 . "insert")
  67.                               (66 . 1)
  68.                               (-4 . "and>")
  69.                               (0 . "text")
  70.                               (-4 . "or>")
  71.                              )
  72.                 )
  73.         )
  74.         (setq p (trans (cadr e) 1 0)
  75.               e (car e)
  76.         )
  77.         (setq info (_check e p))
  78.       )
  79.     (progn
  80.       (xdrx_begin)
  81.       (xdrx_sysvar_push '("osmode" 33))
  82.       (setq olderr *error*)
  83.       (setq *error* myerr)
  84.       (setq prev (car info)
  85.             txt1 (cadr info)
  86.             next (last info)
  87.       )
  88.       (initget 128 "A")
  89.       (xdrx_initget 128 "A")
  90.       (if (setq base (getpoint "\n基点[阵列(A)]<退出>:"))
  91.         (progn
  92.           (cond
  93.             ((= base "A")
  94.               (if (and
  95.                     (setq p1 (getpoint "\n方向第一点<退出>:"))
  96.                     (setq p2 (getpoint p1 "\n方向第二点<退出>:"))
  97.                     (progn
  98.                       (initget 128 "1 2 3 4 5 6 7 8 9")
  99.                       (xdrx_initget 128 "1 2 3 4 5 6 7 8 9")
  100.                     )
  101.                     (setq num (getint "\n阵列数目<退出>:"))
  102.                   )
  103.                 (progn
  104.                   (setq i 0)
  105.                   (_cale)
  106.                   (setq v (mapcar
  107.                             '-
  108.                             p2
  109.                             p1
  110.                           )
  111.                         dis (xdrx_vector_length v)
  112.                         v (trans v 1 0 t)
  113.                   )
  114.                   (repeat num
  115.                     (xdrx_entity_move e (setq base (xd::geom:get9pt e 5))
  116.                                       (mapcar
  117.                                         '+
  118.                                         base
  119.                                         v
  120.                                       )
  121.                     )
  122.                     (_cale)
  123.                   )
  124.                 )
  125.               )
  126.             )
  127.             (t
  128.               (setq i 0)
  129.               (_cale)
  130.               (while (setq pt (xd::drag:gmove base "\n下一点<退出>:" -7 nil
  131.                                               t "_callback"
  132.                               )
  133.                      )
  134.                 (_cale)
  135.               )
  136.             )
  137.           )
  138.           (xdrx_entity_delete e)
  139.         )
  140.       )
  141.     )
  142.     (progn
  143.       (if e
  144.         (xdrx_prompt "\n没有选中数字.")
  145.       )
  146.     )
  147.   )
  148.   (xdrx_sysvar_pop)
  149.   (xdrx_end)
  150.   (setq *error* olderr)
  151.   (princ)
  152. )

[/sell]

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

已领礼包: 604个

财富等级: 财运亨通

发表于 2016-6-24 08:15:21 | 显示全部楼层
这个程序是很实用的,你早一点写嘛。我花了大量时间来写这个程序

点评

黄大,也开始用晓东工具箱呢? 你的版本呢?  详情 回复 发表于 2016-6-24 08:19
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3198个

财富等级: 富可敌国

发表于 2016-6-24 08:19:34 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2016-6-24 08:15
这个程序是很实用的,你早一点写嘛。我花了大量时间来写这个程序

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

使用道具 举报

已领礼包: 8611个

财富等级: 富甲天下

发表于 2016-6-24 09:24:39 | 显示全部楼层
能把指定位置的数字+指定数值,就真的是最强了。比方说:AAxBBy格式的,xy都是数字,不仅可以y+1(n),还可以对x+1(n),再扩展xAAyBBz等。再加强点,对J-A1F2-1这样的,指定A和F之间的数字+1。

点评

指定位置什么的,加上都很容易,因为用了正则表达式,代码也不会增加多少,但是实际中需要这样的很多吗? 什么情况需要把前面的数字加1? 加上你说的功能,要牺牲多几次和CAD交互的时间,值得吗?  详情 回复 发表于 2016-6-24 12:46
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 4个

财富等级: 恭喜发财

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

 楼主| 发表于 2016-6-24 12:46:15 | 显示全部楼层
liuyj 发表于 2016-6-24 09:24
能把指定位置的数字+指定数值,就真的是最强了。比方说:AAxBBy格式的,xy都是数字,不仅可以y+1(n),还可 ...

指定位置什么的,加上都很容易,因为用了正则表达式,代码也不会增加多少,但是实际中需要这样的很多吗? 什么情况需要把前面的数字加1? 加上你说的功能,要牺牲多几次和CAD交互的时间,值得吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8611个

财富等级: 富甲天下

发表于 2016-6-24 13:12:40 | 显示全部楼层
值得,比我复制过去再改文字还是快。比方说,我要把一层的编号为1的风机P-F1-1复制到各层,编号也为1,即P-F2-1,这时就用得到
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8611个

财富等级: 富甲天下

发表于 2016-6-24 13:14:34 | 显示全部楼层
另外,还可以增加一个点击目标文字增加指定数值的功能,这个比修改文字快多了

点评

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

使用道具 举报

发表于 2016-6-24 22:12:17 | 显示全部楼层
:)牛辦!很好,不过看不了啊

点评

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2016-6-24 22:16:42 | 显示全部楼层
zhoufen564555 发表于 2016-6-24 22:12
牛辦!很好,不过看不了啊

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

 楼主| 发表于 2016-6-25 14:41:12 | 显示全部楼层
liuyj 发表于 2016-6-24 13:14
另外,还可以增加一个点击目标文字增加指定数值的功能,这个比修改文字快多了

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

使用道具 举报

已领礼包: 8611个

财富等级: 富甲天下

发表于 2016-6-25 15:11:37 | 显示全部楼层
非常好,多谢多谢。阵列能否改为动态显示效果?

点评

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

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

 楼主| 发表于 2016-6-25 15:13:25 | 显示全部楼层
liuyj 发表于 2016-6-25 15:11
非常好,多谢多谢。阵列能否改为动态显示效果?

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

使用道具 举报

已领礼包: 8611个

财富等级: 富甲天下

发表于 2016-6-25 15:24:30 | 显示全部楼层
从实用角度说确实没什么意义,之前qjchen写过一个阵列递增的程序,做成动态显示的,我觉得挺不错,所以建议一下。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 16:19 , Processed in 0.474296 second(s), 68 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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