乐筑天下

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

[编程交流] 使块引用名称 Unqiue

[复制链接]

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-9-12 18:30:08 | 显示全部楼层 |阅读模式
我得到了一张我必须修改的图纸。问题是,在此图中,有几个具有名称的块引用。
即我有大约 100 个块引用调用 "WcLux" 。是否有可能使用脚本使块引用的名称唯一:
WcLux_1, WcLux2, ... WcLux100
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-9-12 19:05:24 | 显示全部楼层
这应该有效。如果它们的属性可能必须使用爆发而不是爆炸。
- 编辑
也不会检查 bylayer 或 byblock 颜色,因此爆炸后可能会发生变化。
  1. ;;----------------------------------------------------------------------------;;
  2. ;; make unique block names
  3. (defun C:UB (/ blk blkname ss en name ss1 ptslst LL UR MPT)
  4.   (vl-load-com)
  5.   (setq ss1 (ssadd)
  6.         blk (car (entsel "\nSelect Block")) ;no error testing so make sure you select a block
  7.         blkname (cdr (assoc 2 (entget blk)))
  8.         i 1
  9.   )
  10.   (if (and (setq ss (ssget "_X" (list '(0 . "INSERT") (cons 2 blkname) '(410 . "Model")))) (> (sslength ss) 1))
  11.     (foreach blk (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
  12.       (setq LastEnt (entlast))
  13.       (setq LL nil UR nil MPT nil ptslst nil)
  14.       (command "_.Explode" blk)
  15.       (if (setq en (entnext LastEnt))
  16.         (while en
  17.           (ssadd en SS1)
  18.           (setq obj (vlax-ename->vla-object en))
  19.           (vla-getboundingbox obj 'minpt 'maxpt)
  20.           (setq ptslst (cons (vlax-safearray->list minpt) ptslst)
  21.                 ptslst (cons (vlax-safearray->list maxpt) ptslst)
  22.           )
  23.           (setq en (entnext en))
  24.         )
  25.       )
  26.       (setq LL (apply 'mapcar (cons 'min ptslst))
  27.             UR (apply 'mapcar (cons 'max ptslst))
  28.             MPT (mapcar '/ (mapcar '+ LL UR) '(2 2 2))
  29.       )
  30.       (while (tblsearch "BLOCK" (strcat blkname "-" (itoa i)))
  31.         (setq i (1+ i))
  32.       )
  33.       (setq name (strcat blkname "-" (itoa i)))
  34.       (vl-cmdf "_.Block" name "_non" MPT SS1 "")
  35.       (vl-cmdf "_.Insert" name "_non" MPT 1 1 0)
  36.     )
  37.   )
  38. )


回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-9-12 19:25:39 | 显示全部楼层
如果您不在乎名称是什么,这将使它们独一无二:
  1. (defun c:ub (/ b s)
  2.   (if (and (setq b (car (entsel "\nSelect Block")))
  3.            (= "INSERT" (cdr (assoc 0 (entget b))))
  4.            (setq s (ssget "_X" (list '(0 . "INSERT") (assoc 2 (entget b)))))
  5.       )
  6.     (foreach e (vl-remove-if 'listp (mapcar 'cadr (ssnamex s)))
  7.       (vla-converttoanonymousblock (vlax-ename->vla-object e))
  8.     )
  9.   )
  10.   (princ)
  11. )
  12. (vl-load-com)


回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-9-12 19:41:39 | 显示全部楼层
看看
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-3 18:41 , Processed in 0.895542 second(s), 60 queries .

© 2020-2025 乐筑天下

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