・ 連続するポイント指示中に一つ前に戻る

ユーザーに連続するポイントを指示させて、LINE や POLYLINE を作図する場合、ユーザーが、誤ったポイントを指示してしまうことがあります。こういった場合、ユーザーに "U"を入力させて一つ前の状態に戻れるようにすると親切です。
そうしないと、最初からやり直さなければなりませんからね・・・。

(defun Jof_lst_pt ( / pt lst_pt)
  (setq lst_pt (cons (setq pt (getpoint "\n始点を指示")) lst_pt))
  (while pt
    (initget 32 "U")
    (setq pt (getpoint pt "\n次の点を指示 (U=直前取消 / Enter=指定終了):"))
    (mapcar '(lambda (x y) (grdraw x y -1 1)) (reverse (cdr (reverse lst_pt))) (cdr lst_pt))
    (cond
      ((= pt "U")
       (setq lst_pt (cdr lst_pt))
       (setq pt (car lst_pt)))
      (pt
       (setq lst_pt (cons pt lst_pt)))
      )
    (mapcar '(lambda (x y) (grdraw x y -1 1)) (reverse (cdr (reverse lst_pt))) (cdr lst_pt))    
    )
  (mapcar '(lambda (x y) (grdraw x y -1 1)) (reverse (cdr (reverse lst_pt))) (cdr lst_pt))
  (reverse lst_pt)
  )