This only assumes the horizontal and vertical lines are drawn in UCS, and not WCS:
(defun c:vmirror nil (OnePointMirror '(00 10 00)))
(defun c:hmirror nil (OnePointMirror '(10 00 00)))
(defun OnePointMirror (dir / ss pt)
(and
(setq ss (ssget "_:L"))
(setq pt (getpoint "\nSpecify base point <exit>: "))
(command "_mirror" ss "" "_non" pt "_non" (mapcar '+ dir pt) "No") ;; <--- Change to Yes to delete source object, or \\ to prompt user.
(while (not (zerop (getvar "cmdactive"))) (command ""))
)
(princ)
)
And while this may be off the OP, this might be worth looking at as well: Quick Mirror.