这是我写的一个旧的,用于读取多个块,但欢迎您根据需要进行修改和更新。
我可以给你我的新工具,但它是更大程序的一部分,所以会更困难。
用法:
它要求一个参考块(需要具有正确的数字值),然后您根据需要选择每个块重新编号。当您选择一个块时,数量会增加一个。
HTH,
- (vl-load-com)
- (defun att (atts / num)
- (foreach for-item (vlax-safearray->list
- (vlax-variant-value
- (vla-getattributes
- (vlax-ename->vla-object atts)
- )
- )
- )
- (cond ((or (= (vla-get-tagstring for-item) "ROOM#")
- (= (vla-get-tagstring for-item) "DOOR#")
- (= (vla-get-tagstring for-item) "240-DOOR#")
- (= (vla-get-tagstring for-item) "999")
- (= (vla-get-tagstring for-item) "1")
- )
- (setq num (vla-get-textstring for-item))
- )
- )
- )
- num
- )
- (defun attup (atts num)
- (foreach for-item (vlax-safearray->list
- (vlax-variant-value
- (vla-getattributes
- (vlax-ename->vla-object atts)
- )
- )
- )
- (cond ((or (= (vla-get-tagstring for-item) "ROOM#")
- (= (vla-get-tagstring for-item) "DOOR#")
- (= (vla-get-tagstring for-item) "240-DOOR#")
- (= (vla-get-tagstring for-item) "999")
- (= (vla-get-tagstring for-item) "1")
- )
- (vla-put-textstring for-item num)
- )
- )
- )
- (vla-update (vlax-ename->vla-object atts))
- )
- (defun c:numinc (/ ent sel cnt)
- (setq ent (car (entsel "\nSelect reference block: ")))
- (cond ((not ent) (princ "\nNothing selected. *INVALID*"))
- (T (setq cnt (att ent)))
- )
- (while ent
- (setvar "ErrNo" 0)
- (cond
- ((not
- (setq sel (car (entsel "\nSelect attribute to update: ")))
- )
- (if (/= 52 (getvar "ErrNo"))
- (princ "\nNo object selected, please try again: ")
- (progn
- (princ "\nRight click detected - Terminate program. ")
- (setq ent nil)
- )
- )
- )
- (T (attup sel (itoa (1+ (atoi cnt)))))
- )
- )
- (princ)
- )
|