I don't know if this new code is 100% correct, so please test it... I thought I could make something different than with just QSELECT - blocks by name => DRAWORDER...
(defun c:blkstotop ( / _selblks adoc )
(vl-load-com)
(defun _selblks ( / bln ss pbln )
(setq bln (dos_listbox "BLOCKS" "Select block to place residing entities to top" (ai_table "BLOCK" 4)))
(while (eq (vla-get-isxref (vla-item (vla-get-blocks adoc) bln)) :vlax-true)
(prompt "\nSelected block name refers to Xref... Please choose different name again...")
(princ)
(setq bln (dos_listbox "BLOCKS" "Select block to place residing entities to top" (ai_table "BLOCK" 4)))
)
(setq ss (ssget "_A" (list '(0 . "INSERT") (cons 2 bln) (cons 410 (if (= 1 (getvar 'cvport)) (getvar 'ctab) "Model")))))
(if (null ss)
(progn
(setq pbln (cdr (assoc 2 (entget (cdr (assoc 330 (entget (cdr (assoc 331 (reverse (entget (cdr (assoc 330 (entget (tblobjname "BLOCK" bln)))))))))))))))
(if (eq (vla-get-isxref (vla-item (vla-get-blocks adoc) pbln)) :vlax-false)
(progn
(command "_.BEDIT" pbln)
(LM:movetotop adoc (ssget "_A" (list '(0 . "INSERT") (cons 2 bln) (cons 410 (if (= 1 (getvar 'cvport)) (getvar 'ctab) "Model")))))
(command "_.BCLOSE" "")
)
(progn
(prompt "\nParent reference entity of selected block belongs to Xref entity... Please choose different name again...")
(princ)
(_selblks)
)
)
)
ss
)
)
(setq adoc (vla-get-activedocument (vlax-get-acad-object)))
(LM:movetotop adoc (_selblks))
(princ)
)
(defun c:blkstobottom ( / _selblks adoc )
(vl-load-com)
(defun _selblks ( / bln ss pbln )
(setq bln (dos_listbox "BLOCKS" "Select block to place residing entities to bottom" (ai_table "BLOCK" 4)))
(while (eq (vla-get-isxref (vla-item (vla-get-blocks adoc) bln)) :vlax-true)
(prompt "\nSelected block name refers to Xref... Please choose different name again...")
(princ)
(setq bln (dos_listbox "BLOCKS" "Select block to place residing entities to bottom" (ai_table "BLOCK" 4)))
)
(setq ss (ssget "_A" (list '(0 . "INSERT") (cons 2 bln) (cons 410 (if (= 1 (getvar 'cvport)) (getvar 'ctab) "Model")))))
(if (null ss)
(progn
(setq pbln (cdr (assoc 2 (entget (cdr (assoc 330 (entget (cdr (assoc 331 (reverse (entget (cdr (assoc 330 (entget (tblobjname "BLOCK" bln)))))))))))))))
(if (eq (vla-get-isxref (vla-item (vla-get-blocks adoc) pbln)) :vlax-false)
(progn
(command "_.BEDIT" pbln)
(LM:movetobottom adoc (ssget "_A" (list '(0 . "INSERT") (cons 2 bln) (cons 410 (if (= 1 (getvar 'cvport)) (getvar 'ctab) "Model")))))
(command "_.BCLOSE" "")
)
(progn
(prompt "\nParent reference entity of selected block belongs to Xref entity... Please choose different name again...")
(princ)
(_selblks)
)
)
)
ss
)
)
(setq adoc (vla-get-activedocument (vlax-get-acad-object)))
(LM:movetobottom adoc (_selblks))
(princ)
)
Regards, M.R.