写起来很有趣:
- (defun C:test ( / enx tag n nm SS i o )
- (and
- (setq enx (car (nentsel "\nPick Attribute from block: ")))
- (member '(0 . "ATTRIB") (setq enx (entget enx)))
- (setq tag (cdr (assoc 2 enx))) '(87 114 105 116 116 101 110 32 98 121 32 71 114 114 114)
- (setq n (cond ( (getreal (strcat "\nValue to add <1>: ")) ) ( 1 ) ))
- (princ (strcat "\nSelect "" (setq nm (vla-get-EffectiveName (vlax-ename->vla-object (cdr (assoc 330 enx))))) "" blocks: "))
- (setq SS (ssget "_:L" (list '(0 . "INSERT")(cons 2 (strcat "`**," nm)) '(66 . 1))))
- (repeat (setq i (sslength SS))
- (and (= nm (vla-get-EffectiveName (setq o (vlax-ename->vla-object (ssname SS (setq i (1- i)))))))
- (vl-some
- (function
- (lambda (x / v)
- (cond
- ( (not (vlax-read-enabled-p x)) nil)
- ( (/= tag (vla-get-TagString x)) nil)
- ( (vl-catch-all-error-p (setq v (vl-catch-all-apply 'read (list (vla-get-TextString x))))) )
- ( (not (vlax-write-enabled-p x)) )
- ( (progn (vla-put-TextString x (vl-string-right-trim "." (vl-string-right-trim "0" (vl-prin1-to-string (+ n v))))) T) )
- )
- )
- )
- (vlax-invoke o 'GetAttributes)
- )
- )
- )
- )
- (princ)
- )
- (vl-load-com)(princ)
|