・ 画層プロパティー管理の説明項目の 取得/設定/削除

画層プロパティー管理の説明項目は、画層オブジェクトのエンティティーデータに、Xdataとして付加されています
例)
コマンド: (entget (tblobjname "Layer" "0") '("*"))
((-1 . <図形名: 7ef6cc78>) (0 . "LAYER") (330 . <図形名: 7ef6cc10>) (5 . "F") 
(100 . "AcDbSymbolTableRecord") (100 . "AcDbLayerTableRecord") (2 . "0") (70 . 
0) (62 . 7) (6 . "CONTINUOUS") (290 . 1) (370 . -3) (390 . <図形名: 7ef6e528>) 
(-3 ("AcAecLayerStandard" (1000 . "") (1000 . "zero"))))

最後の行が Xdata
1000番のエンティティーが二つありますが、二つ目が説明の内容
一つ目はお約束です(これがないと画層プロパティー管理で表示されない)

;画層プロパティーの画層の説明を取得/設定/削除(サンプル版)     ;
(defun C:Jo_lay_comment ( / mode lay comment)
  ;サブルーチン 画層の説明を取得;
  (defun Jof_get_comment (lay / en ed)
    (cond
      ((not lay) "指定した画層はありません")
      ((not (setq en (tblobjname "LAYER" lay))) "指定した画層はありません")
      ((not (setq ed (entget en '("*")))) "画層の説明を取得できませんでした")
      ((not (setq ed (assoc -3 ed))) "画層の説明はありません")
      ((not (setq ed (cdr ed))) "画層の説明はありません")
      ((not (setq ed (assoc "AcAecLayerStandard" ed))) "画層の説明はありません")
      ((not (setq ed (last ed))) "画層の説明はありません")
      ((not (= 1000 (car ed))) "画層の説明はありません")
      (t (strcat "画層の説明:" (cdr ed)))
      )
    )

  ;サブルーチン 画層の説明を設定;
  (defun Jof_add_comment (lay comment / en ed)
    (cond
      ((tblsearch "appid" "AcAecLayerStandard"))
      ((regapp "AcAecLayerStandard"))
      (t (setq comment nil))
      )      
    (cond
      ((not comment) "画層の説明はありません")
      ((not lay) "指定した画層はありません")
      ((not (setq en (tblobjname "LAYER" lay))) "指定した画層はありません")
      ((not (setq ed (entget en ))) "指定した画層はありません")
      ((not (setq ed (append ed (list (cons -3 (list (list "AcAecLayerStandard" '(1000 . "") (cons 1000 comment)))))))) "画層の説明を設定できませんでした")
      ((not (entmod ed)) "画層の説明を設定できませんでした")
      (t (strcat "画層:" lay "\n画層の説明:" comment ))
      )
    )

  ;サブルーチン 画層の説明を削除;
  (defun Jof_del_comment (lay / en ed )
    (cond
      ((not (tblsearch "appid" "AcAecLayerStandard")) "説明はありません")
      ((not lay) "指定した画層はありません")
      ((not (setq en (tblobjname "LAYER" lay))) "指定した画層はありません")
      ((not (setq ed (entget en ))) "指定した画層はありません")
      ((not (setq ed (append ed '((-3 ("AcAecLayerStandard")))))) "説明の削除に失敗しました")
      ((not (entmod ed)) "説明の削除に失敗しました")
      (t "説明を削除しました")
      )
    )      

  ;メインルーチン C:Jo_lay_comment ;
  (initget 1 "g a d")
  (setq mode (getkword "\n画層の説明を [g:取得 / a:設定 / d:削除]:"))
  (cond
    ((= mode "g")
     (setq lay (getstring "\n説明を取得する画層名を入力:"))
     (alert (Jof_get_comment lay))
     )
    ((= mode "a")
     (setq lay (getstring "\n説明を設定する画層名を入力:"))
     (setq comment (getstring "\n説明を入力:"))
     (alert (Jof_add_comment lay comment))
     )
    ((= mode "d")
     (setq lay (getstring "\n説明を削除する画層名を入力:"))
     (alert (Jof_del_comment lay))
     )
    )
  (princ)
  )

(princ "\nJo_lay_comment.lsp ロード完了:画層の説明を 取得/設定/削除 します")
(princ "\nコマンドは Jo_lay_commentです")
(princ)