明经CAD社区

 找回密码
 注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 640|回复: 15

[源码] 递增复制--多对象同时递增复制

[复制链接]
发表于 2019-10-7 16:16 | 显示全部楼层 |阅读模式


  1. (defun C:GGDZFZ (/ en pt1 ptnext eny ss ssx eno)
  2.   (princ "\n选择要复制的文字")
  3.   (setq ss (ssget '((0 . "*TEXT"))))
  4.   (setq pt1 (getpoint "\n指定复制角点"))
  5.   (setq ptnext (getpoint pt1 "\n指定插入点"))
  6.   (while ptnext
  7.             (setq eno (entlast) ssx (ssadd))
  8.             (command ".copy" ss "" "m" pt1 ptnext "")
  9.             (while (setq en (entnext eno)) (setq ssx (ssadd en ssx) eno en))
  10.             (setq n 0)
  11.             (repeat (sslength ssx)
  12.                     (setq en (ssname ssx n))
  13.                     (setq eny (ttg (vla-get-textstring (Vlax-Ename->Vla-Object en))))
  14.                     (Vlax-Put-Property (Vlax-Ename->Vla-Object en) 'TextString eny)
  15.                     (setq n (1+ n))
  16.             );end repeat
  17.             (setq ss ssx)
  18.             (setq pt1 ptnext)
  19.             (setq ptnext (getpoint pt1  "\n指定插入点"))
  20.   )
  21. (princ "\n**********完成操作************")
  22. (prin1)
  23. );end
  24. (prin1)


  25.                   
  26. (defun ttg (txd / tth tthh )
  27. (setq tth (ttm txd) tthh (rtos (1+ tth) 2 0))
  28. (setq regex (vlax-create-object "Vbscript.RegExp")) ;引用正则表达式控件
  29. (vlax-put-property regex "IgnoreCase" 0) ;不忽略大小写
  30. (vlax-put-property regex "Global" 1) ;匹配方式,全文字匹配
  31. (vlax-put-property regex "Multiline" 1) ;多行模式
  32. txd
  33.   (vlax-put-property regex "Pattern" "[0-9]+(?=[^0-9]*$)")
  34.   (setq enX (vlax-invoke-method  regex "Replace" txd tthh))
  35. (vlax-release-object regex)
  36. enx
  37. )
  38. (prin1)


  39. ;取得文字
  40. (defun ttq (x / )
  41. (setq xs (vla-get-TextString (vlax-ename->vla-object x)))
  42. )
  43. (prin1)

  44. ;提取出字符串中的数字,是直接从字串里面得到数值
  45. (defun ttm (en / regex S tmp str1)
  46. (setq regex (vlax-create-object "Vbscript.RegExp")) ;引用正则表达式控件
  47. (vlax-put-property regex "IgnoreCase" 0) ;不忽略大小写
  48. (vlax-put-property regex "Global" 1) ;匹配方式,全文字匹配
  49. (vlax-put-property regex "Multiline" 1) ;多行模式
  50. (vlax-put-property regex "Pattern" "[0-9]+(?=[^0-9]*$)")
  51. (setq s (vlax-invoke-method regex "Execute" en))
  52.   ;;将规则运用到STR字符,得到提取出的文字内容
  53.   (setq ent (VLAX-FOR tmp s (vlax-get-property tmp "value")))
  54.   (vlax-release-object regex)
  55.   (setq ent (atoi ent))
  56.   ent
  57. )
  58. (prin1)

愿意赞助一下的话就用币买
没有币的就直接复制吧


本帖子中包含更多资源

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

x

评分

参与人数 2明经币 +3 收起 理由
xyp1964 + 2 赞一个!
USER2128 + 1 赞一个!

查看全部评分

发表于 2019-10-7 20:29 | 显示全部楼层
这个很有用   谢谢分享
发表于 2019-10-7 21:46 | 显示全部楼层
谢谢楼主分享,要是能直接指定间距复制多少个就更好了
发表于 2019-10-7 23:01 | 显示全部楼层
谢谢分享,支持源码,
发表于 2019-10-8 08:37 | 显示全部楼层
谢谢楼主的分享。。
发表于 2019-10-8 09:11 | 显示全部楼层
能支持字母和罗马数字就更好了
发表于 2019-10-8 14:13 | 显示全部楼层
感谢,存在小bug,若数字带0,比如js-01,递增后变成js-2
,非js-02
发表于 2019-10-8 17:14 | 显示全部楼层
建议让用户选择递增数值,默认为元素个数或者1。检查3.9的后一个是4.0还是3.10。以及楼上提到的前后缀0的问题。
发表于 2019-10-9 16:09 | 显示全部楼层
MARK一下,学习一下
发表于 2019-10-12 09:09 | 显示全部楼层
这个很适用,谢谢分享~~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2019-12-14 05:28 , Processed in 0.707567 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

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