EXTRIM

EXTRIM

sigmmadesigner
Advocate Advocate
634 Views
2 Replies
Message 1 of 3

EXTRIM

sigmmadesigner
Advocate
Advocate

AutoCAD 2024 Ajuda | EXTRIM (Express Tool) | Autodesk

 

GIVEN RECTANGLE THAT RECEIVES POINTS P1 P2 P3 AND P4
(command "_.PLINE" "_non" p1 "_non" p2 "_non" p3 "_non" p4 "_C")
(setq rectEnt (entlast)) ;; saves the extra rectangle drawn

;finds the reference of what is the center and the external
cross between p1 and p3)
(setq ssREC (ssget "C" p1 p3))

;; Checks if there are objects to cut and valid rectangle
(if (and rectEnt ssREC )
(progn
;; Uses the rectangle as limit for EXTRIM and ssREC as reference to cut objects that will be inside the rectangle
(command "_.EXTRIM" rectEnt "" ssREC "")
)
)

;any suggestions on how to make this work?

0 Likes
Accepted solutions (1)
635 Views
2 Replies
Replies (2)
Message 2 of 3

CodeDing
Mentor
Mentor
Accepted solution

@sigmmadesigner ,

 

This should work for you. Don't forget to edit this code to include your P1-P4 point variables.

(defun c:TEST ( / LWPoly err p1 p2 p3 p4 eRect ptTrim)
  ;; helper function
  (defun LWPoly (lst cls)
    (entmakex
      (append
        (list (cons 0 "LWPOLYLINE") (cons 100 "AcDbEntity") (cons 100 "AcDbPolyline")
              (cons 90 (length lst)) (cons 70 cls)
        )
        (mapcar (function (lambda (p) (cons 10 p))) lst)
      )
    );entmakex
  )
  ;; Load Express Tools (2025+)
  (acet-load-expresstools)
  ;; etrim check
  (setq err
    (not
      (or (member "ETRIM" (atoms-family 1))
          (or (load "extrim.lsp" nil)
              (member "ETRIM" (atoms-family 1))
          );or
      );or 
    );not
  );setq
  (if err
    (progn (alert (princ "\nCould not load 'etrim.lsp'.")) (exit))
  );if
  ;; ----- set your P1,P2,P3,P4 variables here -----
  ;;
  ;; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  (setq eRect (LWPoly (list p1 p2 p3 p4) 1))
  (setq ptTrim (polar p1 (angle p1 p3) (* 0.5 (distance p1 p3))))
  (etrim eRect ptTrim)
  (prompt "\nComplete!")
  (princ)
);defun

 

Best,

~DD

0 Likes
Message 3 of 3

sigmmadesigner
Advocate
Advocate

UNFORTUNATELY, BECAUSE IT DEPENDS
;; LOAD EXPRESS TOOLS (2025+), THE MOST VIABLE SOLUTION WAS TO CREATE A FENCE FROM THE TRIM ATTRIBUTE, BEFORE I WAS TRYING TO FOLLOW THE EDGES OF THE RECTANGLE, BUT SINCE THE RECTANGLE IS THE SELECTION ITSELF, I JUST NEEDED A DIAGONAL, AND IT WORKED


(command "_.PLINE" "_non" p1 "_non" p2 "_non" p3 "_non" p4 "_C");; DRAW AN EXTRA RECTANGLE AND SAVE THE ENTITY
(setq rectFENCE(entlast)) ;; SAVE THE EXTRA RECTANGLE DRAWN THAT WILL BE CUT
(setq ssREC (ssget "F" (list p1 p3 ))) ;; FENCE SELECTION WITH CLOSED LIST
(if ssREC (progn (command "_.TRIM" rectFENCE "" ssREC "")));; TRIM USING THE VECTOR P1 P3

0 Likes