Well, that's what EXTRIM does pretty fast. It does not draw a rectangle, but still.
(vl-load-com) (defun c:CornerCut (/ *error* osm p r m) (defun *error* (errmsg) (if (not (wcmatch errmsg "Function cancelled,quit / exit abort,console break,end")) (princ (strcat "\nError: " errmsg))) (if osm (setvar 'osmode osm)) (princ)) (setq osm (getvar 'osmode)) (setvar 'osmode 0) (and (setq p (getpoint "\nFirst corner: ")) (setq r (getcorner p "\nSecond corner: ")) (setq m (mapcar '/ (mapcar '+ p r) '(2 2))) (vl-cmdf "_.rectang" p r) (setq *cc-rectangle-to-remove* (entlast)) (vla-sendcommand (vla-get-activedocument (vlax-get-acad-object)) (strcat "extrim\r_l\r" (rtos (car m) 2 6) "," (rtos (cadr m) 2 6) "\r" "_.erase\r!*cc-rectangle-to-remove*\r\r")) ) (*error* "end") )
That's a bit tricky... e can't be localized therefore it was renamed to *cc-rectangle-to-remove* and left as a global.