お知らせ

--------------------------------------------------

プログラム作成/コンサルティングの申し込みはこちら

--------------------------------------------------

2010年2月5日金曜日

entsel、entlast、entget 関数(AutoCAD 2010)

AutoCAD においてプログラムを作るとき、あるオブジェクトの情報を取得したくなることもあると思います。
例えば、あるオブジェクトの画層、色、線種、文字スタイル名、寸法スタイル名などがどのようになっているかを知りたいときなどです。

使用例
オブジェクトの情報を取得したいときは、まずはそのオブジェクトの「図形名」を取得して、それを元にオブジェクトの情報を取得することになります。

(entsel)
コマンド ラインに「オブジェクトを選択:」と表示されます。
ここで、オブジェクトを選択すると、選択したオブジェクトの「図形名」とクリックした座標値が返されます。

(entlest)
最後に作成したオブジェクトの「図形名」が返されます。

(entget (car (entsel)))
選択したオブジェクトの情報が返されます。
car 関数は、リストの最初の要素を返します。(car (entsel)) は、(entsel) の返り値の最初の要素を返すということになりますので、選択したオブジェクトの「図形名」が返されます。

(entget (car (entsel)) '("*"))
「 '("*")」が追加されていますが、これは、オブジェクトに追加されている拡張データの情報も取得したいときに追加します。「*」となっているのは、すべてのアプリケーション名に対する拡張データも取得するということです。
例えば、acadvideo というアプリケーション名の拡張データだけを取得するときは (entget (car (entsel)) '("acadvideo")) となります。

(entget (entlast))
(entget (entlast) '("*"))
最後に作成したオブジェクトの情報が返されます。
「 '("*")」を付けたときは、拡張データも返されます。

例えば、中心が 100,100 で、半径 50 の円を描き、(entget (entlast)) を実行すると、以下のような情報が返されます。

((-1 . <図形名: 7ffffb0b830>) (0 . "CIRCLE") (330 . <図形名: 7ffffb099f0>) (5 .
"1FB") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 .
"AcDbCircle") (10 100.0 100.0 0.0) (40 . 50.0) (210 0.0 0.0 1.0))

ちょっとだけ説明すると、

(0 . "CIRCLE") は、オブジェクトの種類が「円」
(8 . "0") は、画層が 0
(10 100.0 100.0 0.0) は、中心の座標値が 100.0,100.0,0.0
(40 . 50.0) は、半径が 50.0

ということを示してします。

0 件のコメント:

コメントを投稿