Test this:
;; CAB 04.25.08
;; Combine blocks using combined names
;; Dependant on block name starting with plan_PK-07 or elev_PK-07
(defun c:CBlock (/ bent bent2 bname bname2 pt ss LibPrefix *error*)
(defun *error* (msg)
(if (not
(member msg '("console break" "Function cancelled" "quit / exit abort" "")))
(princ (strcat "\nError: " msg))
)
(and bent (redraw (car bent) 4))
(and bent2 (redraw (car bent2) 4))
(princ)
) ; end error function
(setq LibPrefix "PK-07")
(if
(and
(setq bent (entsel "\nSelect main block for name."))
(null (redraw (car bent) 3))
(setq bname (cdr (assoc 2 (entget (car bent)))))
(cond
((wcmatch bname "_*") ; plan view
(setq bname (vl-string-subst "group_" "_" bname))
(setvar "clayer" "V-EXTRACT-NEW")
)
((wcmatch bname "elev_*")
(setq bname (vl-string-subst "elevgroup_" "elev_" bname))
(setvar "clayer" "0")
)
)
(setq bname (vl-string-subst "_" "." bname) ; change . to _
bname (vl-string-right-trim "_M" bname) ; remove M & _
)
(setq bent2 (entsel "\nSelect sub block for name."))
(null (redraw (car bent2) 3))
(setq bname2 (cdr (assoc 2 (entget (car bent2)))))
(cond
((wcmatch bname2 "_*")
(setq bname2 (vl-string-subst "" (strcat "_" LibPrefix) bname2)) ; remove the prefix
)
((wcmatch bname2 "elev_*")
(setq bname2 (vl-string-subst "" (strcat "elev_" LibPrefix) bname2)) ; remove the prefix
)
)
(setq bname2 (vl-string-right-trim "_LRM" bname2) ; remove suffix _, L, R, M
bname2 (vl-string-left-trim "_." bname2) ; remove prefix _ or .
bname (strcat bname "_" bname2)
)
(princ (strcat "\nNew Block Name \"" bname "\""))
(princ "\nSelect objects to makup the new block.")
(setq ss (ssget))
(setq pt (getpoint "\nPick Insert point."))
)
(if (and ss pt (listp pt))
(if (tblsearch "BLOCK" bname)
(alert "Block Combo already exist.")
(command "-block" bname "non" pt ss ""
"-insert" bname "non" pt "" "" "")
)
)
)
(*error* "")
(princ)
)