(defun exline (line / sp ep inti into)
(setq sp (findend1 line))(setq ep (findend2 line))
(setq into (inters sp ep esp eep nil))
(setq inti (inters sp ep esp eep t))
(if (and (= inti nil) (/= into nil))
(command "change" line "" into)))
(defun ckandex (sset / ln i ent typ)
(setq ln (sslength sset))
(setq i 0)(setvar "cmdecho" 0)
(while (< i ln)
(setq ent (ssname sset i))
(setq typ (cdr (assoc 0 (entget ent))));get the object type
(cond ((= typ "LINE") (exline ent));extend it according to its type
((= typ "ARC") (exarc ent)))
(setq i (1+ i))))
(defun findend1 (l)
(cdr (assoc 10 (entget l))))
(defun findend2 (l)
(cdr (assoc 11 (entget l))))
(defun getline (prom / ck line otype)
(setq ck "n")
(while (= ck "n")
(terpri)(setq temp (entsel prom))
(if (= temp nil)
(prompt "\n没有选到任何物件请再选一次...")
(progn (setq line temp)
(setq line (nth 0 line))
(setq otype (cdr (assoc 0 (entget line))))
(if (= otype "LINE")
(setq ck "y")
(prompt "\n这不是线,请再选一次...")))))
(eval line))