一半君的总结纸

听话只听一半君

#120 如何在多个Maya session之间同步script editor的tabs?

如果你是个rigger/char td,肯定免不了要经常敲脚本,Maya最近的script editor越来越好用了,所以有时候不是特别有必要去外面的编辑器里写,正常情况下,你都会开两个以上的maya,一般情况下,script editor里的tabs是保存preference的时候才会存,这样就造成了maya session A里我临时敲的脚本,虽然在session A退出的时候存了,但是在session B退出的时候被覆盖了,lz用了个脑残半自动法让他们能够同步

首先第一步当然是得找到maya自己是怎么存的,显然如果只开一个maya,他能保存每次你写了一半的script,下次再开还会有,并且还是显示上次你退出的时候的tab

lz先用silver searcher搜了下 cmdScrollFieldExecuter 在哪些脚本里被用到了,看来是在 scripts/startup/scriptEditorPanel.mel 里

ag cmdScrollFieldExecuter  /usr/autodesk/maya2015-x64/scripts

cmdScrollFieldExecuter

打开后经观察可知,有多少个tab和tab的名字以及当前是在哪个tab上都是存在optionvar里的,但失败之处是optionvar不是给你在多个maya session之间共享数据用的,如果你就开一个maya,存一个optionvar,关掉maya,再次打开,optionvar读取,这样没问题,但是如果你两个maya都开着,session A的maya存了个optionvar出去,session B的 maya是看不到你存的optionvar的(不管是新建的还是修改已经有的)

举例:
开两个maya,第一个maya里我

optionVar -iv xxx 1;
savePrefs -general;

此时你去看 ~/maya/2015-x64/prefs/userPrefs.mel, 里面已经有 -iv “xxx” 1了,但是如果去第二个maya里

optionVar -ex xxx;
// Result: 0 // 
optionVar -q xxx;
// Result: 0 // 

lz不想自己再想办法保存这个信息出去,所以使用了如下的脑残法:

当然这样可能略卡,因为是先把所有tab删了,再按照userPrefs.mel里存的原样建出来,改进方法也许可以有

  • 看tab里内容有没有改变,有新的我才重建
  • 也许可以把mel转化为python call的写法,这样不会出现很乱的mel.eval
  • 在script editor toolbar工具列上加两个按钮,一个save,一个load

update:
lz在toolbar上加了两个按钮,首先在scriptEditorPanel.mel里可以看到,最后一个按钮是scriptEditorToolbarGotoLineButton,所以可以找到他的parent,然后添加我的按钮,图片是用lz的另一个脑残工具iconChooser找到的

为了能在maya启动时就自动添加这两个按钮,使用调节script editor字体类似的方法,把maya右下角开script editor的那个按钮换掉,当点下他的时候,才去添加工具栏上那两个按钮(因为没点之前,script editor是不存在的)

所以在userSetup.py里可以添加如下内容

上面做的其实就是找到那个按钮,把他的命令换成了“先开script editor,再添加按钮”

script_editor_synctabs

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: