Originally Posted by
Pinnacle
...I would like to transfer the default attribute value of multiple blocks into 1 single block by using a window selection...
Did you mean THE default value of the attribute definition? or the current value of the attribute of the selected blocks?
EDIT: not sure which one but if its the latter (which makes more sense)
Code:
(Defun c:topost ( / _AttFunc blnmaes target 0SHS sp7 SP12 alldata)
(defun _AttFunc (en lst / vals v)
(mapcar (function (lambda (at)
(setq vals (list (vla-get-tagstring at)(vla-get-textstring at)))
(if (and lst (setq v (assoc (car vals) lst)))
(vla-put-textstring at (cadr v))) vals))
(vlax-invoke en 'Getattributes)
)
)
(setq blnmaes '("`*U*" "POST1.1" "75x75x6.0SHS" "SP7" "SP12" ))
(if (setq ssb (ssget (list '(0 . "INSERT")'(66 . 1)
(cons 2 (apply 'strcat (mapcar '(lambda (x)
(strcat x ",")) blnmaes))))
)
)
(progn
(setq blnmaes (Cdr blnmaes))
(repeat (setq i (sslength ssb))
(setq e (vlax-ename->vla-object (ssname ssb (setq i (1- i)))))
(cond
( (eq (setq bn (vla-get-effectivename e)) (Car blnmaes))
(setq target (list (_AttFunc e nil) e))
)
( (eq bn (cadr blnmaes))
(setq 0SHS (_AttFunc e nil))
)
( (eq bn (caddr blnmaes))
(setq sp7 (_AttFunc e nil))
)
( (eq bn (cadddr blnmaes))
(setq SP12 (_AttFunc e nil))
)
)
)
(and target 0SHS sp7 SP12
(setq alldata (apply 'append (list 0SHS sp7 SP12)))
(_AttFunc (cadr target)
(mapcar '(lambda (v)
(list (Car v) (cadr (assoc (Car v) alldata))))
(car target)))
)
)
)
(princ)
)
Keep in mind that all 4 blocks need to be selected.
HTH