Give this piece of code a try. I'm sure it is not the cleanest or shortest way of writing a program to perform the task, but it makes a cross in a rectangle.
Code:
(defun c:cross (/ pnt1 pnt2 pnt3 pnt4 lst e len n e1)
(setq e (entget (car (entsel))))
;get the entity list
(setq len (length e))
;get the length of the list
(setq n 0)
;set counter to zero
(setq lst nil)
(repeat len
;repeat for the length of the entity list
(setq e1 (car (nth n e)))
;get each item in the entity list
;and strip the entity code number
(if (= e1 10)
;check for code 10 (vertex)
(progn
;if it's group 10 do the following
(terpri)
;new line
(setq lst (if lst (append lst (list(cdr (nth n e))))(list(cdr (nth n e)))))
);progn
);if
(setq n (1+ n))
;increment the counter
);repeat
(mapcar 'set '(pnt1 pnt2 pnt3 pnt4) lst)
(setq pnt1 (strcat(rtos(car pnt1))"," (rtos(cadr pnt1)) ",0"))
(setq pnt2 (strcat(rtos(car pnt2)) ","(rtos(cadr pnt2))",0"))
(setq pnt3 (strcat(rtos(car pnt3)) ","(rtos(cadr pnt3))",0"))
(setq pnt4 (strcat(rtos(car pnt4)) ","(rtos(cadr pnt4))",0"))
(command "line" pnt1 pnt3 "")
(command "line" pnt2 pnt4 "")
(princ)
);defun
(princ)
Note this only works on rectangles drawn with the rectangle command or polylines converted to LWPOLYLINES. I did not put anythign in the code to check for this at the beginning.