my funeral week

少しでも日々の生活に変化を。

MayaScripts_OpenSpecifiedFile:パスを明示してシーンを開く

寒すぎる。

今日もちょっとしたスクリプトの紹介になります。

OpenSpecifiedFile

Mayaの「シーンを開く」で使われているファイルブラウザ、使いにくすぎ問題。

マウスの進む戻るボタンも反応しないし、ファイルのブックマークにショートカットを指定すると、ショートカット名ではなくリンク先のディレクトリ名が表示されるとか・・・etc

いろいろ不満はあるんですが、なによりファイルパスを直接指定してシーンを開くことが出来ず、使いにくいファイルブラウザからシーンの選択を強制されること。今日はこれを解決します。


コード

# encoding=utf8
# -*- coding:utf-8 -*-

import os
import pymel.core as pm

BUTTON = ["Open", "Cancel"]

def main ():
    
    dialog = pm.promptDialog(
        t = "Open Specified Path",
        m = "Type File Path",
        b = BUTTON,
        db = BUTTON[0],
        cb = BUTTON[1],
        ds = BUTTON[1]
        )
    
    # Cancel
    if dialog == BUTTON[1] : return
    
    filePath = pm.promptDialog(q = True, text = True)
    
    # Windowsの「パスのコピーに対応」する
    if filePath[0] == '"' and filePath[-1] == '"':
        filePath = filePath[1:-1]
    
    # Fileが存在しない
    if not os.path.exists(filePath):
        pm.confirmDialog(t = "Error", m = "File does not open.\n"+filePath)
        return
    
    # シーンの開く(強制的に)
    pm.openFile(filePath, force = True)


上記のコードを「OpenSpecifiedFile」という名前のPythonファイルに保存し、以下の場所に配置。

C:\Users\"ユーザー名"\Documents\maya\scripts


使い方

以下の2行で実行できます。

import OpenSpecifiedFile
OpenSpecifiedFile.main()


実行すると以下のダイアログが表示されるので、開きたいシーンのフルパスを入れてください。

f:id:garysfirearms108:20211227234628j:plain

ちょっとダイアログ自体が小さいんですけど、それはすんません。

入力したら「Open」を押すか、Enterキーを叩いてください。
現在のシーンはセーブしておいてください。普通に開くのと違って未保存の内容確認を行いませんので。

入力したパスが存在するなら、そのシーンが開かれているはずです。

まぁそれだけです。
これだけなんですけど、標準の機能でこれってないんですかね?