SeaGate HomePage 別館
本館 別館 ブログ
 
トップページ
第01回
第02回
第03回
第04回
第05回
第06回
第07回
第08回
第09回
第10回
第11回
第12回
第13回
第14回
おまけ
VBAではじめるAutoCADカスタマイズ VBAではじめるAutoCADカスタマイズ
第3回 メソッドとプロバティ

■ はじめに

前回は、AutoCADが用途や機能ごとに分類された多数のオブジェクトで構成されていること、個々のオブジェクトは互いに関連しながら独立した属性や機能を持っていること、また、VBAではこれらのオブジェクトを操作することでAutoCADを制御することなどを説明しました。今回は、オブジェクトが持つこれらの属性や機能を、VBAプログラムからどのようにして操作するのかについて解説します。

■ オブジェクト オブジェクト

オブジェクトには、外部からオブジェクト自身が持つ属性や機能を操作したり参照するためのプロパティやメソッド、イベントと呼ばれる機能などが備わっています。

例えば、テレビをオブジェクトとすると、「時刻設定」や地域ごとの「チャンネル設定」などがプロパティに、「チャンネルを変える」や「ボリュームを上げる」などの操作がメソッドに相当します。テレビを見る人は、希望する機能に該当するボタンを押すだけで、内部の詳しい仕組みを知らなくてもテレビの設定を変更したり操作したりすることができます。つまり、メソッドやプロパティを使ってオブジェクトを操作すると、オブジェクトがどのようにしてその機能を実現しているのかを知る必要はありませんし、誤った操作を行う危険も少なくなるというメリットがあるのです。

■ オブジェクトブラウザ

Visual Basicエディタには、VBAプロジェクト内で利用可能なオブジェクトやその機能や属性などを表示する、オブジェクトブラウザという機能があります。オブジェクトブラウザは、Visual Basicエディタの[表示]メニューから[オブジェクトブラウザ]を選択するか[F2]キーを押すと表示されます。

オブジェクトブラウザの左上にある[プロジェクト/ライブラリ]ボックスで[AutoCAD]を選択してください。左側の[クラス]ペインにはAutoCADが公開するオブジェクトオブジェクトのクラス名(オブジェクトの設計上の名前)がリスト表示され、その右側の[メンバ]ペインには[クラス]ペインで選択したオブジェクトのプロパティプロパティやメソッドメソッド、イベントイベントなどのリストが表示されます。また、リストの項目を選択して[F1]キーを押すと、ヘルプウィンドウが開いてその解説を表示することができます。

オブジェクトブラウザ
オブジェクトブラウザ

■ メソッド メソッド

メソッドを使うとオブジェクトが持つ機能や動作を操作することができます。例えば、ApplicationオブジェクトにはQuitメソッドが、DocumentオブジェクトにはSaveAsメソッドなどがあり、それぞれAutoCADを終了したり図面に名前を付けてファイルに保存することができます。

また、実行した結果を数値や文字列などの値、オブジェクトへの参照として返すメソッドもあります。オブジェクトへの参照を返すメソッドは、実行した結果新しくオブジェクトが作成された場合に、その作成されたオブジェクトにアクセスする手段を提供するためによく用いられます。

VBAでは、メソッドの実行はオブジェクトとメソッドを"."(ドット)でつないで次のように記述します。引数(パラメータ)とは操作の条件などを指定するためにメソッドに引き渡す値で、先ほどのSaveAsメソッドの例で言うと保存するファイル名に相当します。また、引数の個数や値のタイプ(数値や文字列、オブジェクトなど)はメソッドごとに決められています。

書式:  [オブジェクト].[メソッド(引数, ...)]

例:  Call Application.Quit ' AutoCADを終了する。
例:  Call ThisDrawing.SaveAs("test.dwg")  ' 現在の図面を"test.dwg"という名前で保存する。
※  "Call"は実行結果を返さないメソッドを呼び出す時などに用いるVBAの文(ステートメント)です。
※  "ThisDrawing"は現在の図面(Documentオブジェクト)を表わすAutoCAD VBAのキーワードです。

