【MEL更新】ウィンドウの位置をリセット 新Mayaに対応

![]() | AriWindowPositionReset |
2019/10/14 バグ修正
Maya内で使用するウィンドウを移動させて再表示するツールの更新です。
Maya2017以降の新仕様のウィンドウに対応させ、意図したものだけ移動できるようにUIも付けました。
デュアルディスプレイなど、環境を変化させて、ウィンドウがどこかにいってしまって戻せないときなどに役に立つと思います。
起動
AriWindowPositionResetを実行すると、ウィンドウがMayaメインウィンドウの左上に表示されます。

こいつ自体がどっかに行ったら元も子もないので、
必ずMayaメインウィンドウの位置にでます。
ウィンドウ移動
移動させたいウィンドウ名の「Reset」ボタンを押すと、
このウィンドウのすぐ右に移動してきます。

※
・一体化しているウィンドウは移動しません。(移動するものもあります)
・一部対応していないウィンドウもあります。
・下記の方法で移動させられるウィンドウもあります。
【Mayaあるある】ウィンドウがでない(画面外にいってもどせない)
コピペ用コード
ただこれ、おそらく、困るまではわざわざMELをダウンロードしないですよね?
でも困ったときにはすぐに対処したいですよね?
ということで、今回も、ダウンロードしなくてもコピペですぐに対処できるようにソースコード用意しておきます。
困ったとき思い出してまたこのページに検索か何かで来てくださいw
下記の枠の中を全部コピーして、
global proc AriWindowPositionReset_Reset(){
string $windowList[] = `lsUI -typ "window"`;
string $dockControlList[] =`lsUI -typ "dockControl"`;
print("\ndock--------------------\n\n");
for($dock in $dockControlList){
if(!`dockControl -ex $dock`){
continue;
}
dockControl -e -fl false $dock;
}
int $xy[2];
for($win in $windowList){
if($win == "MayaWindow"){
$xy = `window -q -tlc $win`;
break;
}
}
for($win in $windowList){
if(!`window -ex $win`){
continue;
}
if($win != "MayaWindow" && $win != "learningMoviesLaunchWnd" && $win != "ColorEditor"
&& $win != "CommandWindow" && $win != "gozwin" && $win != "nexFloatWindow" && $win != "AriCompactToolSettingsWindow" ){
window -e -tlc $xy[0] $xy[1] $win;
}
else{
}
}
}
global proc AriWindowPositionReset_ResetGO(string $ui){
print ($ui+"\n");
int $winPos[] = `window -q -tlc AriWindowPositionReset`;
int $winWidth = `window -q -w AriWindowPositionReset`;
int $movePos[];
$movePos[0] = ($winPos[0]);
$movePos[1] = ($winPos[1] + $winWidth + 10);
if(`exists("workspaceControl")`){
if(`workspaceControlState -ex $ui`){
if(`workspaceControl -ex $ui`){
workspaceControlState -e -tlc ($movePos[0]+30) $movePos[1] $ui;
workspaceControl -e -fl true $ui;
return;
}
}
}
if(`window -ex $ui`){
window -e -tlc $movePos[0] $movePos[1] $ui;
}
}
proc AriWindowPositionReset_row(string $ui){
string $label = $ui;
if(`window -ex $ui`){
$label = `window -q -title $ui`;
}
if(`dockControl -ex $ui`){
$label = `dockControl -q -l $ui`;
}
if(`exists("workspaceControl")`){
if(`workspaceControl -ex $ui`){
$label = `workspaceControl -q -label $ui`;
}
}
string $row = `rowLayout -nc 2 -adj 1`;
textField -text $label -ed false;
button -l "Reset" -c ("AriWindowPositionReset_ResetGO(\""+ $ui +"\")");
setParent..;
}
global proc AriWindowPositionReset_Reload(){
global string $AriWindowPositionResetW_SL;
global string $AriWindowPositionResetW_CL;
string $processedUI[];
int $processCount = 0;
string $windowList[] =`lsUI -typ "window"`;
string $dockControlList[] =`lsUI -typ "dockControl"`;
string $dumpWidgetsList[] =`lsUI -dw`;
deleteUI $AriWindowPositionResetW_CL;
$AriWindowPositionResetW_CL = `columnLayout -adj true -p $AriWindowPositionResetW_SL`;
if(`exists("workspaceControl")`){
for($dumpWidgets in $dumpWidgetsList){
if(`workspaceControl -ex $dumpWidgets`){
if(`workspaceControl -q -fl $dumpWidgets`){
AriWindowPositionReset_row($dumpWidgets);
$processedUI[$processCount] = $dumpWidgets;
$processCount++;
}
}
}
}
separator;
for($window in $windowList){
if(stringArrayContains($window,$processedUI))continue;
if(`window -ex $window`){
if($window != "MayaWindow" && $window != "AriWindowPositionReset"){
AriWindowPositionReset_row($window);
$processedUI[$processCount] = $window;
$processCount++;
}
}
}
separator;
for($dockControl in $dockControlList){
if(`dockControl -ex $dockControl`){
if(`dockControl -q -fl $dockControl`){
AriWindowPositionReset_row($dockControl);
}
}
}
setParent..;
}
global proc AriWindowPositionReset(){
global string $AriWindowPositionResetW_SL;
global string $AriWindowPositionResetW_CL;
int $xy[2] = {0, 0};
if(`window -ex "MayaWindow"`){
int $getXY[] = `window -q -tlc MayaWindow`;
$xy[0] = $getXY[0]+10;
$xy[1] = $getXY[1]+10;
}
print ("MayaWindow "+$xy[0]+","+$xy[1]+ "\n\n");
if((`window -ex AriWindowPositionReset`)==true)deleteUI AriWindowPositionReset;
window -tlb true -title "AriWindowPositionReset" -w 300 -h 400 AriWindowPositionReset;
string $form = `formLayout`;
$AriWindowPositionResetW_SL = `scrollLayout -cr true`;
$AriWindowPositionResetW_CL = `columnLayout`;
setParent..;
setParent..;
string $button = `button -l "Reload" -c "AriWindowPositionReset_Reload()"`;
formLayout -e
-af $button "left" 0
-af $button "right" 0
-af $button "bottom" 0
-ac $AriWindowPositionResetW_SL "bottom" 0 $button
-af $AriWindowPositionResetW_SL "top" 0
-af $AriWindowPositionResetW_SL "left" 0
-af $AriWindowPositionResetW_SL "right" 0
$form;
showWindow;
window -e -tlc $xy[0] $xy[1] AriWindowPositionReset;
AriWindowPositionReset_Reload();
}
AriWindowPositionReset
ここにペーストしたらEnterキーです。

更新
2019/10/14 バグ修正
Mayaを起動した際、既に開いているウィンドウに対して反応がなかったので修正しました。
ダウンロード
MELファイル版もちゃんとあります。
お気に召したらダウンロードしてください。
Download
つぶやき
最近、昔作ったツールを発掘しては、やばいこのままじゃ今のMayaにはダメじゃんと思うのが少しブーム??
tag : Maya, MEL, Mayaあるある, UI, AriWindowPositionReset,
スポンサーリンク