(defun bf0err (msg) (princ msg) (if olderr (setq *error* olderr)) (princ "\nSomething went wrong. Please try again. ") (if os (setq osmode os)) (command "_.undo" "_end") ) (defun c:bf0 (/ os ent elist ip inslay bname rot x y z newx newy newz newrot newlist sset) (command "_.undo" "_g") (setq olderr *error* *error* bf0err) (setq os (getvar "osmode")) (setvar "osmode" 0) (setq ent (entsel)) (setq elist (entget (car ent))) (setq ip (cdr (assoc 10 elist))) (setq inslay (cdr (assoc 8 elist))) (setq bname (cdr (assoc 2 elist))) (setq rot (assoc 50 elist)) (setq x (assoc 41 elist)) (setq y (assoc 42 elist)) (setq z (assoc 43 elist)) (setq newx (cons 41 1.0)) (setq newy (cons 42 1.0)) (setq newz (cons 43 1.0)) (setq newrot (cons 50 0.0)) (setq newlist (subst newx x elist)) (setq newlist (subst newy y newlist)) (if z (setq newlist (subst newz z newlist))) (setq newlist (subst newrot rot newlist)) (entmod newlist) (command "_.explode" (car ent)) (setq sset (ssget "p")) (command "_.chprop" sset "" "LA" "0" "LT" "BYLAYER" "c" "bylayer" "") (if (tblsearch "BLOCK" bname) (command "_.block" bname "y" (trans ip 0 1) sset "") (command "_.block" bname (trans ip 0 1) sset "") ) (setvar "clayer" inslay) (command "_.insert" bname (trans ip 0 1) (cdr x)(cdr y) (rtos (rtd (cdr rot)) 2 6)) (setq osmode os) (setq *error* olderr) (command "_.undo" "_end") (princ) )