I rec'd a message that you replied, but that reply is gone. Here is a quick routine to do what you asked. If you want to expand on it more there are several options. This one will just have you pick the block and will just insert it at 0,0,0 for you and then just keep prompting you to select a new block based on the path of the last block you selected. The first time the dialog pops up it uses the current drawings path.
(defun c:IOB( / defaultpath currattreq blocktoinsert)
(setq defaultpath (getvar "DWGPREFIX")
currattreq (getvar "ATTREQ")
)
(while (setq blktoinsert (getfiled "Select Block to insert: " defaultpath "dwg" 16))
(setvar "ATTREQ" 0)
(command "-insert" blktoinsert (list 0.0 0.0 0.0) "" "" "")
(setvar "ATTREQ" currattreq)
(setq defaultpath (strcat (vl-filename-directory blktoinsert) "\\"))
)
)
Some thoughts for improving or reducing the user input.
If you want some different options you could consider a text file with the blocks you wish to insert and just have the routine read the file and insert them, no more user picks needed. If you want all the blocks in the directory, you could select the first file and then have the routine just insert every dwg file in that folder.
Good luck,