AutoCAD オブジェクトモデル

オブジェクトの追加と削除

図面に図形を作成する、レイヤーを作成する、あるいは削除するといった編集は、AutoCAD オブジェクトモデルの適切なコレクションにオブジェクトを追加したり削除したりする操作で共通化されます。

一般のコレクションは Add メソッドが用意されており、そのコレクションに関わるオブジェクトが作成されてコレクションに追加されます。なお、プログラムに実際に書く場合は、「vla-」という接頭辞を忘れないでください。

Block コレクションについては、各図形タイプに対応するメソッドが用意されています。そのため、AddArc メソッド、AddCircle メソッド、AddLine メソッド、と非常に多くの Add 系のメソッドがあります。これらの種類の全貌は Block コレクションのヘルプを参照してください。

また、VisualLISP を使用している場合は、テキストエディタに「vla-add」までを打ち込んで選択状態にした後【該当】を起動させます。

apropos

【該当の結果】ウィンドウに「vla-add」を含むシンボルの一覧が表示されます。一覧表示されたシンボルから、適当な関数を選んでクリップボード経由で関数のフルスペルをテキストエディタに張り付けることができます。

AutoCAD 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 オブジェクトモデルの中で、その他に注目するオブジェクトについて紹介します。

  1. Preferences オブジェクト
    OPTIONS コマンドで表示される【オプション】ダイアログボックスのオプション内容から、AutoCAD アプリケーションの設定としてレジストリに保存されるものを保有しています。Application オブジェクトの Preferences プロパティから取得できます。
    Preferences オブジェクトのプロパティから、さらに Application、Display、Drafting、Files... といったオブジェクトが取得でき、これらのプロパティから【オプション】ダイアログボックスの各設定にアクセスすることができます。
  2. DatabasePreferences オブジェクト
    OPTIONS コマンドで表示される【オプション】ダイアログボックスのオプション内容から、図面に保存されるものを保有しています。Document オブジェクトの Preferences プロパティから取得できます。
  3. SummaryInfo オブジェクト
    DWGPROPS コマンドで表示される【図面のプロパティ】ダイアログで表示される内容を保有しています。Document オブジェクトの SummaryInfo プロパティから取得できます。
  4. 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 タイプと、そのタイプの配列に設定する複数の引数を与えることで、その値を含んだセーフ配列バリアント型を作成し、指定されたシンボルに代入します。