MessatsuX 发表于 2022-9-12 18:30:08

使块引用名称 Unqiue

我得到了一张我必须修改的图纸。问题是,在此图中,有几个具有名称的块引用。
即我有大约 100 个块引用调用 "WcLux" 。是否有可能使用脚本使块引用的名称唯一:
WcLux_1, WcLux2, ... WcLux100

BIGAL 发表于 2022-9-12 19:05:24

这应该有效。如果它们的属性可能必须使用爆发而不是爆炸。
- 编辑
也不会检查 bylayer 或 byblock 颜色,因此爆炸后可能会发生变化。
;;----------------------------------------------------------------------------;;
;; make unique block names
(defun C:UB (/ blk blkname ss en name ss1 ptslst LL UR MPT)
(vl-load-com)
(setq ss1 (ssadd)
      blk (car (entsel "\nSelect Block")) ;no error testing so make sure you select a block
      blkname (cdr (assoc 2 (entget blk)))
      i 1
)
(if (and (setq ss (ssget "_X" (list '(0 . "INSERT") (cons 2 blkname) '(410 . "Model")))) (> (sslength ss) 1))
    (foreach blk (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
      (setq LastEnt (entlast))
      (setq LL nil UR nil MPT nil ptslst nil)
      (command "_.Explode" blk)
      (if (setq en (entnext LastEnt))
      (while en
          (ssadd en SS1)
          (setq obj (vlax-ename->vla-object en))
          (vla-getboundingbox obj 'minpt 'maxpt)
          (setq ptslst (cons (vlax-safearray->list minpt) ptslst)
                ptslst (cons (vlax-safearray->list maxpt) ptslst)
          )
          (setq en (entnext en))
      )
      )
      (setq LL (apply 'mapcar (cons 'min ptslst))
            UR (apply 'mapcar (cons 'max ptslst))
            MPT (mapcar '/ (mapcar '+ LL UR) '(2 2 2))
      )
      (while (tblsearch "BLOCK" (strcat blkname "-" (itoa i)))
      (setq i (1+ i))
      )
      (setq name (strcat blkname "-" (itoa i)))
      (vl-cmdf "_.Block" name "_non" MPT SS1 "")
      (vl-cmdf "_.Insert" name "_non" MPT 1 1 0)
    )
)
)

MessatsuX 发表于 2022-9-12 19:25:39

如果您不在乎名称是什么,这将使它们独一无二:(defun c:ub (/ b s)
(if (and (setq b (car (entsel "\nSelect Block")))
           (= "INSERT" (cdr (assoc 0 (entget b))))
           (setq s (ssget "_X" (list '(0 . "INSERT") (assoc 2 (entget b)))))
      )
    (foreach e (vl-remove-if 'listp (mapcar 'cadr (ssnamex s)))
      (vla-converttoanonymousblock (vlax-ename->vla-object e))
    )
)
(princ)
)
(vl-load-com)

SLW210 发表于 2022-9-12 19:41:39

看看
页: [1]
查看完整版本: 使块引用名称 Unqiue