概要 - command 関数を使用せずに図形を追加する(AutoLISP)

アプリケーションは、entmake 関数を呼び出すことにより図面データベースに図形を追加できます。

entmod の場合と同様、entmake の引数には、entget が返すのと同じ形式のリストを指定します。リストに記述された新しい図形は、図面データベースに追加されます(図面内の最後の図形になります)。図形が複合化図形(旧形式のポリラインやブロック)の場合は、図形が完全なものになるまでデータベースには追加されません。

次のサンプル コードは、画層 MYLAYER 上に円を作成します。

(entmake '((0 . "CIRCLE") ; Object type
  (8 . "MYLAYER")         ; Layer
  (10 5.0 7.0 0.0)        ; Center point
  (40 . 1.0)              ; Radius
))

次に示す entmake の制限は、すべての図形に適用されます。

AutoCAD Release 13J 以降のリリースで採用された図形タイプに対しては、図形を作成するときにサブクラス マーカー(DXF グループ コード 100)も指定しなければなりません。AutoCAD のすべての図形は、AcDbEntity サブクラス マーカーを持ち、これを entmake のリストに明示的に含めなければなりません。さらに、特定の従属図形のタイプを識別するためには、1 つまたは複数のサブクラス マーカー項目を指定する必要があります。これらの項目を、グループ コード 0 の後に指定し、かつ entmake のリスト内の図形のプロパティを定義するために特別に使用されるグループ コードの前に指定しなければなりません。たとえば、次のコードは entmake を使用して MTEXT 図形を作成するために必要な最小限のコードです。

(entmake '(
  (0 . "MTEXT")
  (100 . "AcDbEntity") ; Required for all post-R12 entities.
  (8 . "ALAYER")
  (100 . "AcDbMText")  ; Identifies the entity as MTEXT.
  (10 4.0 4.0 0.0)
  (1 . "Some\\Ptext")
))

次の表に、entmake に渡されるリスト内で従属図形マーカー項目を必要としない図形を示します。

AutoCAD Release 13J 以前に導入された図形の DXF 名

3DFACE

ARC

ATTDEF

ATTRIB

CIRCLE

DIMENSION

INSERT

LINE

POINT

POLYLINE (旧形式)

SEQEND

SHAPE

SOLID

TEXT

VERTEX

VIEWPORT

entmake 関数は、指定された画層名、線種名、および色の有効性を確認します。新しい画層名が指定されると、entmake は自動的に新しい画層を作成します。フリーズされている画層上で作成したオブジェクトは、その画層がフリーズ解除されるまで再作成されません。また entmake 関数は、ブロック名、寸法スタイル名、文字スタイル名、シェイプ名についても、図形タイプがそれらを必要とする場合にはチェックします。有効な図形を作成できない場合は、関数は失敗します。