L3.図形の情報(画層、線種、色)を取得する
(defun c:ufl00003m ( / ents enna outm )
(setq ents (entsel "\n図形を選択:"))
(if (/= ents nil)
(progn
(setq enna (nth 0 ents))
(if (/= enna nil)
(setq outm (ufl00003 enna))
)
(print outm)
)
)
(princ)
)
(defun ufl00003 ( u_entn ;エンティティ名
/ out ;(list lay lnkd col)
lay ;画層名 lnkd ;線種
col ;色番号
enls )
;画層名、線種、色を得る
(setq out nil)
(setq lay nil) (setq lnkd nil)
(setq col nil)
(if (/= u_entn nil)
(progn
(setq enls (entget u_entn))
(if (/= enls nil)
(progn
(setq lay (cdr (assoc 8 enls))) (setq lnkd (cdr (assoc 6 enls)))
(setq col (cdr (assoc 62 enls)))
(setq out (list lay lnkd col))
)
)
)
)
out
)
上記AutoLISPファイル(ufl00003.lsp)のダウンロード
説明
entsel:図形名と指定した点の座標を得る。
(entsel "文字列") 文字列はコマンドウィンドウに表示メッセージ。
nth:リストから特定の項目を取り出す。
(nth 0 ents)は番号が0からのため1番目のリスト内の項目。
print:メッセージを表示する。
entget:指定された図形の定義データを得る。
cdr:リストから最初の要素以外のすべての要素を返す。
assoc:指定されたキーによって識別される項目を返す。
entgetした図形の定義データ例
((-1 . <図形名: 7ef5ae80>) (0 . "LINE") (330 .
<図形名: 7ef5acf8>)
(5 . "88") (100 . "AcDbEntity") (67 . 0) (410
. "Model") (8 . "0")
(100 . "AcDbLine") (10 724.121 636.774 0.0) (11 1025.73
447.194 0.0)
(210 0.0 0.0 1.0))
(cdr (assoc 8 enls)) によって "0" を得る。
(cdr (assoc 10 enls))) の場合は (list 724.121 636.774 0.0)
Presented By ユーザーフレンドリー
E-mail:usrfr@yk.rim.or.jp
|