乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 94|回复: 5

[编程交流] 查找和替换自动化--N

[复制链接]

3

主题

6

帖子

3

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 11:39:03 | 显示全部楼层 |阅读模式
大家好,
 
我画的是一系列不同的部分,这些部分逐渐增加。我手动放置它们,并用1-1-K001这样的标签对它们进行编号,下一个将是1-1-K002。问题是,有时会插入一个部分,而所有后续部分都需要增加一个。我正在搜索一个Lisp程序,但没有找到一个这样做。最好有一个Lisp,它可以同时查找和替换所有50个部分,并将数字提高1位,或者可以引用一个excel文件,该文件在“查找值”列中有一个列表,后面有一个替换值列。
 
任何帮助都将不胜感激。
 
 
这里有一个类似的帖子:
http://www.cadtutor.net/forum/showthread.php?t=43306&highlight=INCREMENT
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:54:28 | 显示全部楼层
试试这个(当然是在图纸副本上):
 
  1. (defun c:BumpUp (/ ELST ENT I NUM SEARCH SS STR)
  2. (setq search "1-1-K*")
  3. (if (setq i -1 ss (ssget "_X" '((0 . "TEXT,MTEXT"))))
  4.    (while (setq ent (ssname ss (setq i (1+ i))))
  5.      (if (wcmatch
  6.            (strcase
  7.              (setq str
  8.                (cdr (assoc 1 (setq eLst (entget ent))))))
  9.            (strcase search))
  10.       
  11.        (progn
  12.          (if (setq num (atoi (substr str 6)))
  13.            (progn
  14.              (setq num (itoa (1+ num)))
  15.              (while (< (strlen num) 3)
  16.                (setq num (strcat "0" num)))
  17.              (entmod
  18.                (subst
  19.                  (cons 1 (strcat (substr str 1 (- (strlen str) 3)) num))
  20.                    (assoc 1 eLst) eLst))))))))
  21. (princ))
  22.               
回复

使用道具 举报

3

主题

6

帖子

3

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 12:14:11 | 显示全部楼层
非常感谢。
 
您发布的Lisp可以完美地增加整个图形的数字。如果我需要有选择地去做,我该怎么做呢。例如,在1-1-K035处插入零件,我只需要放大1-1-K035及以上的零件。数字也是增强属性的一部分。上面的lisp似乎只适用于文本。
 
谢谢
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:22:32 | 显示全部楼层
试试这个:
 
  1. (defun c:BumpUp (/ ELST ENT I NUM SEARCH SS STR)
  2. (setq search "1-1-K*")
  3. (if (setq i -1 ss (ssget "_:L" '((-4 . "<OR")
  4.                                     (0 . "TEXT,MTEXT")
  5.                                     (-4 . "<AND")
  6.                                       (0 . "INSERT")
  7.                                       (66 . 1)
  8.                                     (-4 . "AND>")
  9.                                   (-4 . "OR>"))))
  10.    
  11.    (while (setq ent (ssname ss (setq i (1+ i))))
  12.      (cond (  (eq "INSERT" (cdr (assoc 0 (entget ent))))
  13.               (while (not (eq "SEQEND"
  14.                               (cdr (assoc 0 (entget
  15.                                               (setq ent
  16.                                                 (entnext ent)))))))
  17.                 (if (wcmatch
  18.                       (strcase
  19.                         (setq str
  20.                           (cdr (assoc 1 (setq eLst (entget ent))))))
  21.                      
  22.                       (strcase search))
  23.                   (if (setq num (atoi (substr str 6)))
  24.                     (progn
  25.                       (setq num (itoa (1+ num)))
  26.                       (while (< (strlen num) 3)
  27.                         (setq num (strcat "0" num)))
  28.                       (entupd
  29.                         (cdr (assoc -1
  30.                                (entmod
  31.                                  (subst
  32.                                    (cons 1 (strcat
  33.                                              (substr str 1
  34.                                                      (- (strlen str) 3)) num))
  35.                                    
  36.                                      (assoc 1 eLst) eLst))))))))))
  37.            (t (if (wcmatch
  38.                     (strcase
  39.                       (setq str
  40.                              (cdr (assoc 1 (setq eLst (entget ent))))))
  41.                     
  42.                     (strcase search))
  43.                 (if (setq num (atoi (substr str 6)))
  44.                   (progn
  45.                     (setq num (itoa (1+ num)))
  46.                     
  47.                     (while (< (strlen num) 3)
  48.                       (setq num (strcat "0" num)))
  49.                     (entupd
  50.                       (cdr (assoc -1
  51.                              (entmod
  52.                                (subst
  53.                                  (cons 1 (strcat (substr str 1 (- (strlen str) 3)) num))
  54.                                    (assoc 1 eLst) eLst))))))))))))
  55. (princ))
回复

使用道具 举报

3

主题

6

帖子

3

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 12:29:18 | 显示全部楼层
伙计,这真是太好了。非常感谢你。
 
我会尽我所能支持该网站。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:46:29 | 显示全部楼层
 
不客气,Jamathi,谢谢
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-6 01:59 , Processed in 0.886822 second(s), 64 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表