3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

MayaAdvent Calendar 2023

Day 15

Mayaで ファイルを開かずにreferenceしてるファイルを知りたい

Posted at

いちいち mayaのファイルを開いてrefereceされてるファイルのパスとかを確認するのがとても面倒なので、なんとかしたいんです。

とりあえずmaファイルを観察

image.png

ははーん
1行ずつ確認していけば行けそうな気もするな。

1行ずつ評価していって、

  • file で始まり
  • ;で終わる

行を抜き出す

その後、
スペースでsplitして、一番最後のindexがリファレンスしてるデータのパス
と、おもいましたが
ファイルパスにスペースが入ることがあると駄目かもしんない。
となると、ちょっと無理やりですが
スペース + " でsplitして、一番最後のindexがリファレンスしてるデータのパス
なら行けそうなきもします。

雑実装

def getReferenceFilePath(sceneFilePath):
    allFilePath = []
    
    with open(sceneFilePath,"r") as f:
        lines = f.readlines()

        tmpString = ""
        for l in lines:            
            if l.startswith("file -r") and l.endswith(";\n"):
                tmpString = l.split(" \"")[-1]
                referenceFilePath = tmpString.replace("\";\n","")

                if referenceFilePath not in allFilePath:
                    allFilePath.append(referenceFilePath)
                        
        f.close()

    return allFilePath
    
sceneFilePath = "C:/Users/kubo/Desktop/refTest.ma"
print(getReferenceFilePath(sceneFilePath))

##['C:/Users/kubo/Desktop/tama.ma']

お、一応とれました!

なんかうまく行かない奴出現

何だ簡単じゃないですかー と思ったのもつかの間
うまく行かない奴が出現・・・

次回対応します。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?