・ エンティティーデータのリストからグループコードを指定して要素を削除したい

(entmake) (entmod) を利用してオブジェクトの編集をする場合、不要な要素を削除したいことがあります
要素を書換えるためには (subst) という関数が用意されていますが、削除するのはないですね

そこで、まず考えたのが、(subst) を使って nil におきかえる
これは、だめでした
エンティティーデータのリストの中に nil がはいっちゃいまいた
そこで、(append) を使って、新しいリストを作る方法でアプローチしたのが次のサンプルです

;//////////////////////////////////////////////////////////////////////////////////////
; Jo_del_ed.lsp  エンティティーデータのリストからグループコードを指定して要素を削除    
;                                                                            By Kamijo 
;//////////////////////////////////////////////////////////////////////////////////////

(defun Jo_del_ed ( / ed index index_list edn )
  ;サブルーチン:削除したエンティティデータのリストを返す;
  ;ed:エンティティーデータのリスト、index_list:削除したいグループコードのリスト;
  (defun Jof_del_ed ( ed index_list / n ret )
    (foreach n ed (setq ret (append ret (if (member (car n) index_list) nil (list n)))))
    ret
    )

  ;メインルーチン(Jo_del_ed);
  (setq ed (entget (car (entsel))))
  (terpri)
  (princ ed)
  (setq index t)
  (while index ;削除するグループコードを繰り返し指定 <Enter>で指定終了;
    (setq index (getstring "\n削除するリストのINDEXを入力 <Enterで入力終了>:")) ;整数値を指定しないとエラーになります;
    (if (= "" index)
      (setq index nil)
      (setq index_list (append index_list (list (atoi index))))
      )
    )
  (setq edn (Jof_del_ed ed index_list))
  (terpri)
  (princ edn)
  (princ)
  )