在我看来,有两种方法可以用来做香草。,
1.使用Tblnext直到找到外部参照,唯一的问题是,如果以某种方式删除了外部参照而没有清除,则该项仍将显示在表上
2.使用ssget“X”,您仍然需要迭代选择,直到它找到外部参照。
对于这两个选项,如果找到外部参照,则可以使用while函数终止循环。
现在,如果将两者结合使用,也可以使用每个图纸尺寸块的名称
只是为了好玩,我还为这两者编写了一个快速代码
- (defun xrefet (blk / a f)
- (while (and (setq a (tblnext "BLOCK" (null a)))
- (null f)
- )
- (if (and (assoc 1 a)
- (wcmatch (cdr (assoc 2 a)) blk)
- (ssget "_X" (list (assoc 2 a)))
- )
- (setq f (cdr (assoc 1 a)))
- )
- )
- f
- )
(XREFET“A00,B00,C00,D00”)
- (defun xrefes (blk / ss i sl a en f)
- (if (and
- (setq f nil
- i -1
- ss (ssget "_X"
- (list '(0 . "INSERT")
- (cons 2 blk)
- )
- )
- )
- (setq sl (sslength ss))
- )
- (while (and (null f) (< i sl))
- (setq f
- (if (and (setq
- en (cdr (assoc 2 (entget (ssname ss (setq i (1+ i))))))
- )
- (setq f (assoc 1 (tblsearch "BLOCK" en)))
- )
- (cdr f)
- nil
- )
- )
- )
- )
- )
(外部参照“A00、B00、C00、D00”)
不确定[XREFET]将如何公平对待[XREFES],但我猜想后者更快 |