POSSIBLE TO WRITE A LISP FOR MULTIPLE CUT

POSSIBLE TO WRITE A LISP FOR MULTIPLE CUT

smallƑish
Advocate Advocate
375 Views
4 Replies
Message 1 of 5

POSSIBLE TO WRITE A LISP FOR MULTIPLE CUT

smallƑish
Advocate
Advocate

Is this possible to make multiple trim this way? 

smallish_0-1693693517298.png

 

0 Likes
Accepted solutions (2)
376 Views
4 Replies
Replies (4)
Message 2 of 5

ВeekeeCZ
Consultant
Consultant
Accepted solution

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")
  )

 

Message 3 of 5

smallƑish
Advocate
Advocate
(entdel last-object)

This is not working to delete the rectangle after the trim finish.

0 Likes
Message 4 of 5

ВeekeeCZ
Consultant
Consultant
Accepted solution

That's a bit tricky... e can't be localized therefore it was renamed to *cc-rectangle-to-remove* and left as a global.

Message 5 of 5

smallƑish
Advocate
Advocate
I've got it! I genuinely appreciate your ingenious solution. Thank you so much.
0 Likes