OLE オートメーション

 
 
 

MAXScript で提供されている OLE オートメーション機能では、Visual Basic、Excel、Paradox などのアプリケーションに対して 3ds Max を OLE オートメーション サーバとして使用できます。この機能を使用すると、VB や Excel などの OLE オートメーション クライアントから呼び出せる MAXScript 関数を発行して、モデルやアニメーションを生成したり、現在のシーンからデータを返すことができます。スクリプトのサンプルには、簡単なビジネス グラフを作成する一連の MAXScript 関数の定義や、Excel-VB でスクリプト化されたメニューを持ち、セルの選択をこれらの MAXScript 関数に渡してアニメートされた棒グラフを作成する Excel スプレッドシートの例が含まれています。

このメカニズムには、次のような機能と制限があります。

integers
reals (floats)
currency (floats)
string
boolean
empty (an empty spreadsheet cell, for example) 

空に等価な MAXScript の値は、 undefined です。

OLE Objects (interfaces) 

OLE クライアント

MAXScript OLE オートメーション クライアント システムでは、MAXScript を使って 3ds Max 内に OLE オートメーション(現在は Active-X)オブジェクトを作成したり、Excel のスプレッドシートの作成や 3ds Max オブジェクト情報のセルへの挿入など、MAXScript と関連付けられている OLE オートメーション サーバのサービスをコントロールできます。

関数

 
 createOLEObject()

は、OLE オートメーション サーバへの接続を確立するときに使用します。 createOLEObject() の戻り値は OLEObject クラスのインスタンスです。

例:

xl = createOLEObject "Excel.Sheet"

これによって、Excel への接続が開かれ、シート オブジェクトが作成され、それが変数 xl に配置されます。この関数に対する単一の引数は OLE progID 文字列です。新しい OLE オブジェクトのプロパティにアクセスし、メソッドを呼び出すことができます。

例:

xl.application.name

次のように返されます。

"Microsoft Excel"
xl.application.visible = true

デスクトップ上で可視の Excel が生成されます。MAXScript の場合と同様に、ドット「.」表記を使って OLE オブジェクトに対するプロパティを取得します。また、OLE オブジェクト プロパティとして OLE オブジェクト メソッドを参照します。たとえば、Sheet にセル座標をとり、Cell OLE オブジェクトを返すメソッド「cells」があるとします。

xlc = xl.application.cells 1 1

左上のセルを xlc に配置します。値を次のように設定します。

xlc.value = 123.45

createOLEObject() にアタッチされているサーバ アプリケーションは、作成された MAXScript OLE オブジェクトが最後にガベージ コレクションされるときに解放および停止されます。 releaseOLEObject() 関数を使って、OLE サーバ アプリケーションから明示的に接続を切断できます。

形式は次のとおりです。

releaseOLEObject <ole_object>

OLE オブジェクトに対して releaseOLEObject() を呼び出すと、その OLE オブジェクトは使用不可になり、さらにそれを使用しようとすると、記述エラー メッセージが表示されます。

releaseAllOLEObjects() 関数を使って、すべてのアクティブな OLE サーバ アプリケーションから明示的に接続を切断できます。

この形式は、次のとおりです。

 
 releaseAllOLEObjects
()

この関数を呼び出すと、すべての既存の OLE オブジェクトは使用不可になり、これらのオブジェクトの使用を試みるとランタイム エラーが発生します。