MItSelectionList は、選択されたオブジェクトを含むラッパ クラスです。これは、グローバルなアクティブ セレクション リストのコピー、または自分で構築したリストを使用することができます。
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 のサンプルは、このコードの一部を使用して、代わりにMltSelectionList でセレクション リスト全体に繰り返し処理するように変更することができます。オブジェクトを選択してこれを行うと、前のサンプルとまったく同じ結果になります。
特定のタイプのオブジェクトのみを検索するようにコードを変更することは簡単です。たとえば、セレクション リストのイテレータのコンストラクタを以下のように変更します。
MItSelectionList listIter( list, MFn::kNurbsSurface )
このように変更すると、選択された NURBS サーフェスのみでループが繰り返され、サーフェス CV は無視されます。選択されたサーフェス CV のみで繰り返す場合は、イテレータを以下のように変更します。
MItSelectionList listIter( list, MFn::kSurfaceCVComponent )
このように変更すると、選択された CV のあるサーフェスのみで繰り返されます。