メソッドでは"."(ドット)を「を」と読むと意味が分かりやすくなります。例えば"Application.Quit"は"Application"を"Quit"する。つまり「アプリケーションを終了する」ということです。

第1回目では、AutoCADの作図ウィンドウに"Hello World!"と表示するサンプルプログラム(リスト1)を作成しました。10行目のAddTextはModelSpaceオブジェクトが持つメソッドで、[ダイナミック文字記入]コマンドに相当する単一行の文字列を作成します。また、AddTextメソッドの後に続く()の中は引数で、どのような文字列をどの座標位置に文字高さいくらで記入するのかを","(カンマ)で区切って指示しています。

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

■ プロパティ プロパティ

プロパティとは、サイズや色などのオブジェクトの特徴、表示や非表示などのオブジェクトの動作や状態を定義する属性です。オブジェクトの属性を変更するにはそのプロパティの値を変更します。例えば、ApplicationオブジェクトにはWidthプロパティやHeightプロパティなどがあり、AutoCADのメインウィンドウの幅や高さの値を取得したり変更したりすることができます。多くのプロパティは値の設定、取得ともに可能となっていますが、中には値の取得のみが可能で設定することはできないものもあります。

また、特殊なものとしてオブジェクトへの参照を取得するプロパティというものもあります。これはコレクションオブジェクトや親子関係にあるオブジェクト間で、親オブジェクトを介して子オブジェクトへアクセスする手段を提供するためによく用いられます。

プロパティに値を設定する時は、メソッドと同様にオブジェクトとプロパティを"."(ドット)でつなぎ、設定する値を"="(等号)の右辺に記述します。設定できる値のタイプ(数値や文字列、オブジェクトなど)はプロパティごとに決められています。

書式:  [オブジェクト].[プロパティ] = [値]

例:  Application.Width = 600  ' AutoCADのメインウィンドウの幅を600にする。

プロパティでは"."(ドット)を「の」と読むと意味が分かりやすくなります。例えば"Application.Width = 600"は"Application"の"Width"を"600"に設定する。つまり「アプリケーションの幅を600に設定する」ということです。また、プロパティから値やオブジェクトを取得する時は次のように記述します。

書式:  [オブジェクト].[プロパティ]

例:  MsgBox Application.Width ' AutoCADのメインウィンドウの幅を表示する。
例:  MsgBox Application.ActiveDocuments.Name  ' Applicationオブジェクトから現在の図面(Documentオブジェクト)を取得して、その名前を表示する。
※ "MsgBox"はダイアログボックスにメッセージを表示するVBAの関数です。

今度は、先ほどのリスト1の10行目の部分をリスト2の10行目のように書き換えます。"Color"はTextオブジェクトが持つ文字列の色の取得や設定を行うプロパティです。ModelSpaceオブジェクトのAddTextメソッドは実行した結果作成した文字列をTextオブジェクトとして返しますので、AddTextメソッドによって作成されたTextオブジェクトのColorプロパティをカラーインデックス(ACI)の1(赤色)に設定しています。

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

リスト2の実行結果
リスト2の実行結果

TrueColorプロパティ

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

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

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

■ イベント イベント

マウスのクリックやキーを押した時など、オブジェクトに対して行われた特定の動作や出来事のことをイベントといいます。例えば、図面上で図形を修正したり削除した時イベントが発生し、VBAではこれらのイベントに対して必要な処理を記述することができます。ただし、AutoCADを操作する上でイベントが必要となるケースはあまり多くないと思いますので、別の機会に改めて説明したいと思います。

■ 最後に

VBAでプログラムを作成するということは、AutoCADが公開するオブジェクトが持つ機能をうまく組み合わせながら処理を組み立てていくということです。例えて言うなら、VBAプログラミングはオーケストラのようなものかも知れません。VBAプログラムは楽譜でAutoCADのオブジェクトは演奏者、もちろん指揮者はあなたです。演奏者は楽譜にしたがって楽器を演奏し、指揮者はオーケストラ全体をコーディネートすることで、美しいシンフォニーが完成するというわけです。
SeaGate
コレクション



inserted by FC2 system