@Prashanthr hi,
check BLKDEFALN command.
Your blocks FA-2, FA-3 insertion base point are not synced with FA-1 insertion base point, this results RA-1 is laid not in place 😫
the program copies the value of all matches attributes (not only test)
enjoy
Moshe
(defun c:blkdefaln (/ _insert_block ; local functions
savAttdia savAttreq ss data^ dat0 dat1 ename1 AcDbBlkRef0 AcDbBlkRef1 elis1 p0 sx sy rot AcDbAttrib0 AcDbAttrib1 )
(defun _collect (p)
(vl-sort
(mapcar
(function
(lambda (ename / elist)
(setq elist (entget ename))
(cons (cdr (assoc '2 elist)) ename)
); lambda
); function
(vl-remove-if 'listp (mapcar 'cadr (ssnamex p)))
); mapcar
(function (lambda (e0 e1) (< (car e0) (car e1))))
)
); _collect
; here start c:blkdefaln
(setvar "cmdecho" 0)
(command "._undo" "_begin")
(setq savAttdia (getvar "attdia"))
(setq savAttreq (getvar "attreq"))
(setvar "attdia" 0)
(setvar "attreq" 0)
(if (setq ss (ssget '((0 . "insert") (2 . "FA-#") (66 . 1))))
(progn
(setq data^ (_collect ss))
(setq dat0 (nth 0 data^))
(setq AcdbBlkRef0 (vlax-ename->vla-object (cdr dat0)))
(foreach dat1 (cdr data^)
(setq ename1 (cdr dat1))
(setq AcdbBlkRef1 (vlax-ename->vla-object ename1))
(setq elist1 (entget (cdr dat1)))
(setq p0 (cdr (assoc '10 elist1)))
(setq sx (cdr (assoc '41 elist1)))
(setq sy (cdr (assoc '42 elist1)))
(setq rot (cdr (assoc '50 elist1)))
(command "._insert" (car dat0) "_None" p0 sx sy (angtos rot 0 4))
(command "._chprop" "_si" (entlast) "_layer" (cdr (assoc '8 elist1)) "")
(setq AcdbBlkRef2 (vlax-ename->vla-object (entlast)))
(vl-some
(function
(lambda (AcDbAttrib1 AcDbAttrib2)
(if (eq
(strcase (vla-get-tagString AcDbAttrib1))
(strcase (vla-get-tagString AcDbAttrib2))
)
(vla-put-textString AcDbAttrib2 (vla-get-textString AcDbAttrib1))
); if
); lambda
); function
(vlax-invoke AcDbBlkRef1 'GetAttributes) (vlax-invoke AcDbBlkRef2 'GetAttributes)
); vl-some
(vlax-release-object AcDbBlkRef2)
(vlax-release-object AcDbBlkRef1)
(entdel ename1)
); foreach
(vlax-release-object AcdbBlkRef0)
); progn
); if
(setvar "attreq" savAttreq)
(setvar "attdia" savAttdia)
(command "._undo" "_end")
(setvar "cmdecho" 1)
(princ)
); c:blkdefaln