MltSelectionList は、選択されたオブジェクトを含むラッパ(wrapper)クラスです。これは、グローバルなアクティブ セレクション リストのコピー、または自分で構築したリストを使用することができます。
MItSelectionList を使用してセレクション リストにあるオブジェクトをフィルタ処理すると、ある特定のタイプのオブジェクトを表示できます(MSelectionList では、選択したオブジェクトをフィルタ処理することはできません)。
MGlobal::getActiveSelectionList( list );
for ( MItSelectionList listIter( list ); !listIter.isDone(); listIter.next() )
{
listIter.getDagPath( node, component );
nodeFn.setObject( node );
cout << nodeFn.name().asChar() << “%s is selected” << endl;
}
このコードによって MSelectionListのサンプルを変更し、MSelectionList の代わりに MltSelectionList を使用してセレクション リストを繰り返し処理することができます。オブジェクトを選択してこれを行うと、前のサンプルとまったく同じ結果になります。
特定のタイプのオブジェクトのみを検索するようにコードを変更することは簡単です。たとえば、セレクション リストのイテレータのコンストラクタを以下のように変更します。
MItSelectionList listIter( list, MFn::kNurbsSurface )
このように変更すると、選択された NURBS サーフェスのみでループが繰り返され、サーフェス CV は無視されます。選択されたサーフェス CV のみで繰り返す場合は、イテレータを以下のように変更します。
MItSelectionList listIter( list, MFn::kSurfaceCVComponent )
このように変更すると、選択された CV のあるサーフェスのみで繰り返されます。