オブジェクトの追加と削除
図面に図形を作成する、レイヤーを作成する、あるいは削除するといった編集は、AutoCAD オブジェクトモデルの適切なコレクションにオブジェクトを追加したり削除したりする操作で共通化されます。
一般のコレクションは Add メソッドが用意されており、そのコレクションに関わるオブジェクトが作成されてコレクションに追加されます。なお、プログラムに実際に書く場合は、「vla-」という接頭辞を忘れないでください。
Block コレクションについては、各図形タイプに対応するメソッドが用意されています。そのため、AddArc メソッド、AddCircle メソッド、AddLine メソッド、と非常に多くの Add 系のメソッドがあります。これらの種類の全貌は Block コレクションのヘルプを参照してください。
また、VisualLISP を使用している場合は、テキストエディタに「vla-add」までを打ち込んで選択状態にした後【該当】を起動させます。

【該当の結果】ウィンドウに「vla-add」を含むシンボルの一覧が表示されます。一覧表示されたシンボルから、適当な関数を選んでクリップボード経由で関数のフルスペルをテキストエディタに張り付けることができます。
具体的に図形を作成する例は下のようになります。vla-AddArc関数を使って、円弧を【モデル空間】に作成しています。
(setq *model* (vla-get-ModelSpace *document*))
(setq arc (vla-AddArc *model* (vlax-3D-point 0.0 0.0 0.0) 100.0 0.0 (/ PI 2)))
各 Add 系のメソッドに必要な引数は、ヘルプを参照してください。引数の型は、文字列、整数、実数といった基本的なものはそのまま使えますが、リストなどの複合データは、セーフ配列に格納したバリアント型とする必要があるので、引数の型を確認してください。さらに図形オブジェクトの場合は、座標の座標系が WCS であるか OCS であるか、あるいは他の座標系であるかも確認してください。
オブジェクトの削除については各コレクションのメソッドではなくて、個々のオブジェクトに Delete メソッドが存在します。このメソッドが呼ばれると、オブジェクトは属するコレクションから自身の登録を抹消し、自身を削除します。
(vla-Delete arc)
Document オブジェクトのメソッド
図面の編集には、オブジェクトの追加や削除だけでなく、図面全体にわたる基本的な操作で AutoCAD のコマンドを使用する場合があります。これらは Document オブジェクトのメソッドとして用意されています。主だったものを以下に挙げます。
Documentオブジェクトのメソッド | 説明 |
---|---|
SendCommand | 対話的なコマンドを実行します。 |
PostCommand | 非対話的なコマンドを実行します。 |
StartUndoMark | UNDOブロックの先頭を指定します。 |
EndUndoMark | UNDOブロックの終了を指定します。 |
Close | 図面を閉じます。 |
Import | ファイルから【ブロック図形】として図面に挿入します。 |
Save | 図面を保存します。 |
SaveAs | 名前を付けて図面を保存します。 |
WBLock | 選択セットをDWGに書き出します。 |
GetVariable | システム変数の値を取得します。 |
SetVariable | システム変数の値を設定します。 |
PurgeAll | 図面から未使用の【ブロック図形】や画層などを削除します。 |
Regen | 画面を全再描画します。 |
CopyObjects | 複数のオブジェクトをコピーします。異なるBlockコレクション間でのコピーも行えます。 |
HandleToObject | ハンドルに対応するオブジェクトを取得します。 |
ObjectIDToObject | オブジェクト ID に対応するオブジェクトを取得します。 オブジェクト ID は VLA オブジェクト上での【図形名】にあたり、図面が開かれるたびに異なる値となります。外部アプリケーションからアクセスされる用に、32 ビットと 64 ビットの整数型の二種類あります。 |
下は、AutoCADコマンドの PURGE に当たる操作を行います。コマンドの場合のダイアログは表示されません。
(vla-PurgeAll *document*)
その他のオブジェクト
AutoCAD オブジェクトモデルの中で、その他に注目するオブジェクトについて紹介します。
- Preferences オブジェクト
OPTIONS コマンドで表示される【オプション】ダイアログボックスのオプション内容から、AutoCAD アプリケーションの設定としてレジストリに保存されるものを保有しています。Application オブジェクトの Preferences プロパティから取得できます。
Preferences オブジェクトのプロパティから、さらに Application、Display、Drafting、Files... といったオブジェクトが取得でき、これらのプロパティから【オプション】ダイアログボックスの各設定にアクセスすることができます。 - DatabasePreferences オブジェクト
OPTIONS コマンドで表示される【オプション】ダイアログボックスのオプション内容から、図面に保存されるものを保有しています。Document オブジェクトの Preferences プロパティから取得できます。 - SummaryInfo オブジェクト
DWGPROPS コマンドで表示される【図面のプロパティ】ダイアログで表示される内容を保有しています。Document オブジェクトの SummaryInfo プロパティから取得できます。 - Utility オブジェクト
Utility オブジェクトは、プログラムから利用できるいくつかの関数をメソッドとしてまとめて持っています。これらは対応する AutoLISP の関数の代わりに使用することができます。Document オブジェクトの Utility プロパティから取得できます。
主なメソッドは以下のとおりです。
型変換
Utilityオブジェクトのメソッド 説明 AutoLISP AngleToReal 文字列の角度を実数値(倍精度浮動小数点数型)に変換します。 angtof AngleToString 角度の実数値(倍精度浮動小数点数型)を文字列値に変換します。 angtos DistanceToReal 距離の値を文字列から実数値(倍精度浮動小数点数型)に変換します。 distof RealToString 実数(倍精度浮動小数点数型)値を文字列の値に変換します。 rtos 座標系・幾何関数
Utilityオブジェクトのメソッド 説明 AutoLISP TranslateCoordinates 点を、ある座標系から他の座標系に変換します。 trans AngleFromXAxis X軸からの線分の角度を取得します。 angle PolarPoint 指定された点から指定された角度と距離にある点を取得します。 polar インターフェース
Utilityオブジェクトのメソッド 説明 AutoLISP Prompt 【コマンドライン】にプロンプトを表示します。 prompt InitializeUserInput GetKeyword メソッド、GetInputメソッドを初期化します。 initget GetKeyword ユーザーからキーワード文字列を取得します。 getkword GetInteger ユーザーから整数値を取得します。 getint GetReal ユーザーから実数(倍精度浮動小数点数型)値を取得します。 getreal GetPoint AutoCADで選択された点を取得します。 getpoint GetCorner 矩形のコーナーを取得します。 getcorner GetDistance プロンプトまたは画面上の点の選択セットからの距離を取得します。 getdist GetAngle 指定された角度を取得します。 getangle GetOrientation 指定された角度を取得します。 getorient GetEntity オブジェクトを取得します。 entsel GetSubEntity オブジェクト、または複合図形内のオブジェクトを取得します。 nentselp GetInput ユーザーが入力したキーワードを取得します。GetKeyword以外の上記のGet~メソッドは、ユーザーがキーワードを入力した場合はエラーが発生しますので、それを検知したら、このメソッドでキーワードを取り出します。 GetString ユーザーから文字列を取得します。 getstring その他
Utilityオブジェクトのメソッド 説明 GetObjectIdString オブジェクトのIDを文字列として返します。 CreateTypedArray タイプと、そのタイプの配列に設定する複数の引数を与えることで、その値を含んだセーフ配列バリアント型を作成し、指定されたシンボルに代入します。