Use pp_SetAttsAsDottedPairs to get the original values into a list and then use pp_XchgAttsFromDottedPairs to set those values in the new titleblock.
;------------------------------------------------------------------------------
;pp_SetAttsAsDottedPairs:
;
;Arguments: <Entity name: 400e1978>
;Returns: (("DATE" . "20020304")("TITLE" . "some drawing"))
;Dependencies: pp_GetEntVal
;------------------------------------------------------------------------------
(defun pp_SetAttsAsDottedPairs (BLKWATTS / ALIST ATTAG ATTTXT MORE TBNEXT
TITLENT)
(setq MORE T
TITLENT (entnext BLKWATTS))
(while MORE
(setq TBNEXT (entget TITLENT))
(cond ((= (pp_EntVal TBNEXT 0) "ATTRIB")
(setq ATTAG (pp_GetEntVal TBNEXT 2)
ATTTXT (pp_GetEntVal TBNEXT 1)
ALIST (append (list (cons ATTAG ATTTXT))ALIST)
TITLENT (entnext TITLENT))
) ;cond1
((= (pp_GetEntVal TBNEXT 0) "SEQEND") (setq MORE NIL))
(t (setq TITLEENT (entnext TITLEENT)))
) ;cond
) ;while
ALIST
) ;defun
;------------------------------------------------------------------------------
;pp_XchgAttsFromDottedPairs: Looks for matching tags and sets string in block
;
;Arguments: <Entity name: 400e1978> (("DATE" . "20020304")("TITLE" . "drwng"))
;Returns:
;Dependencies: pp_GetEntVal, pp_AttMod
;------------------------------------------------------------------------------
(defun pp_XchgAttsFromDottedPairs (BLKWATTS ALIST / ATTAG ATTTXT INLIST
MORE TBNEXT TITLENT)
(setq MORE T
TITLENT (entnext BLKWATTS))
(while MORE
(setq TBNEXT (entget TITLENT))
(cond ((= (pp_GetEntVal TBNEXT 0) "ATTRIB")
(setq ATTAG (pp_GetEntVal TBNEXT 2)
ATTTXT (pp_GetEntVal TBNEXT 1)
TITLENT (entnext TITLENT))
(if (setq INLIST (assoc ATTAG ALIST)) ;make sure tag exists
(pp_AttMod TBNEXT (cdr INLIST))
) ;if
) ;cond1
((= (pp_GetEntVal TBNEXT 0) "SEQEND") (setq MORE NIL))
(t (setq TITLEENT (entnext TITLEENT)))
) ;cond
) ;while
(command "REGEN") ;For on screen updating
) ;defun
;------------------------------------------------------------------------------
;pp_AttMod
;------------------------------------------------------------------------------
(defun pp_AttMod (E ATT)
(setq E (subst (cons 1 ATT) (assoc 1 E) E))
(entmod E)
(entupd E)
)
;------------------------------------------------------------------------------
;pp_GetEntVal
;------------------------------------------------------------------------------
(defun pp_GetEntVal (E NUM)
(cdr (assoc NUM E))
)
;------------------------------------------------------------------------------
;pp_SetEntVal
;------------------------------------------------------------------------------
(defun pp_SetEntVal (E TAG NEWVAL)
(setq E (subst (cons TAG NEWVAL) (assoc TAG E) E))
(entmod E)
(entupd E)
)
"Whether you think that you can, or that you can't, you are usually right "
.. Henry Ford