;Insert DWG from a folder as blocks
;updates by CAD Studio
(defun c:InsertBlks (/ d doc lst pt pt1 dir b blk blkn ex xx)
 (vl-load-com)
  (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
  (if
    (and (setq
       dir (vl-filename-directory
         (getfiled "Select a DWG for folder" (getvar 'dwgprefix) "dwg" 8)
           )
     )
     (setq lst (vl-directory-files dir "*.dwg"))
	 (setq xx (princ (strcat "\n" (itoa (length lst)) " blocks found")))
     (setq pt1 (getpoint "\nSelect ins.point for first block: "))
     (setq d
        (distance (getpoint pt1 "\nSelect distance to space blocks (or 0,0): ")
              pt1
        )
     )
	 (setq ex (= "Y" (strcase (getstring "\nExplode inserted blocks? [Y/N] <N>: "))) xx T)
    )
     (foreach b    lst
	   (princ (strcat "\n" b " "))
       (setq blk (vla-insertblock
       (if (= (getvar 'cvport) 1)
         (vla-get-paperspace doc)
         (vla-get-modelspace doc)
       )
     (vlax-3d-point (setq pt1 (polar pt1 0.0 d)))
     (strcat dir "\\" b)
     1
     1
     1
     0.0
       ));insert, setq
	  (if ex (progn
	    (princ " exploding")
	    (setq blkn (vla-get-effectivename blk))
		(vl-catch-all-apply 'vla-explode (list blk)) (vl-catch-all-apply 'vla-delete (list blk))
		(vl-catch-all-apply 'vla-delete (list (vla-item (vla-get-blocks doc) blkn)))
	  ))
    ); for
  )
  (princ "Done.")
  (princ)
)