Snownut 发表于 2022-7-6 00:40:56

flyfox1047 发表于 2022-7-6 00:48:03

Try this:

(defun c:ltr (/ CMDECHO F3 OS F8 OTH P1 LOOP GR P2 DP SE2 SE1 N K EN ENL)(defun *error* (s)   (princ s)   (setvar 'cmdecho cmdecho)   (setvar 'osmode os)   (setvar 'ORTHOMODE oth)   ) (setq cmdecho (getvar 'cmdecho)) (setq f3 (getvar 'osmode) os f3) (setq f8 (getvar 'ORTHOMODE) oth f8) (setvar 'cmdecho 0)   (initget 7) (setq p1 (getpoint "\nFirst point:")) (setq loop t) (while loop   (setq gr (grread t 15))   (redraw)   (cond   ((= 5 (car gr)) (setq p2 (cadr gr)) (if (= 1 f8)   (progn   (setq       dp (mapcar '-                  (apply 'mapcar (cons 'max (list p1 p2)))                  (apply 'mapcar (cons 'min (list p1 p2)))          )   )   (if (> (car dp) (cadr dp))       (setq p2 (list (car p2) (cadr p1)))       (setq p2 (list (car p1) (cadr p2)))       )   )   )      (grdraw p1 p2 1 -1)      )   ((= 3 (car gr))      (setq loop nil)      (setq p2 (cadr (grread t 15)))      (if (= 1 f8)   (progn   (setq       dp (mapcar '-                  (apply 'mapcar (cons 'max (list p1 p2)))                  (apply 'mapcar (cons 'min (list p1 p2)))          )   )   (if (> (car dp) (cadr dp))       (setq p2 (list (car p2) (cadr p1)))       (setq p2 (list (car p1) (cadr p2)))       )   )   )      )   ((equal gr '(2 6));            (if (< f316384)            (progn (setq f3 (+ f3 16384))(prompt "\n"))            (progn (setq f3 (- f3 16384))(prompt "\n"))             )          (setvar "OSMODE" f3)         )               ((equal gr '(2 15));         (if (= f8 0)            (progn(setq f8 1)(prompt "\n"))            (progn(setq f8 0)(prompt "\n"))             )         (setvar "orthomode" f8)         )   )   ) (setq se2 (ssget "f" (list p1 p2))) (if (null se2) (abcdefg)) (command "line" "non" p1 "non" p2 "") (setq se1 (entlast)) (grdraw p1 p2 1 -1) (initget 7 "") (setq p1 (getpoint "\nWhich side trim?:")) (if (= "" p1) (abcdefg)) (setq n (sslength se2) k 0) (repeat n   (progn   (setq en (ssname se2 k)          enl (list en p1)          )   (command "trim" se1 "" enl "")      (setq k (1+ k))   )   ) (entdel se1) (redraw) (setvar 'cmdecho cmdecho)   (setvar 'osmode os)   (setvar 'ORTHOMODE oth) (princ) )
页: 1 [2]
查看完整版本: lisp中的trim方法