¿£Áö´Ï¾î ±â¼úºí·Î±×
ÀÛ¼º: ¾ÆÅ°¸ð¾Æ µû¶óÁö´Ô

;;;Trim + Extend ¸¦ Çѹø¿¡
(defun c:extr (/ ent dis entst pt1 pt2 dis1 dis2 a pt3 pt4 ptr ptas ptae disa)
   (setvar "osmode" 32)
  (setq ent (entget (car (entsel)))
         dis (getpoint "nChange Point:")
        entst (cdr (assoc 0 ent))
  )
  (while dis
   (cond ((= entst "LINE")
          (setq pt1 (cdr (assoc 10 ent))
                pt2 (cdr (assoc 11 ent))
                dis1 (distance dis pt1)
                dis2 (distance dis pt2)
          )
          (if (> dis1 dis2)
               (setq a (angle pt1 pt2)
                     pt3 (polar pt1 a dis1)
                     ent (subst (cons 11 pt3) (assoc 11 ent) ent)
               )
               (setq a (angle pt2 pt1)
                     pt4 (polar pt2 a dis2)
                     ent (subst (cons 10 pt4) (assoc 10 ent) ent)
               )
          )
         )
         ((= entst "ARC")
          (setq pt1 (cdr (assoc 10 ent))
                ptr (cdr (assoc 40 ent))
                ptas (cdr (assoc 50 ent))
                ptae (cdr (assoc 51 ent))
                dis1 (distance dis (polar pt1 ptas ptr))
                dis2 (distance dis (polar pt1 ptae ptr))
                disa (angle pt1 dis)
          )
          (if (>= dis1 dis2)
              (setq ent (subst (cons 51 disa) (assoc 51 ent) ent))
              (setq ent (subst (cons 50 disa) (assoc 50 ent) ent))
          )
         )
   )
   (entmod ent)
   (setq dis (getpoint "nChange Point:"))
  )
);;end of defun