Open3

【定期的に更新】個人的に欲しかった、ちょっとしたMELとか置き場

DolphiiiinDolphiiiin

たまに作るMayaのMELを置いていくスクラップです。

スクリプトエディタに張り付けて使用するか、シェルフにMELを設定して使用してください。

DolphiiiinDolphiiiin

フォルダをエクスプローラーで開くMEL

現在プロジェクト設定されているフォルダをエクスプローラーで開く

{
    string $workspaceDir = `workspace -q -rootDirectory` ;
    print($workspaceDir) ;
    system ("explorer /select,\"" + toNativePath($workspaceDir) + "\"");
}

sourceimagesフォルダーをエクスプローラーで開く

{
    string $workspaceDir = `workspace -q -rootDirectory` + "sourceimages" ;
    string $run = "explorer \"" + `toNativePath($workspaceDir)` + "\"" ;
    print($run) ;
	system ($run);
}

imagesフォルダーをエクスプローラーで開くMEL

{
    string $workspaceDir = `workspace -q -rootDirectory` + "sourceimages" ;
    string $run = "explorer \"" + `toNativePath($workspaceDir)` + "\"" ;
    print($run) ;
	system ($run);
}

解説

workspace -q -rootDirectory
これで、現在のプロジェクト設定されているフォルダのパスを取得することができる。
この関数によって出力されるフォルダパスは、C:/hoge/hogeのようなスラッシュ区切りのフォルダパスなので、toNativePath(string)に渡すことで、Windowsで使用できるバックスラッシュ区切りのパスに変換することができる。

system (command);
このsystemが、Windowsのコマンドを実行できる関数。

DolphiiiinDolphiiiin

複数選択したオブジェクトで、Shapeのアトリビュートを一括設定する

{
// 選択したすべてのオブジェクトに対して処理を行う
string $selectedObjects[] = `ls -sl`;

// 各オブジェクトごとに処理を行う
for ($obj in $selectedObjects) {
    // オブジェクトのトランスフォームノードを取得する
    string $transformNode = $obj;
    
    // トランスフォームノードからシェイプノードを取得する
    string $shapeNode[] = `listRelatives -shapes $transformNode`;

    // シェイプノードが存在する場合
    if (size($shapeNode) > 0) {
        // シェイプノードがメッシュである場合
        if (`nodeType $shapeNode[0]` == "mesh") {
            // アトリビュートを設定する
            setAttr ($shapeNode[0] + ".aiExportColors") 1; //ここでアトリビュートを設定 (今回は、ArnoldのExport Vertex Colorを有効にしている)
            print ("\"" + $shapeNode[0] + ".aiExportColors\" が設定されました。\n");
        } else {
            print ("\"" + $obj + "\" のシェイプノードはメッシュではないため、スキップされました。\n");
        }
    } else {
        print ("\"" + $obj + "\" にシェイプノードが見つかりませんでした。\n");
    }
}
}