外部参照シーン値

外部参照シーン値3ds Max の外部参照シーン オブジェクトを表します。 xrefs.addNewXRefFile() および xrefs.getXRefFile() 関数を呼び出すと、外部参照シーン値が返されます。

外部参照シーン オブジェクトはネスト構造にできます。たとえば、シーン ファイル A に外部参照ファイル B を指定する外部参照シーン オブジェクトが含まれ、更に外部参照ファイル B に外部参照ファイル C を指定する外部参照シーン オブジェクトが含まれるようにできます(つまり、A は B を外部参照し、B は C を外部参照します)。ネストされた外部参照シーン オブジェクトにアクセスできるようにするため、該当する XRefScene メソッドにはオプションのルート キーワード パラメータが用意されています。この引数が指定されている場合、これらのメソッドでは指定した外部参照シーン値のルート ノードに作用します。それ以外の場合は、現在のシーンのルート ノードに作用します。A から C に到達するには、A をロードし、次のような処理を行います。

bXref = xrefs.getXRefFile 1-- taken from root node of current scene
cXref = xrefs.getXRefFile 1 root:bXref-- taken from root of bXref
cRoot = cXref.tree -- to get root of C 
注:

スクリプトに外部参照されているシーンのオブジェクトへの明示的な参照($sphere01 など)があるスクリプト コントローラのシーンには、外部参照シーンにおけるオブジェクトが MAXScript で表示できないため、スクリプト作成ができないという問題があります。これは実際には外部参照に関して一般的に見られる問題で、外部参照ファイル内には、明示的なシーン オブジェクト参照に依存するどんなスクリプト(スクリプト コントローラ、パラメータの関連付け、コールバック スクリプトなど)も含めることはできません。

この問題は、3ds Max 8 以降で解決されています。スクリプト コントローラは、パラメータ ブロックを使用して参照を格納し、ネストされた外部参照内でこれらを解決できます。

   

コンストラクタ

