値 > MAXWrapper : 値 > MAXWrapper 派生値 |
次のプロパティとメソッドは、MAXWrapper から派生するすべての値に適用できます。
次の MAXWrapper 値とクラス プロパティによって、標準プリミティブ、拡張プリミティブ、またはパーティクル システムなどのプラグイン カテゴリにアクセスできます。
<MAXWrapperobject>.category Name, read-only <maxclass>.category Name, read-only <maxsuperclass>.categories Array, read-only
category プロパティは、カテゴリを含めた Name 値を返します。このプロパティは、Line、Box、Fog などの 3ds Max オブジェクト クラス、またはすべての 3ds Max オブジェクト クラスのインスタンスに使用できます。シーン ノードでは、プロパティは通常、[作成](Create)パネルのドロップ ダウン リスト内の名前の 1 つに対応します。これらのカテゴリは、 #Standard_Primitives 、 #Compound_Objects 、および #Particles_Only などです。
モディファイヤでは、カテゴリによってモディファイヤが[ボタン セットを設定](Configure Button Sets)/[モディファイヤ](Modifiers)リストのどの領域に表示されるかが決まります。これらのカテゴリは、 #MAX_STANDARD 、 #MAX_EDIT 、および #MAX_SURFACE などです。
テクスチャでは、カテゴリによってテクスチャが[マテリアル](Material)/[マップ ブラウザ](Map Browser)リストのどの領域に表示されるかが決まります。これらのカテゴリは、 #2D (2D マップ)、 #3D (3D マップ)、および #COMP (コンポジタ)などです。
categories プロパティは、シェイプ、GeometryClass、ヘルパー、SpacewarpObject、TextureMap、またはモディファイヤなどの 3ds Max オブジェクト スーパークラスに使用して、そのスーパークラスに使用可能なカテゴリのリストを取得することができます。これは Name の配列として返されます。
MAXSuperClass に属す MAXClass 値の配列を返します。この MAXClass 値を使用すると、クラスのインスタンスを作成できます。
classID プロパティは、MAXWrapper クラスとオブジェクトの内部 3ds Max クラス ID を検索します。
返される値は、3ds Max 内部クラス ID PartA と PartB の 2 つの数値を含む配列です。
MAXWrapper オブジェクトでは、返される値はそのオブジェクトがインスタンスであるクラスの Class ID です。
PartA と PartB の数値の組み合わせは、常に各クラスに固有になります。
MAXWrapper クラスとオブジェクトの 3ds Max スーパークラス ID を取得します。
クラスが作成可能にフラグ設定されている場合、 true を返します。
このプロパティで true が返されても、クラスが本当に作成可能であるという保証はありません。
元になるクラス定義が ClassDesc2 の場合は true を返し、ClassDesc の場合は false を返します。
ClassDesc2 クラスでは ParamBlock2 が使用され、ClassDesc クラスでは ParamBlock (3ds Max 3 より前のバージョンの場合)が使用されます。
読み取り専用のプロパティであり、クラスのローカライズされた名前を返します。
読み取り専用プロパティであり、クラスがプラグイン DLL で定義された場合、クラスを実装する DLL ファイル名を返し、それ以外の場合は undefined を返します。
読み取り専用のブール演算プロパティであり、クラスを実装している DLL が既にロードされている場合は true、DLL が遅延している場合は false を返します。クラスがプラグイン DLL で定義されていない場合は undefined を返します。
copy() 関数は、MAXScript で使用できるすべての 3ds Max オブジェクト(シーン オブジェクト、コントローラ、モディファイヤ、マテリアルなど)で実装されています。この関数はソース オブジェクトのクローンの作成に使用できます。たとえば、個々のコピーが必要な場合や、共有オブジェクトを固有にしたい場合などです。
例: |
この場合、 foo は baz 上のベンド モディファイヤを共有します。これに対して、以下の場合は |
foo に baz 上のベンド モディファイヤの別個のクローンを提供します。 foo に対するベンド モディファイヤへの変更は baz には影響せず、その逆の場合も同様です。 |
次の例では、単一の回転コントローラを共有するいくつかのオブジェクトをすべて設定します。
MAXWrapper オブジェクトがシーン ノードではない場合、コピーは MAXScript のメモリ内のみに作成されます。MAXWrapper オブジェクトがシーン ノードの場合、新規のシーン ノードが作成され、ユーザは 3ds Max ビューポートで確認し、アクセスできます。
プロパティ アクセスとインデックス(必要に応じて)を使用して指定した MAXWrapper オブジェクトに名前を指定する、MAXScript 式を含む文字列を返します。
explicitNames: オプションを true に設定すると、明示的なノード名が返されます。false に設定すると、選択に関連する名前が返されます。指定しない場合、[カスタマイズ](Customize) > [基本設定](Preferences) > [MAXScript タブ](MAXScript tab) > [コードの生成](Code Generation)下の現在のマクロ レコーダ設定が使用されます。
このメソッドは、マクロ レコーダによって使用される内部メソッドを公開したものです。 explicitNames: オプションを指定しない場合、出力はマクロ レコーダ オプションによって変化します。
マクロ レコーダの例: |
マクロ レコーダ オプションを[明示的シーン オブジェクト名](Explicit scene object names)から[選択に関連するシーン オブジェクト名](Selection-relative scene object names)に変更すると、次のようになります。 |
このメソッドは、ノード(またはその他のオブジェクト)内に表示される「基本オブジェクト」を直接作成するために使用します。これは主に、一時的なジオメトリ基本オブジェクトを作成するために使用されます。作成されたオブジェクトから抽出されたメッシュは、スクリプト化されたジオメトリ プリミティブ プラグインのメッシュを作成する際に役立ちます。オプションの <keyargs> は、クラス コンストラクタに提供できるのと同じ基本オブジェクトのキーワード引数です。これらは一般に基本オブジェクトのパラメータです。
例: |
ボックスのインスタンスを作成します。このボックスはノードではないため、3ds Max ビューポートには表示されません。また、ボックス オブジェクトに関連付けられたジオメトリのみを含みます。これらのインスタンス オブジェクトのメッシュ表示は mesh プロパティで取得でき、このプロパティは TriMesh 値を生成します。 |
古い MAXWrapper のすべてのインスタンスを新しい MAXWrapper に置き換えます。古い MAXWrapper と新しい MAXWrapper には、同じスーパークラスが必要です。
transferCAs が true である場合は、参照を転送するオカレンスが 1 つ以上存在すれば、old_MAXWrapper のカスタム アトリビュートは new_MAXWrapper に転送されます。
3ds Max 2008 以降 で使用可能です。従来、Avguard 機能拡張として提供されていた機能です。
値が MAX オブジェクト(MAXWrapper)を示す場合は true を返します。MAX オブジェクトは削除されていません。
isValidValue <value>
3ds Max 2017 の 新機能 : 引数が有効値の場合は True を返します。値が削除されている場合は False を返します。
3ds Max の重要な内部機能で、3ds Max オブジェクト間の従属関係が定義されます。たとえば、マテリアルはさまざまなマップに、パス コントローラはパーセント コントローラに、シーン ノードは基本オブジェクトに従属します。
refs 構造体には、MaxWrapper オブジェクト参照にアクセスして管理するためのメソッドがあります。これらのメソッドの主な目的は、参照階層のデバッグおよび調査です。一般的なスクリプトおよびプラグインを開発する場合は、これらは不要です。「Get」メソッドは安全に使用できます。「Set/Replace」メソッドは安全性が極めて低く、操作内容について実際に把握しているユーザのみが使用してください。
以下のメソッドでは、指定した MAXWrapper オブジェクトに従属する MAXWrapper オブジェクトが返されます。
指定した MAXWrapper オブジェクトに従属する、3ds Max MAXWrapper オブジェクトの配列を返します。指定する MAXWrapper オブジェクトには、シーン ノード、コントローラ、マテリアル、モディファイヤなど、あらゆる MAXWrapper オブジェクトを使用できます。
オプション キーワード immediateOnly を true に指定すると、指定したオブジェクトの直接従属のみが返されます。
例: |
返される内容 |
これは、 $foo の diffuseMap は、material #1、material #2、material #3、および noise TextureMap #2 で参照されていることを示します。 |
次の例では、いくつかのオブジェクトを作成し、他のオブジェクトに従属するこれらのオブジェクトにコントローラを設定します。
指定した MAXWrapper オブジェクトに直接従属する、3ds Max MAXWrapper オブジェクトの配列を返します。
指定する MAXWrapper オブジェクトには、シーン ノード、コントローラ、マテリアル、またはモディファイヤといった MAXWrapper オブジェクトを使用できます。
例: |
次のような値が返されます。 |
これは、ノードがその変換コントローラと基本オブジェクトに直接従属することを示します。このノードは、これらのオブジェクトが従属する MAXWrapper オブジェクト(位置、回転、変換コントローラのスケール コントローラ)にも、間接的に従属します。 |
refs.dependson も、オブジェクトのカスタム アトリビュートを返します。3ds Max 7 より前のバージョンでは、カスタム アトリビュートが技術的にオブジェクトに従属していないため、このメソッドはカスタム アトリビュートを考慮していませんでした。
2 つの MAXWrapper オブジェクトが従属ループを作成する場合は true、そうでない場合は false を返します。
指定された MAXObject に従属する 1 つまたは複数のノードを返します。
firstOnly: が true の場合は、指定された MAXObject に従属するノードが存在しない場合には undefined の値を返し、それ以外の場合は、1 つ目に検索された従属ノードに対応する MAXNode 値が返されます。
firstOnly: が false または指定されていない場合は、返り値は常に配列になります。
baseObjectOnly: が true の場合は、MAXObject が基本オブジェクトであるノードだけが返されます。
3ds Max 2008 以降で使用可能です。従来、Avguard 機能拡張として提供されていた機能です。
refs.replaceReference <max_obj> <int> {<max_obj> | undefined}
インデックス <int> の付いた参照を、新しい参照で置き換えるか、または undefined で置き換えます(参照を効果的に削除します)。 注: このメソッドは安全でありません。操作内容を把握していないユーザが実行すると、3ds Max がクラッシュします。
refs.setIndirectReference <MaxWrapper> <int> {<MaxWrapper | undefined}
インデックス <int> の付いた間接参照を、新しい参照で置き換えるか、または undefined で置き換えます(参照を効果的に削除します)。 注: このメソッドは安全でありません。操作内容を把握していないユーザが実行すると、3ds Max がクラッシュします。
refs.getReference <MaxWrapper> <int>
オブジェクトの参照配列内の、インデックス <int> の付いた参照を取得します。
例:
s = sphere() -- $Sphere:Sphere001 @ [0.000000,0.000000,0.000000] refs.GetReference s 1 -- Controller:Position_Rotation_Scale
refs.getIndirectReference <MaxWrapper> <int>
オブジェクトの参照配列内の、インデックス <int> が付いた間接参照を取得します。
refs.getAddr <MaxWrapper>
MaxWrapper のアドレスを IntegerPtr 値として返します。
例:
s = sphere() -- $Sphere:Sphere001 @ [0.000000,0.000000,0.000000] refs.getAddr s -- 1530273376P
refs.getNumRefs <MaxWrapper>
指定した MaxWrapper オブジェクトで保持される参照の数を返します。
例:
s = sphere() -- $Sphere:Sphere003 @ [0.000000,0.000000,0.000000] refs.getNumRefs s -- 16
refs.getNumIndirectRefs <MaxWrapper>
指定した MaxWrapper オブジェクトで保持される間接参照の数を返します。MaxScript を使用して間接参照を作成することはできません。
例:
n = NodeTransformMonitor() -- ReferenceTarget:NodeTransformMonitor refs.getNumIndirectRefs n -- 1
3ds Max 2008 以降 で使用可能です。従来、Avguard 機能拡張として提供されていた機能です。
有効な partID の値および SDK における同等のものは次のとおりです。
msg の値は、maxsd¥kincluderef.h で指定され、SDK ヘルプ トピック「List of Reference Messages and the their PartID parameters」にも記述されている REFMSG の値のいずれかに対応します。msg の既定値は、partID が #putInFG である場合を除いて 0x050(REFMSG_CHANGE)で、partID が #putInFG である場合は0x070(REFMSG_FLAGDEPENDENTS)です。
propogate: が true の場合(既定値)は、メッセージは従属の従属にも再帰的に伝播されます。
このメソッドは、コントローラ内で使用されている値が変更されているスクリプト化コントローラを通知する場合に便利です。
実行コードの例: |
実行結果: |
ビューポートを更新して変更が反映されることはありません。 |
実行結果: |
ビューポートが更新され、コントローラの従属(球基本オブジェクトおよびノード)にコントローラが変更されたことを通知したことが反映されます。 |
参照通知システムを有効/無効にします。組み合わせて使用する必要があります。
3ds Max 2008 以降 で使用可能です。従来、Avguard 機能拡張として提供されていた機能です。