明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 957|回复: 11

[源码] 增量刷

[复制链接]
发表于 2021-11-2 21:32 | 显示全部楼层 |阅读模式
100明经币
本帖最后由 刘炎华 于 2023-3-9 22:08 编辑

求助高手,想求一个增量刷,感谢!!!

最佳答案

查看完整内容

(defun c:zmdz() (defun Nume->To->Alph(Xnum / zfc M K ) (setq zfc "") (while (> Xnum 0) (setq M (fix (/ Xnum 26))) (setq K (- Xnum (* M 26))) (if (= K 0) (setq K 26 M (1- M) ) ) (setq zfc (strcat (chr (+ 64 K)) zfc)) (setq Xnum M) ...
发表于 2021-11-2 21:32 | 显示全部楼层
(defun c:zmdz()
     (defun Nume->To->Alph(Xnum / zfc M K )
         (setq zfc "")
         (while (> Xnum 0)
             (setq M (fix (/ Xnum 26)))
             (setq K (- Xnum (* M 26)))
             (if (= K 0)
                 (setq K 26
                       M (1- M)
                 )
             )
             (setq zfc (strcat (chr (+ 64 K)) zfc))
             (setq Xnum M)

         )
         (setq zfc zfc)
    )
  
    (setvar "cmdecho" 0)
    (command "_undo" "Be")
    (if (and
            (princ "\n选取第1个单行文字:")
            (setq ssa (ssget ":S" '((0 . "TEXT") (1 . "???[A-Z]*"))))
            (princ "\n选取其它单行文字:")
            (setq ssb (ssget  '((0 . "TEXT"))))
        )
        (progn
            (setq ent1 (ssname ssa 0))
            (setq zfc (cdr (assoc 1 (entget ent1))))
            (setq zfc1 (substr zfc 1 3)) ;取前3个字符
            (setq zfc2 (substr zfc 4 1)) ;取第4个字符
            (setq zfc3 (substr zfc 5))   ;取从第5个起剩余的字符
            (setq qsz (- (ascii zfc2) 64)) ;第4个字符的ASCII码值-1
            ;取选集内所有对象
            (setq tymbb (vl-remove-if 'listp (mapcar 'cadr (ssnamex ssb))))
            ;按X坐标值由小到大排序
            (setq tymbb (vl-sort tymbb '(lambda(a b)
                                            (setq pta (assoc 10 (entget a)))
                                            (setq ptb (assoc 10 (entget b)))
                                            (< (cadr pta) (cadr ptb))
                                        )
                        )
            )
            (setq i 1)
            (foreach enti tymbb
                (setq dxfi (entget enti))
                (setq dxfi (subst (cons 1 (strcat zfc1  (Nume->To->Alph  (+ qsz i)) zfc3))
                                  (assoc 1 dxfi)
                                  dxfi
                           )
                )
                (entmod dxfi)
                (setq i (1+ i))
            )
        )
    )
    (command "_undo" "e")
    (setvar "cmdecho" 1)
    (princ)
)

点评

就是这个效果,太感谢您了!!!  发表于 2021-11-3 21:14
回复

使用道具 举报

发表于 2021-11-2 23:14 | 显示全部楼层
天正建筑有个文字递增的功能可以实现
回复

使用道具 举报

发表于 2021-11-3 08:57 | 显示全部楼层
  1. (defun c:ttt (/ is_gr4 n1 n2 n3 obj1 obj2 pause pt1 pt111 pt2 ss1 str1 str2 str3 str5)
  2. ;;;选择文字
  3.   (setq ss1 (ssget ":E:S" '((0 . "text"))))
  4.   (if ss1
  5.     (progn (setq obj1 (vlax-ename->vla-object (ssname ss1 0))
  6. ;;;获取文字内容
  7.                  str1 (vla-get-textstring obj1)
  8. ;;;获取文字坐标
  9.                  pt1  (vlax-safearray->list (vlax-variant-value (vla-get-insertionpoint obj1)))
  10.            )
  11. ;;;;获取文字长度
  12.            (setq n1 (strlen str1)
  13. ;;;获取asc码
  14.                  n2 (ascii (substr str1 (- n1 2) 1))
  15.            )
  16. ;;;--------------------------------------------------------------
  17. ;;;       判断文字结尾是否为数字或字母
  18. ;;;--------------------------------------------------------------
  19.            (cond
  20. ;;;-----------------------------------大写字母----------------------------       
  21. ;;;判断最后一个字符是否为大写字母A~Z
  22.                  ((and (> n2 64) (< n2 90))
  23.                   (setq n3 (ascii (substr str1 (- n1 2) 1))) ;-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  24.                     ;开始递增复制
  25.                     ;-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  26. ;;;获取字符中的前半部分
  27.                   (setq str2 (substr str1 1 (- (strlen str1) 3)))
  28. ;;;获取字符中的后半部分
  29.                   (setq str5 (substr str1 5 2))
  30. ;;;计算加1,重置参考点,重新创建文字内容
  31.                   (setq n3 (+ n3 1))
  32.                   (setq str3 (strcat str2 (chr n3) str5))
  33.                   (setq        obj2   (vlax-vla-object->ename obj1)
  34.                         is_gr4 1
  35.                   )
  36.                   (while (and is_gr4 (> n3 64) (< n3 91))
  37.                     (setq pt111 (getvar "LastPoint"))
  38.                     (command "_copy" obj2 "" pt1 pause)
  39.                     (setq pt2 (getvar "LastPoint"))
  40.                     ;;判断最后一点与前一点是否一样          
  41.                     (if        (< (distance pt111 pt2) 0.1)
  42.                       (progn
  43. ;;;设置退出循环
  44.                              (setq is_gr4 nil)
  45. ;;;删除最后生成的文字
  46.                              (entdel (entlast))
  47.                       )
  48.                       (progn
  49. ;;;提取复制创建的文字
  50.                              (setq obj2 (entlast))
  51. ;;;修改文字内容
  52.                              (vla-put-textstring (vlax-ename->vla-object obj2) str3)
  53. ;;;计算加1,重置参考点,重新创建文字内容
  54.                              (setq n3        (+ n3 1)
  55.                                    pt1        pt2
  56.                                    str3        (strcat str2 (chr n3) str5)
  57.                              )
  58.                       )
  59.                     )
  60.                   )
  61.                  )
  62. ;;;-----------------------------------大写字母----------------------------
  63.            )
  64. ;;;----------cond
  65.     )
  66.   )
  67. )
回复

使用道具 举报

发表于 2021-11-3 09:04 | 显示全部楼层
看看效果如何。。。。:D

本帖子中包含更多资源

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

x

点评

非常感谢您哦!这外写编码很酷了!!! 我求助是想弄个刷子,因为位置已有字存在了  发表于 2021-11-3 21:18
回复

使用道具 举报

发表于 2021-11-3 11:11 | 显示全部楼层
学习了。。
回复

使用道具 举报

发表于 2021-11-3 22:43 | 显示全部楼层
任意字符,包括汉字,从第四个开始递增http://bbs.mjtd.com/forum.php?mod=attachment&aid=MTE2MzI3fDhhM2RkNGVmNDhiOTM1ZWUyY2JhMTNlMzQ3NWNkOGVjfDE3MTQ5OTkwMjI%3D&request=yes&_f=.gif

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2021-11-5 19:04 | 显示全部楼层
大神刷~
回复

使用道具 举报

发表于 2021-11-9 14:33 | 显示全部楼层
回复

使用道具 举报

发表于 2022-12-9 09:37 | 显示全部楼层
高手怎么这么多啊?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 20:37 , Processed in 0.753775 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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