SeaGate HomePage 別館
本館 別館 ブログ
 
トップページ
第01回
第02回
第03回
第04回
第05回
第06回
第07回
第08回
第09回
第10回
第11回
第12回
第13回
第14回
おまけ
VBAではじめるAutoCADカスタマイズ VBAではじめるAutoCADカスタマイズ
第6回 図形の作成と編集

■ はじめに

前回前々回で説明した変数や制御構造は、プログラムを意図した通りに動作させるためのVBAというプログラミング言語の仕様で、ExcelやWordなどに搭載されたVBAでも同じです。一方、図形の作成や編集といったAutoCADならではの処理を行うには、連載第3回で説明したようにAutoCADが公開するオブジェクトのメソッドやプロパティを使用することになります。今回は、AutoCAD VBAで図形の作成や編集を行う方法について説明します。

■ ModelSpaceコレクションとPaperSpaceコレクション

ModelSpaceコレクションとPaperSpaceコレクション
ModelSpaceコレクションとPaperSpaceコレクション

連載第2回で説明したように、AutoCADのオブジェクトはApplicationオブジェクト(AutoCAD全体)を頂点とする階層構造を持ちます。AutoCADのモデル空間やペーパー空間に図形や文字などを作図するには、まず作図対象となるDocumentオブジェクト(図面)を取得し、次にそのDocumentオブジェクトの中に含まれるModelSpaceコレクション(モデル空間)やPaperSpaceコレクション(ペーパー空間)の持つ作図メソッドを実行します。

作図対象となる図面は、"ThisDrawing"キーワードを指定してVBAプロジェクトが含まれるDocumentオブジェクトとして直接取得することも、ApplicationオブジェクトのActiveDocumentプロパティやDocumentsプロパティなどを使用して、現在アクティブなDocumentオブジェクトや任意のDocumentオブジェクトとして取得することもできます。

ModelSpaceコレクションやPaperSpaceコレクションはDocumentオブジェクトのModelSpaceプロパティやPaperSpaceプロパティから取得することができます。図形や文字などのオブジェクトはModelSpaceコレクションやPaperSpaceコレクション中に作成され、これらのコレクションオブジェクトは言わば図形や文字を描くキャンバスのようなものと考えることができます。

> プログラムコードを別ウィンドウで表示 ※ 行番号を入力する必要はありません

コメントとマルチステートメント

コメントとは"'"(シングルクォーテーション)とスペースの後に続けて記述する注釈のことで、プログラムコード中の任意の場所に記述することができます。コメントは特に指定しない限りVBエディタでは緑色の文字列で表示され、プログラムの実行時には無視されます。

また、サンプルプログラムでは複数の処理を":"(コロン)でつなげて1行に記述している箇所があります。これはマルチステートメントと言うVBAの機能で、関連性のある処理を1行にまとめてプログラムコードの行数を減らすことができます。ただし、あまり関連性のない処理を無理やり1行にまとめるとかえってプログラムが読みにくくなるため、通常は1行に1つの処理だけを記述するようにしてください。

■ 図形の作成

モデル空間やペーパー空間に図形や文字を作成するには、ModelSpaceコレクションやPaperSpaceコレクションなどのオブジェクトが持つ"Add"で始まる名前の作図メソッドを使用します。作図メソッドは作成する図形や文字の種類ごとに1つずつ用意されていて、代表的な作図メソッドには下表に示すようなものがあります。作図メソッドを実行するとメソッドを実行した結果作成された図形や文字オブジェクトへの参照が返されます。

AutoCADのコマンドで図形や文字を作成する場合、多くのコマンドが複数の作図方法をサポートしています。例えば円を作図する時、中心と半径を指定する方法や円周上の3点を指定する方法などが利用できます。しかし、AutoCAD VBAには中心と半径を指定して作図するAddCircleメソッドしかありません。ですから、別の方法で円を作図したい場合には、あらかじめ円の中心座標や半径を計算するプログラムコードを記述しておく必要があります。

代表的な作図メソッド
AddLine(始点, 終点) 2点を通る線分を作成する。
AddLightweightPolyline(頂点リスト) 2次元の頂点座標リストからライトウェイトポリラインを作成する。
AddPolyline(頂点リスト) 3次元の頂点座標リストから2D/3Dポリラインを作成する。
AddArc(中心, 半径, 開始角度, 終了角度) 中心、半径、開始角度、終了角度を指定して円弧を作成する。
AddCircle(中心, 半径) 中心と半径を指定して円を作成する。
AddText(文字列, 挿入点, 文字高さ) 単一行の文字列を作成する。

作図メソッドの使用例
> プログラムコードを別ウィンドウで表示 ※ 行番号を入力する必要はありません

通常の線分や曲線、文字列の始点や終点、中心点や挿入点などの座標はWCS(ワールド座標系)の3次元座標で表わされ、要素数3の倍精度浮動小数点数型の一次元配列にX, Y, Zの各座標値を格納して作図メソッドの引数に指定します。

