・ 画層プロパティー管理の説明項目の 取得/設定/削除
画層プロパティー管理の説明項目は、画層オブジェクトのエンティティーデータに、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)