図形を作成するには、command 関数、entmake 関数、Add図形名 関数を使います。
command 関数を使って図形を作成する
中心 (10,10,0) 半径 2.5 の円を作図するには、次のようにします。
(setq p ‘(10.0 10.0 0.0))
(command “CIRCLE” p 2.5)
‘ はクオートと読み、リストを式ではなく値として利用することを示します。
座標は3つの実数を持つリストで表すので、引数をリスト化する list 関数を使って
(setq p (list 10.0 10.0 0.0))
と表現してもよいことになります。
また command 関数でユーザーに入力させるには定数 PAUSE を使います。
(command “CIRCLE” PAUSE 2.5)
は、中心点はユーザーに指定させ、半径 2.5 はプログラムで与えています。
線色はシステム変数 CECOLOR、線種はシステム変数 CELTYPE を適用します。
entmake 関数を使って図形を作成する
先の例と同じく、中心 (10,10,0) 半径 2.5 の円を作図します。
(setq el ‘((0 . “CIRCLE”)( 8 . “PIPE” )( 6 . “ByLayer”)(10 10.0 10.0 0.0)(40 . 2.5)))
(entmake el)
entmake で図形を作成するには、図形を表すリストを用意します。
ARESで図形を選択すると、プロパティパレットにプロパティの名前と値が表示されますが、図形を表すリストでは、プロパティの名前と値の対応は、DXFファイルのグループコードと値で表現します。
| グループコード | プロパティ名 | 値 |
| 0 | 図形名 | “CIRCLE” |
| 8 | 画層 | “PIPE” |
| 6 | 線種 | “ByLayer” |
| 10 | 円の中心 | (10.0 10.0 0.0) |
| 40 | 円の半径 | 2.5 |
図形を表すリストに含まれなかったプロパティは、システム変数から取得します。 その図形を定義するのに最低限必要なプロパティがリストに含まれなかったときは、entmake 関数は失敗し、プログラムは中断します。
Add図形名 関数を使って図形を作成する
オートメーションを使って図形を作成するには次の手順になります。
先の例と同じく、中心 (10,10,0) 半径 2.5 の円を作図します。
(setq app (vlax-get-acad-object))
(setq doc (vla-get-ActiveDocument app))
(setq ms (vla-get-ModelSpace doc))
(setq pt (vlax-3d-point ‘(10.0 10.0 0.0)))
(setq ent (vla-AddCircle ms pt 2.5))
オートメーションを使用するには、最初にアプリケーションオブジェクトが必要です。
それには、vlax-get-acad-object 関数を使います。
次に作図先として現在アクティブな図面を取得します。
それには、vla-get-ActiveDocument 関数を使用します。これは、アプリケーションオブジェクトの ActiveDocument プロパティを読み取っています。
次に作図先として図面のモデル空間ブロックを取得します。
それには、vla-get-ModelSpace 関数を使用します。これは、ドキュメントオブジェクトの ModelSpace プロパティを読み取っています。ペーパー空間ブロックが必要なら vla-get-PaperSpace 関数、特定のブロックが必要ならブロックコレクションからブロックを取得します。以下は ブロック名 POLE にアクセスする例です。
(setq rec (vla-Item (vla-get-Blocks doc) “POLE”))
ARES LISPでは座標は3つの実数値のリストですが、オートメーションでは3つの実数値を持つセーフ配列です。リストをセーフ配列に変換する vlax-3d-point 関数を使って、中心 (10.0,10.0,0.0) をセーフ配列を取得します。 最後に、モデル空間ブロックに円を追加します。それには、vla-AddCircle 関数を使用します。これは、ブロックオブジェクトの AddCircle メソッドを呼び出しています。パラメータとして中心点と半径が必要です。
図形のプロパティを変更する
作成された円オブジェクトは、変数 ent に格納されているので、画層や線種を変更することも可能です。
(vla-put-layer ent “Floor”)
(vla-put-color ent 6)
vla-put-layer は円図形の画層 Layer プロパティに画層名 Floor を設定します。
vla-put-color は円図形の色番号 Color プロパティに色番号 6 (マジェンタ)を設定します。 オートメーションのオブジェクトのプロパティをまとめて確認するには、vlax-dump-object 関数を使います。
図形リストから図形のプロパティを調べるにはDXFファイルのグループコードを覚える必要がありますが、オートメーションでは vlax-dump-object を使います。
オブジェクトが持っているプロパティ、メソッド、イベントを全て知りたい場合は、Visual Studio や Visual Basic for Application のオブジェクトブラウザを使います。