+CADLabo.comCAD / LISP / AUTOMATION
AutoLISP初心者講座

entmake|DXFデータから図形を作成する

AutoLISPの基本・図形操作のTips一覧
要点

図形種別、座標、半径などをDXFデータのリストにまとめ、entmakeへ渡します。線と円の作成から、文字・ブロックの構造へ進みます。

始める前に

先に確認すると読み進めやすい記事:

確認の手順

  1. 空の練習図面で、線または円の掲載例を1つ選びます。
  2. 図形種別と座標・半径のDXFコードを確認します。
  3. entmakeへリストを渡し、作成結果を確認します。
  4. プロパティとentgetでデータを照合してから、文字やブロックの例へ進みます。

Step 1:entmakeとは何か?

entmake は、AutoCADの図形(エンティティ)を直接作成する関数です。DXFコードをリスト形式で指定することで、図形の属性を細かく定義できます。

たとえば、線分(LINE)を作成するには以下のように記述します:

掲載コード
(entmake
  '((0 . "LINE")
    (10 0 0 0)   ; 始点
    (11 100 100 0))) ; 終点

このコードは、(0,0,0) から (100,100,0) までの線分を作成します。

Step 2:基本図形を作ってみよう

ここでは、よく使う図形の作成例を紹介します。

線分(LINE)

掲載コード
(defun c:make-line ()
  (entmake
    (list
      '(0 . "LINE")
      (cons 10 (getpoint "\n始点を指定: "))
      (cons 11 (getpoint "\n終点を指定: "))
    )
  )
  (princ "\n線分を作成しました。")
)

円(CIRCLE)

掲載コード
(defun c:make-circle ()
  (entmake
    (list
      '(0 . "CIRCLE")
      (cons 10 (getpoint "\n中心点を指定: "))
      (cons 40 (getreal "\n半径を指定: "))
    )
  )
  (princ "\n円を作成しました。")
)

Step 3:文字を作成してみよう

単一行文字(TEXT)

掲載コード
(defun c:make-text ()
  (entmake
    (list
      '(0 . "TEXT")
      (cons 10 (getpoint "\n文字位置を指定: "))
      (cons 40 2.5) ; 文字高さ
      (cons 1 "こんにちはAutoLISP") ; 表示文字列
    )
  )
  (princ "\n文字を作成しました。")
)

複数行文字(MTEXT)

掲載コード
(defun c:make-mtext ()
  (entmake
    (list
      '(0 . "MTEXT")
      '(100 . "AcDbEntity")
      '(100 . "AcDbMText")
      (cons 10 (getpoint "\n文字位置を指定: "))
      (cons 1 "これは複数行の文字列です。\n改行もできます。")
    )
  )
  (princ "\nMTEXTを作成しました。")
)

Step 4:ブロックを定義して挿入してみよう

掲載コード
(defun c:make-block ()
  (entmake '((0 . "BLOCK") (2 . "MyBlock") (10 0 0 0)))
  (entmake '((0 . "LINE") (10 0 0 0) (11 50 50 0)))
  (entmake '((0 . "ENDBLK")))
  (entmake '((0 . "INSERT") (2 . "MyBlock") (10 100 100 0)))
  (princ "\nブロックを定義して挿入しました。")
)

Step 5:entmakeの応用テクニック

属性付きブロック(ATTDEF + ATTRIB)

属性定義を含むブロックを作成することで、図面に情報を埋め込むことができます。これは図面管理や帳票連携に便利です。

DXFコードの確認

図形のDXFコードを確認したい場合は、entget を使って取得し、assoc で特定のコードを抽出できます。

掲載コード
(setq ed (entget (car (entsel))))
(cdr (assoc 8 ed)) ; レイヤー名

おまけ:よく使うDXFコード一覧

DXFコード意味
0エンティティタイプ
10始点・位置
11終点
40半径・文字高さ
1表示文字列
8レイヤー名
62色番号

まとめ

entmake を使えば、AutoCAD上で図形を自在に生成できます。DXFコードの理解が深まれば、より柔軟な自動化が可能になります。

結果の確認

必要なDXFコードが欠けると作成に失敗します。表示だけでなく、図形種別・座標・画層を確認し、戻り値がnilではないか調べます。

参照資料

対象環境・動作確認

AutoLISP対応環境(関数・OSごとの対応は要確認)。内容更新:2026年10月5日。掲載コードのCAD実機検証は未実施です。図形を変更する例は、コピーした図面で結果を確認してください。