xrefs.addNewXRefFile <filename_string> [		#noLoad] [		root: <XRefScene>] 	 

新規の外部参照シーン オブジェクトを追加し、外部参照シーン値を返します。 #noLoad が指定されていない場合は、外部参照シーン ファイルはすぐにロードされ、シーンが更新されます。 #noLoad が指定されている場合は、シーンはユーザが要求するまで更新されません。変更した外部参照シーン オブジェクトを更新するには、 updateXRef() メソッドを使用して外部参照シーン オブジェクトをロードしてください。

root:<XRefScene> が指定されている場合、外部参照シーン オブジェクトは、指定された外部参照シーン値に対応するファイルの外部参照シーン オブジェクトのように、現在のセッション中に現在のファイル内で扱われます。現在のシーンが保存され再ロードされた、または updateXRef() がルート外部参照オブジェクト上で実行されたという理由で、外部参照シーン オブジェクトはシーンから削除されます。

DRF ファイルが渡された場合、 xrefs.addNewXRefFile はエラーを返しません。この場合、undefined とは違う値を返し、外部参照された DRF ファイルは「問題」のあることを示すように赤で表示されます。この動作は、ユーザが[外部参照シーン](Xref Scene) | [追加](Add)ダイアログ ボックスで[すべてのファイル(*.*)](All Files filter (*.*))を選んだ後に DRF ファイルを開いた場合と同じです。

   

xrefs.	 getXRefFile <index> [	 root: <XRefScene>]   

root が指定されていない場合、[外部参照シーン](XRef Scene)ダイアログ ボックス内でインデックス指定された外部参照シーン オブジェクトに対応する外部参照シーン値が返されます。 root:<XRefScene> が指定されている場合、外部参照シーンの外部参照シーン オブジェクト内にネストされた外部参照シーン オブジェクトに対応する外部参照シーン値が返されます。インデックスは 1 で始まり、[外部参照シーン](XRef Scene)ダイアログ ボックスにリスト表示されている外部参照シーン オブジェクトの順番に対応しています。 xrefs.getXRefFileCount() メソッドを使用してシーンの外部参照シーン オブジェクト数を判断できます。

   

xrefs.addNewXRefObject <filename string> <object name>  dupMtlNameAction: {  #prompt|  #useXRefed|  #useScene|  #autoRename} 

指定された MAX ファイル名とオブジェクト名を使用して新しい外部参照シーン オブジェクトを追加し、成功した場合は新しいオブジェクト、ファイル名またはオブジェクト名が見つからなかった場合には undefined を返します。

3ds Max 2010 で導入されたオプションの dupMtlNameAction: キーワードは、重複するマテリアル検出に対するメソッドの動作をコントロールします。指定されていない場合の既定値の動作は、 #prompt です。

objXRefs Interface のメソッド objXRefs.adNewXRefObject() は、このオプションを提供するものではありません。

   

プロパティ

<XRefScene>.filename String default: varies 

外部参照シーン オブジェクトのファイル名です。このプロパティを新しいシーン ファイル名に変更した場合、初期シーン ファイルのオブジェクトの代わりに指定したファイルのオブジェクトが表示されます。

   

<XRefScene>.tree Node 

外部参照シーンオブジェクトのルート ノードです。これは読み込み専用のプロパティです。このプロパティを使用すると、外部参照シーン オブジェクトの子オブジェクトにアクセスできます。

例:

aXref=xrefs.getXRefFile 1-- returns first XRef Scene object
aXref.tree.children-- objects in the XRef Scene object,
-- for example, may return:
-- #children($Box01, $Box02)
aXref.tree.children[1].width-- returns width value of $Box01

   

<XRefScene>.parent Node default: undefined 

外部参照シーン オブジェクトの親です。既定ではこれは undefined ですが、シーン内の任意のノードに設定できます。

   

<XRefScene>.autoUpdate Boolean default: false 

true の場合、外部参照ファイルの自動更新がオンになります。

   

<XRefScene>.boxDisp Boolean default: false 

true の場合、外部参照シーン オブジェクトのすべてのノードがボックス表示モードで表示されます。

   

<XRefScene>.hidden Boolean default: false 

true の場合、外部参照シーン オブジェクトが非表示になります。

   

<XRefScene>.disabled Boolean default: false 

true の場合、外部参照シーン オブジェクトが無効になります。

   

<XRefScene>.ignoreLights Boolean default: false 

true の場合、外部参照シーン オブジェクト内のライトは表示されません。

   

<XRefScene>.ignoreCameras Boolean default: false 

true の場合、外部参照シーン オブジェクト内のカメラは表示されません。

   

<XRefScene>.ignoreShapes Boolean default: false 

true の場合、外部参照シーン オブジェクト内のシェイプは表示されません。

   

<XRefScene>.ignoreHelpers Boolean default: false 

true の場合、外部参照シーン オブジェクト内のヘルパーは表示されません。

   

<XRefScene>.ignoreAnimation Boolean default: false 

true の場合、外部参照シーン オブジェクト内のすべてのアニメーションは無視されます。

   

メソッド

delete <XRefScene> 

外部参照シーン オブジェクトを削除します。

   

merge <XRefScene> 

外部参照シーン オブジェクトのノードをシーンに合成し、外部参照シーン オブジェクトを削除します。

   

updateXRef <XRefScene> 

外部参照シーン オブジェクトの再読み込みを試みます。処理が正常に終了した場合は true 、その他の場合は false を返します。

   

flagChanged <XRefScene> 

このメソッドは、指定した外部参照シーン オブジェクトが変更されており、更新されるべきであることを示します。変更した外部参照シーン オブジェクトを更新するには、 xrefs.updateChangedXRefs() メソッドを使用します。

関連するメソッド

   

xrefs.getXRefFileCount [root: <XRefScene>] 

root が指定されていない場合、シーンにあるトップレベルの外部参照シーン オブジェクトの総数が返されます。 root:<XRefScene> が指定されている場合、外部参照シーンの外部参照ファイル内にネストされている外部参照ファイルに含まれる外部参照シーン オブジェクトの総数が返されます。

   

xrefs.deleteAllXRefs [root: <XRefScene>] 

root が指定されていない場合、外部参照シーン オブジェクトはすべて削除されます。 root:<XRefScene> が指定されている場合、指定した外部参照シーンの外部参照シーン オブジェクトとその内部にネストされている外部参照シーン オブジェクトだけが削除されます。

   

xrefs.updateChangedXRefs [#noRedraw] [root: <XRefScene>] 

root が指定されていない場合、変更のフラグが設定されているすべての外部参照シーン オブジェクトが更新されます。 root:<XRefScene> が指定されている場合、指定した外部参照シーンの外部参照シーン オブジェクトのうち、変更フラグが設定されているオブジェクトだけが更新されます。 #noRedraw が指定されている場合、ビューポートは外部参照シーン オブジェクトがロードされるまで更新されません。外部参照シーン オブジェクトが正常にロードされた場合は true 、その他の場合は false を返します。

   

xrefs.findUnresolvedXRefs [root: <XRefScene>] 

root が指定されていない場合、すべての未解決の外部参照シーン オブジェクトに対してファイル名文字列の配列を返します。 root:<XRefScene> が指定されている場合、指定した外部参照シーンの外部参照シーン オブジェクト内の未解決の外部参照シーン オブジェクトだけが返されます。

   

xrefs.attemptUnresolvedXRefs [root: <XRefScene>] 

root が指定されていない場合、現在未解決の外部参照シーン オブジェクトがあれば、そのロードを試行します。 root:<XRefScene> が指定されている場合、指定した外部参照シーンの外部参照シーン オブジェクト内の未解決の外部参照シーン オブジェクトだけがロードされます。