(defun getplinepointlist(ename) (setq ent(entget ename)) (setq ptlist (list)) (while (setq pt(assoc 10 ent)) (setq ptlist (append ptlist (list pt))) (setq ent(cdr(member pt ent))) ) (defun c:rect_quads() (command "undo" "Be") (setq ents (ssget '((0 . "LWPOLYLINE")))) (setq cnt -1) (repeat (sslength ents) (getplinepointlist (ssname ents (setq cnt (1+ cnt)))) (setq m1(polar (cdr(nth 0 ptlist)) (angle (cdr(nth 0 ptlist)) (cdr(nth 1 ptlist))) (/(distance (cdr(nth 0 ptlist))(cdr(nth 1 ptlist))) 2))) (setq m2(polar (cdr(nth 1 ptlist)) (angle (cdr(nth 1 ptlist)) (cdr(nth 2 ptlist))) (/(distance (cdr(nth 1 ptlist))(cdr(nth 2 ptlist))) 2))) (setq m3(polar (cdr(nth 2 ptlist)) (angle (cdr(nth 2 ptlist)) (cdr(nth 3 ptlist))) (/(distance (cdr(nth 2 ptlist))(cdr(nth 3 ptlist))) 2))) (setq m4(polar (cdr(nth 3 ptlist)) (angle (cdr(nth 3 ptlist)) (cdr(nth 0 ptlist))) (/(distance (cdr(nth 3 ptlist))(cdr(nth 0 ptlist))) 2))) (setq c1(polar (cdr(nth 0 ptlist)) (angle (cdr(nth 0 ptlist)) (cdr(nth 2 ptlist))) (/(distance (cdr(nth 0 ptlist))(cdr(nth 2 ptlist))) 2))) (command "pline" (cdr(nth 0 ptlist)) m4 c1 m1 "cl") (command "pline" (cdr(nth 1 ptlist)) m1 c1 m2 "cl") (command "pline" (cdr(nth 2 ptlist)) m3 c1 m2 "cl") (command "pline" (cdr(nth 3 ptlist)) m4 c1 m3 "cl") );repeat (command "erase" ents "") (command "Undo" "end") )