2014年8月29日金曜日

Maxscript getClassInstances

getClassInstancesという関数があるようです。


getClassInstances メソッドは、シーン内に存在する、指定したクラスの全インスタンスの配列を返します。
構文は次のようになります。

getClassInstances <MAXClass> target:<MAXObject> asTrackViewPick:<bool>

<例>
bitmaps = getClassInstances BitmapTexture
for b in bitmaps do print b.filename

--シーン内全ての(?)BitmapTextrueのファイル名を表示します。

bitmaps = getClassInstances BitmapTexture target:$
for b in bitmaps do print b.filename

--選択したオブジェクトに存在する(?)BitmapTextrueのファイル名を表示します。

mats = getClassInstances Standardmaterial
for m in mats do print m.name

--シーン内全てのStandardmaterialの名前を表示

ms = getClassInstances meshsmooth
for m in ms do print m.iterations

-- シーン内全てのメッシュスムースの分割数を表示します。

ms = getClassInstances meshsmooth
for m in ms do m.iterations = 2

-- シーン内全てのメッシュスムースの分割数を2にします。

------------------------

クラス名はスクリプトリファレンスの「MAXWrapper」の項目か
Classof <node>を使う事で調べる事が出来ると思います。

例えばオブジェクトを1つ選択し、
classof $.mat
と実行するとリスナーに選択しているマテリアルのクラス名が表示されるかと思います。

これと、昔記事にした「とにかく収集するrefs.dependents」を使うと仕事が捗りそうですね。

0 件のコメント:

コメントを投稿