OLE オートメーション

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

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

空に等価な 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 オブジェクトは使用不可になり、これらのオブジェクトの使用を試みるとランタイム エラーが発生します。