ポリラインの各頂点の座標はOCS(オブジェクト座標系)の座標値で表わされ、最低2点以上の頂点座標のリストを倍精度浮動小数点数型の一次元配列に格納して作図メソッドの引数に指定します。ライトウェイトポリラインは全ての頂点の高さが同じなので、要素数が頂点数×2の一次元配列に2次元座標の頂点リストを格納します。また、2D/3Dポリラインは要素数が頂点数×3の一次元配列に3次元座標の頂点リストを格納します。

円弧の開始角度や終了角度、回転角度など、AutoCADのオブジェクトやプロパティで使用する角度の単位はラジアン(弧度)で表わされます。また、ラジアンはVBAの三角関数などでも使用されます。角度の単位を度からラジアンに変換するには度の値にπ/180を掛け、ラジアンから度に変換するにはラジアンの値に180/πを掛けます。

■ 図形の作成

◆ 編集メソッド

図形や文字に対してAutoCADのコピーや削除、移動などの編集コマンドに相当する操作を行うには、そのオブジェクト自身が持つ編集メソッドを使用します。代表的な編集メソッドには下表に示すようなものがあり、また、図形や文字オブジェクトが持つメソッドには、ハイライト表示や別のオブジェクトとの交点を取得するものなどもあります。

"Set"キーワードを使用して作図メソッドで作成した図形や文字オブジェクトをオブジェクト変数に格納すると、オブジェクト変数を通してその図形や文字オブジェクトの持つ複数のメソッドを実行したり、後でそのオブジェクトを再利用することができます。この場合、オブジェクト変数は作成する図形や文字と同じオブジェクトの型として宣言します。

代表的な編集メソッド
Copy オブジェクトを同じ位置に複写する。
Delete オブジェクトを削除する。
Move(移動元, 移動先) オブジェクトを移動する。
Mirror(対称軸の1点目, 対象称の1点目) オブジェクトの鏡像イメージを作成する。
Offset(距離) 指定されたオフセット距離で新しくオブジェクトを作成する。
Rotate(基準点, 回転角度) 基準点を中心にしてオブジェクトを回転する。

編集メソッドの使用例
> プログラムコードを別ウィンドウで表示 ※ 行番号を入力する必要はありません

CopyやMirror、Offsetなどのメソッドは元のオブジェクトと同じ外観や属性を持つオブジェクトを作成し、そのオブジェクトへの参照を返します。また、Deleteメソッドは元のオブジェクト自身を削除します。そのためCopyやMirror、Offsetなどのメソッドではオブジェクト変数が元の図形や文字オブジェクトを参照し続けるのに対し、Deleteメソッドでは何も参照していない状態(Nothing)となります。

◆ 編集プロパティ

図形や文字の外観や属性を変更したり現在の状態を取得するには、そのオブジェクト自身が持つプロパティを使用します。プロパティには図形や文字オブジェクトが共通して持つLayer(画層)やColor(色、AutoCAD 2004以降はTrueColor)、Linetype(線種)などのプロパティやCenter(中心点)やRadius(半径)、Area(面積)などのオブジェクト固有のものがあります。これらのプロパティは、AutoCADのプロパティウィンドウに表示されるものとほぼ同じです。

AutoCADのプロパティウィンドウ
AutoCADのプロパティウィンドウ

編集プロパティの使用例1
> プログラムコードを別ウィンドウで表示 ※ 行番号を入力する必要はありません

TrueColorプロパティ

AutoCAD 2004からはTrue Colorがサポートされ、図形や文字などのオブジェクトにTrueColorプロパティが追加されました。Colorプロパティは色の指定を従来の255色のカラーインデックス(ACI)で行うプロパティで、2004以降のバージョンでは廃止されました。互換性のためAutoCAD 2004/2005でも使用可能ですが、今後はTrueColorプロパティに置き換えられます。

TrueColorプロパティを使用して色を指定するにはTrueColorプロパティにAcCmColorオブジェクトを設定します。AcCmColorオブジェクトは色を表わすオブジェクトで、RGB値やカラーインデックスなどによって色を定義するメソッドやプロパティを持ちます。ですからSample04のColorプロパティの部分は、以下のようにまずAcCmColorオブジェクトを作成して色を定義し、次にLightweightPolylineオブジェクトのTrueColorプロパティにそのAcCmColorオブジェクトを指定するという2段階のプログラムコードに書き換える必要があります。

> プログラムコードを別ウィンドウで表示 ※ 行番号を入力する必要はありません

編集プロパティの使用例2
> プログラムコードを別ウィンドウで表示 ※ 行番号を入力する必要はありません

■ 最後に

図形や文字を作成する時は、その親オブジェクトであるモデル空間などのメソッドを使用し、図形や文字に対して何かの操作をする時は、そのオブジェクト自身のメソッドやプロパティを使用します。オブジェクトが持つメソッドやプロパティは多数あります。AutoCADのヘルプを活用し、どのような時にどのようなメソッドやプロパティを使用するのかを確認してください。
SeaGate
コレクション



inserted by FC2 system