2014-10-03

ディレクトリをOSのファイルブラウザから開く

nukeは、ファイルブラウズにOSのファインダーやエクスプロラーなどといったものを使わずにnuke独自のものを使ってファイルを読み込んだりする。
が、時にこれが不便だったりする。特にReadノードのファイルパスの階層を開きたいとか、同じくWriteノードで指定しているファイルパスの階層にいきたいとか・・・

そんなときに長方するスクリプトです。

dirOpen.py
import nuke
import os
def main():
    sn = nuke.selectedNode()
    fP = sn['file'].value()
    dirP = os.path.dirname(fP)
    dirP = dirP.replace("/", "\\")
    dirP = dirP + "\\"
    
    #print dirP
    os.popen("explorer.exe" + " " + os.path.dirname(dirP))

dirOpen,pyとか適当に名前をつけて保存して、nukeのpluginPathに保存します。
ちなみにmacの場合は・・・

import nuke
import os
def main():
    sn = nuke.selectedNode()
    fP = sn['file'].value()
    dirP = os.path.dirname(fP)
    os.popen("open" + " " + os.path.dirname(dirP))

あとは、menu.pyに登録します。

menu.py
import dirOpen
m = nuke.menu("Nodes")
m.addCommand("dirOpen", "dirOpen.main()", "ctrl+shift+o") 

この場合、ctrl + shift + o ってショートカットを当ててます。
ReadノードやWriteノードを選んで、そのショートカットを実行するとOSのファイルブラウザでその階層が開けます。

5 comments:

  1. menu.pyの所、文末によけいなモノが付いちゃってますよ(コピペミス?)

    ReplyDelete
    Replies
    1. あ、ほんまや。直しておきます!

      Delete
  2. Linuxの場合これで行けると思います。

    def main():
    sn = nuke.selectedNode()
    fP = sn['file'].value()

    dirP = os.path.dirname(fP)

    dirP = dirP + "/"

    os.popen("nautilus" + " " + os.path.dirname(dirP))

    ReplyDelete
    Replies
    1. Linuxを変えたら動かなくなりました。
      TDに教わって改訂

      nautilus → dg-open
      os.popen("xdg-open" + " " + os.path.dirname(dirP))

      "xdg-open"は引き渡すタイプを判別してアプリに引き渡してくれる便利なコマンドだそうです。

      Delete
  3. すいません、さらにおかしくなりました・・・

    ReplyDelete