Sponsored links

【AutoLISP DXF情報】グループコードの図形要素の調べ方

Sponsored links
AutoLISP
Sponsored links

DXF情報を使ってフィルターをかけて、ブロックだけ選択したい。でも、ブロックの図形タイプは何?というときは、entsel を使って欲しい図形のDXF情報を見てみましょう。

Sponsored links

基礎知識

図形タイプの要素名を調べる

DXF情報のグループコードは一覧みればわかりますが、フィルターをかけるとき、この要素はなんて入力してフィルターかければ選択できるんだろ?ということがあると思います。

例えば、グループコード”0″の図形タイプでフィルターをかけるとき、線分の図形タイプは何?円弧は?ブロックは?マルチテキストは?

そんな時は、欲しい図形タイプの図形を用意して、entget で調べればすぐにわかります。

DXF図形情報を表示するコマンド

(defun c:EntInfo()   
	(setq Obj (car (entsel)))
	(setq Ent (entget Obj))
)

コマンド名はEntInfoで、コマンドを実行すると、図形名が変数Objに入り、DXF図形情報がEntに入りコマンドラインに表示されるコマンドです。

作図するためのコマンドではなく、AutoLISPプログラミングのためのコマンドです。
このように、普段のCAD作業用だけでなく、AutoLISP作成時に、欲しい情報を得たりチェックするためのコマンドも作ると、プログラミングの方の効率も上がります。

実際に、線分、円弧、ブロックを用意して、このコマンドを使って図形選択をしてください。

ブロックの図形タイプ

これはブロックを選択した時に出てきたDXF図形情報です。

((-1 . <Entity name: 22eaac649f0>) (0 . "INSERT") (330 . <Entity name: 22ef746c9f0>) (5 . "2E7") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbBlockReference") (2 . "test_block") (10 129.29 153.166 0.0) (41 . 1.0) (42 . 1.0) (43 . 1.0) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0))

図形タイプのグループコードは 0 でしたね。

ここで、0 の情報を見てみると

(0 . “INSERT”) とあります。

つまり、ssget でブロックだけを選択したい!とフィルターをかけるときは、(ssget ‘((0 . “INSERT”))) このように、“INSERT”を指定すればブロックだけを選択した選択セットを作ることができます。”BLOCK” ではありません。

Jagaimo
Jagaimo

xref 外部参照してる図面も図形タイプは“INSERT”なので気を付けてね。

まとめ

  • DXF図形情報の要素名を知りたいときは、欲しい図形を準備してentget でそのDXF図形情報から調べるといい。
  • 作図用コマンドだけでなく、AutoLISP作成時に使うコマンドを作るのも効果的。

Comments