//# //#
ラベル script の投稿を表示しています。 すべての投稿を表示
ラベル script の投稿を表示しています。 すべての投稿を表示

2018/04/15

【Maya】versionUP保存

MayaにはAEやNukeのように現在のファイル名の数字をあげて保存という機能が用意されていません。
(test_v01_01→test_v01_02みたいな)
前に作ったはずなのですがどこかに消えてしまい、
良さそうなサンプルもあったのでPythonで作ってみました。

import os,re
from maya import cmds,OpenMaya

def iterativeSave(filename):
 sPN = os.path.split(filename)
 oldnum = re.findall(r'[0-9]+', sPN[1]).pop()
 pad = len(oldnum)
 num = str(int(oldnum)+1).zfill(pad)
 name,ext = os.path.splitext(sPN[1])
 name = name.rsplit('_',1)
 newNum = name[-1].replace(oldnum,num)
 NewFullPath = sPN[0] + '/' + name[0] + '_' +newNum + ext

 return NewFullPath

def main():
 filename = cmds.file(query=True,sceneName=True)
 if not filename:
  OpenMaya.MGlobal.displayError('ファイルが保存されていません')
  return
 newfilename = iterativeSave(filename)
 cmds.file(rename=newfilename)
 cmds.file(f=True, save=True)
 OpenMaya.MGlobal.displayInfo('//Result: '+newfilename)

main()

上記のコードをホットキーエディタにアサインすれば完了です。
ファイル名を _ で区切り、一番最後の数字のみ一つ上がる仕組みです。
その際「v01」など文字が含まれていても数字のみ変更されます。
最後にイニシャル付ける方などはちょっと書き換えが必要です。

ではではバグ、要望等ありましたら、ご連絡よろしくお願いします。m(_ _)m

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
参考サイト
https://sdm.scad.edu/faculty/mkesson/vsfx705/wip/best/spring12/nestor_prado/scripts_iterativesave.html

2016/12/23

【Max】別名保存の初期ディレクトリを開いているMaxのディレクトリにする。

この前の記事のMax版です。

以下のScriptをMaxScriptエディタなどにコピペして「Ctrl+E」で実行
macroScript saveAsMax category:"tm_tool" 
tooltip:"saveAsMax"
(
maxfile = maxFilePath + maxFileName
try (
 savename = getMAXSaveFileName filename:maxfile ()
 saveMaxFile savename 
 )
catch()

)

「カスタマイズ」→「ユーザーインターフェースをカスタマイズ」で、
カテゴリを「tm_tool」にして「saveAsMax」のホットキーを設定して完了。


デフォだと何故か「Shift+Ctrl+s」の割り当てないのでそれを割り当てるのが、
丁度いいじゃないでしょうか。
ちなみに同名のファイルがあっても警告なしで上書きします。
正確には現在のシーンと同名のときのみ出るみたいです。

※161230追記
下記のものを使えば現在のシーンと同名でも警告が出ます。
macroScript saveAsMax category:"tm_tool" 
tooltip:"saveAsMax"
(
local saveFilePath 
local maxfile = maxFilePath + maxFileName
do
(
 saveFilePath = getMAXSaveFileName filename:maxfile ()
 if (saveFilePath != undefined) do
 (
   if (not (doesfileexist saveFilePath)) or
   saveFilePath != maxfile or
   querybox ( saveFilePath + "\nは現在のシーンファイルです。\n上書きしますか?") title:"名前をつけて保存" then
   (
    saveMaxFile saveFilePath
    exit 
   )
 )
)
while (saveFilePath != undefined)
)


既に以前のものを登録した方でもmacroの記述を変えてなければ、上記のものを実行すれば更新されます。

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
参考サイト
http://help.autodesk.com/view/3DSMAX/2016/JPN/?guid=__files_GUID_624D3D05_B15D_4A97_9F15_DA35CDB0DDD2_htm

2016/03/27

【Max】Maya使いの私が愛用しているMaxツール

別のソフト使うと必ずあれがない、これがないといった問題が起こると思うのですが、
私もMaya→Maxを使う上で、え!この機能ないの!?出来ないの!?
となった時何かフリーのツールでないかなーと探して、巡りあったツールをご紹介します。



①Outliner

MayaのOutlinerみたいなツールです。最近のMaxではシーンエクスプローラが強化されて、
別にこっちを使わないでもいい気もしますが、なんだかんだで慣れてしまったのこっちを使っていますw



Outliner scriptspot
http://www.scriptspot.com/3ds-max/scripts/outliner

※16/07/09 追記
Max2015にてシーンエクスプローラとうまく同期してないときがあるので、
使わなくなりました。
シーンエクスプローラにも慣れてきましたし……。

②Prism(旧 LPM2.0)

Mayaのレンダーレイヤーのような機能のツールです。
レンダリングするObjの指定はもちろん、Obj、レイヤープロパティ、Vrayプロパティ、別マテリアルのアサイン、レンダラーの切り替え、エレメントの切り替えなどなど大抵やりたいことが出来ます。
ネットワークレンダリングするときも、Jobを投げた時に変換して投げるのでレンダーサーバーに別途インストールする必要はありません。

ダミーに各Objとかの情報(MayaでいうとここにOverRide情報が入る感じ)を入れて管理するシンプルな感じなので、シーンファイルが壊れることはないです。
ただ、オブジェクトの数が多いともっさりしたり、たまにバグったり、動作が怪しいこともありますが、
それはまぁMayaも一緒ですし……w



使い方をざっくり説明すると、まずPrismを起動したらUIのSettingからデフォの設定をします。
基本的にはいじらなくてもいいですが、
NetworkTypeに使っているディスパッチャーを設定(Backburner, Deadline,enFuzion)します。
ここをMaxFileにするとPrismで設定した各Passを反映したMaxFileを書き出せます。
また、pass default hide modeはHide All Objects/Lightに設定しておくことをおすすめします。
ちなみにここの設定はMaxシーンデータではなく、Maxのプリファレンスに設定が記録されます。

あとはポチポチやって各Passを設定して、ObjSetにObjかレイヤーを設定、
Networkボタンを押すとスクリプトのUIが起動してレンダリングをまとめて書き出せます。

ここでHide Pass modeを何にしてるかで挙動が変わるのですが、Hide Allにしてるとシーン内すべてのObj、Lightをオフってから、Pass内の設定を反映してレンダリングされます。
上記の画像の例だと、
カメラのc001はmasterとshadow,c002はmasterのみ、
master pass…他にObjがあっても、シーンにはふなっしーとくまモンとライトのみでレンダー
shadow pass…上記と違ってObjプロパティとVrayプロパティを設定、地面の影のみアルファ付きで書きだされます。

また、Passの設定を書き出して、別のシーンで流用なんてことも可能です。

Backburnerを使用していて、マネージャーに接続しようするとMaxごと落ちる場合は、サーバーグループが悪さしている可能性があります。
スクリプト内のサーバーグループを呼んでいる箇所をコメントアウトするなりする必要があります。
ちなみにこの問題はこのツールではなく、MaxScriptの問題くさいです。

Prism
http://www.grovergol.com/?page_id=338

ちょっとわかりづらい場所にありますがHelpはここです。右の項目で各機能の説明が見れます。
http://www.grovergol.com/?page_id=481




③imageplane

Mayaでいうimageplane。通常だとビューポートに貼っつけることしか出来ないので、シーンのObjの手前に半透明で表示したいときとかに便利です。
ただ、普通に板ポリをカメラの画角に合わせて配置しているだけなので、一々マテリアル作ってアサインしないとダメです。
このツールをインストールしていないマシンでimageplaneを作成したシーンを開くと当然エラーが出ますが、
当方の環境では特にレンダーサーバーには影響出ませんでした。















インストール方法はスクリプトを以下の場所とかに配置
C:\Program Files\Autodesk\<Max version>\scripts\Startup
Maxを再起動すると標準オブジェクトに【MB Objects】→【imageplane】が追加されます。

使い方は簡単で、
imageplaneを貼りたいカメラをピック
テクスチャをはったマテリアルをアサイン
カメラからの距離を調整して完了。
あとは少しだけですがオプションの機能がいくつかあります。

カメラをピックした後にカメラのレンズを変更した時は、DistanceかOffsetなどを適当に少し触ればきちんと変更した画角に合います。

scripts.breidt.net
http://scripts.breidt.net/#imagePlane

2015/12/06

【AE】別名保存の初期ディレクトリを開いているAepのディレクトリにする。

AEを使っているとき別名保存時にレンダーキュで設定したディレクトリとかが出てきたりして、ちょっと面倒なので自作しました。

saveProjectAs_fromAepPath.jsx
https://www.dropbox.com/s/c80nx0vv4fy7c0d/saveProjectAs_fromAepPath.jsx?dl=0
※AECS5.5,CS6のみ確認。
ご使用は自己責任でお願いします。また、バグ、要望等ありましたらご連絡くださいー。

また、このスクリプトをショートカットに設定すれば利便性が上がるかと。
ショートカットを変更するにはKeyEd Upを使うか、
ショートカットのテキストファイルを書き換える必要があります。
やり方については以下のサイトを参考にしてみてください。
http://cubelic3.jp/aftereffects_shortcut01/
https://helpx.adobe.com/jp/after-effects/using/modify-keyboard-shortcuts.html

ダウンロードした先ほどのファイルをAEがインストールされているディレクトリのScriptsフォルダの中にぶっこみます。
C:\Program Files\Adobe\(AEのバージョン)\Support Files\Scripts

中に入れたらそのファイルが名前順番で何番目にあるか覚えておきます。
その後先ほどの番号のRun Script(ExecuteScriptMenuItem)に設定すれば完了です。
自分の場合、静止画で書き出しと被ってましたがそんなに使わないので、Ctrl+Alt+sに上書きしました。
また、恥ずかしながら最近知ったのですが、
単純にバージョンアップ等番号を上げたい場合はデフォでCtrl+Alt+Shift+sで出来ます。(当たり前?^^;)

直接スクリプトのパスを指定して実行みたいなの出来ないものでしょうかね……?
何かありそうな気もするのですが……。

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
参考サイト

AfterEffectsの使い方|ショートカットキーのカスタマイズ
http://cubelic3.jp/aftereffects_shortcut01/

After Effects script Reference
http://aejsx.hiroshisaito.net/

After Effects CS6 Scripting Guide
http://blogs.adobe.com/aftereffects/files/2012/06/After-Effects-CS6-Scripting-Guide.pdf?file=2012/06/After-Effects-CS6-Scripting-Guide.pdf


2015/07/20

【Max】MaxScriptメモ(その1)ファイル、パス周り

色々な言語が混じってよく分からなくなってきたのでメモ代わりに
ファイル、パスに関するコマンドをいくつか。


fileDir = maxFilePath --シーンファイルのディレクトリ取得
fileName = maxFileName --拡張子付きのファイル名取得
fileFullpath = fileDir + fileName --シーンファイルのフルパス取得
dirArray = filterString fileFullPath @"\" --パスを¥区切りで配列に変換


testFullPath = @"Z:\hoge\fuga.ext" --sample

getFilenamePath testFullPath --stringのディレクトリのみ取得
--//"Z:\hoge\"//
filenameFromPath testFullPath --stringのファイル名と拡張子を取得
--//"fuga.ext"//
getFilenameFile testFullPath --stringのファイル名のみ取得
--//"fuga"//
getFilenameType testFullPath --stringの拡張子のみ取得
--//".ext"//
doesFileExist testFullPath --ファイルの有無の確認


oRootPath = @"Z:\hoge\"
getDirectories (oRootPath + "*") --変数ディレクトリ以下のディレクトリ全てを配列で返す。
getFiles (oRootPath + "*") --変数ディレクトリ以下のファイル全てを配列で返す。


tempDir = oRootPath + @"_old"
makeDir tempDir --ディレクトリの作成
tempFile = filenameFromPath testFullPath
renameFile testFullPath (tempDir + @"\" +  tempFile) --ファイルの移動(パスのリネーム)


str = "move  " + oRootPath+ "aaa" +  " _old\\aaa" --Dosコマンド(ディレクトリをサブディレクトリ、ファイルごと移動)
hiddendoscommand str startpath:oRootPath exitCode:&exitcode --Dosを実行、実行場所をstartpathで指定、exitcodeでエラーを確認
exitcode --成功した場合0を返す。


-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

2015/05/30

【Max】シーンファイルがかなり重い

Maxのシーンファイルがファイルの構造の割に異様に重く、グラフエディタなども開くとフリーズする。
さらにObjをすべて消してみても重い、新規シーンに一部だけ合成しても重いなどの場合、
シーンファイルにリタイムというリタイムツール用のアニメーショントラックが異様にたまっている可能性があります。


本来キーフレームを細かくスケーリングしたりするものに使われているものですが、
使用しているObjを消してもリタイムは残り、合成で読み込むときも読み込んだものだけでなく、
リタイムももれなくすべてついてきます……orz
この機能を使っていない時でも何故かたまるときもあるそうです。

で、肝心の消し方ですが、以下のscriptを打ち込めばOKです。

RetimerMan.numRetimers  --リタイムトラックの数の取得

RetimerMan.BakeAndDeleteLocalRetimers() --リタイムをベイクして削除
--使用していないリタイムトラックの削除

nrt=RetimerMan.numRetimers
for i = 1 to nrt do
(
 j=nrt-i+1
 n=RetimerMan.GetNthRetimer j
 
 if n!=undefined then
 (
  if n.nummarkers==0 then
  (
   RetimerMan.DeleteRetimer j
  )
 )
)


scriptも配布されていますが、バージョンのせいか上手く動作してないものもあるみたいです。
↓以下のものはMax2014で動作確認しています。他にも色々機能がついていますが……。
Cleaner
http://www.scriptspot.com/3ds-max/scripts/cleaner


-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
参考サイト
Autodesk -Technical Q&A- 意図しないリタイムのトラック増加により、ファイルサイズが肥大化してしまう
http://tech.autodesk.jp/faq/faq/adsk_result_dd.asp?QA_ID=8404

MaxScriptヘルプ
http://docs.autodesk.com/3DSMAX/16/JPN/MAXScript-Help/index.html?url=files/GUID-199BB00E-5449-4BCB-A971-4F52553517ED.htm,topicNumber=d30e240940
http://help.autodesk.com/view/3DSMAX/2015/JPN/?guid=__files_GUID_CE344EBA_D3A9_4DC2_8196_BD933941FD0B_htm

Area Removing lots of Retimers in one go with MAXScript
http://area.autodesk.com/blogs/maxstation/n170-filebloat-removing-lots-of-empty-retimers

2015/03/07

【Maya】自作ツールrendLayerManager

案件によりますが、大量のレンダーレイヤがあるシーンに遭遇した時、
一々一つずつrenderableを切り替えるのが面倒だったので自作しました。

※ご使用は自己責任でお願い致します。


任意のscriptパスにいれて、【rendLayerManager】とMelで打ち込めば起動します。
簡単に使い方をご説明すると、

relode
レンダーレイヤの情報をリストに反映させます。新規でレンダーレイヤを追加、削除した際に実行してください。
sort select
ここに打ち込んだものをリストで選択します。正規表現も可能です。
list of renderLayer
シーンのレンダーレイヤのリストです。ダブルクリックするとカレントレイヤーが切り替わります。
on/off
上記のリストで選択したもののrenderableを切り替えます。リスト上で右クリックからもアクセス可能です。
all on/all off
すべてのレンダーレイヤのrenderableを切り替えます。masterLayerには影響しません。


※ご使用は自由ですが、著作権は放棄していないので二次配布等はご遠慮願います。
また何らかの損害等が発生しても責任はとれませんので、自己責任でお願いします。
バグ、要望等ありましたら、ご連絡よろしくお願いします。m(_ _)m

rendLayerManager.mel
https://www.dropbox.com/s/7aywcz80pociz7y/rendLayerManager.mel?dl=0


-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
参考サイト
チュートリアル / 読んで触ってよくわかる!Mayaを使いこなす為のAtoZ
第37回:ポリゴン数をリストアップしよう!
http://area.autodesk.jp/column/tutorial/maya_atoz/listup_number_polygon_1/

2015/01/24

【Maya】Melメモ書き

最近知った便利な文字列周りのMel(コマンドじゃないです)をメモ代わりに。


stringArrayContains
文字配列に項目が含まれる場合は true を返します。 この配列には、複数の項目が含まれる場合もあります。 このプロシージャは、最初の項目が見つかった時点で true を返します。
string $arraySample[] = {"a","b","c"};   

if(stringArrayContains ("a",$arraySample) == 1){      //もし”a”が含まれるなら実行
print "ok";
}

stringArrayRemove
第 1 文字配列に属する文字列項目を、第 2 文字配列から除去します。戻り値は、除去した項目の新しい文字配列です。第 2 引数は変更されずに返されます。
文字配列から除去されるのは、指定された文字列項目の最初の出現だけではなく、全出現であることに注意してください。文字配列に文字列項目がない場合、返される文字配列は、引数文字配列と同じになります。
string $list[]  = { "a", "b", "c", "d", "b", "e", "f", "a", "g" };
string $items[] = { "a", "c", "e", "g" };

string $diff[] = stringArrayRemove($items, $list);          //$list - $items

// Result : { b, d, b, f } //

stringArrayCatenate
指定した 2 つの文字配列を連結する結果となる、新しい文字配列を返します。
string $string1[] = {"light1", "light2"};
string $string2[] = {"light3","light4","light5"};

stringArrayCatenate($string1, $string2);       //$string1 + $string2

 // Result: light1 light2 light3 light4 light5 //

stringArrayToString
substituteAllString
stituteAllString
上から順に文字配列を文字列に指定の文字列(,)をいれて文字列へ変換。
いわゆるメモ帳の検索&置換。
文字列を指定の文字列(,)を区切りで文字配列へ変換。
For文とかでやってもいい気もするし、もっとスマートな方法がある気がする……。
string $old_Array[] = {"old_red","old_blue","old_green"};
string $searchStr = "old_";                                       //検索する文字列
string $replaceStr = "new_";                                    //置き換える文字列

string $toStr = stringArrayToString($old_Array , "," );          //文字配列から文字列へ
string $new_Str = substituteAllString($toStr,$searchStr,$replaceStr);   //文字列の置換
string $new_Array[] = stringToStringArray($new_Str , "," );          //文字列から配列へ

print $new_Array;

コマンドリファレンス(Helpメニュからも行けます)
■Mel
http://download.autodesk.com/global/docs/maya2014/ja_jp/Commands/index.html
■python
http://download.autodesk.com/global/docs/maya2014/ja_jp/CommandsPython/index.html


-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
参考サイト
http://download.autodesk.com/global/docs/maya2014/ja_jp/Commands/stringArrayContains.html
http://download.autodesk.com/global/docs/maya2014/ja_jp/Commands/stringArrayRemove.html
http://download.autodesk.com/global/docs/maya2014/ja_jp/Commands/stringArrayCatenate.html
http://download.autodesk.com/global/docs/maya2014/ja_jp/Commands/stringArrayToString.html
http://download.autodesk.com/global/docs/maya2014/ja_jp/Commands/substituteAllString.html
http://download.autodesk.com/global/docs/maya2014/ja_jp/Commands/stringToStringArray.html

2014/04/19

【Maya】sceneTimeWrapをベイクする

いつからかMayaにはscene上のすべてのアニメーションをタイムリマップをかけることが出来る機能があり、
標準機能ではベイク出来ないというクソ仕様で、以下のscriptを使えばベイクできるそうです。

http://www.toadstorm.com/blog/?p=206

使い方はダウンロードしたscriptをMayaバージョン直下のscriptフォルダなどに保存。
Maya起動後以下のscriptをPythonで実行します。

import hfBakeTimewarp as hfBT
hfBT.bakeTimeWarp(objects=['object1','object2'],start=1,end=10,killWarp=1)

objects=['object1','object2'],start=1,end=10 の部分を自分で書き換えて実行します。
['object1','object2'],にベイクしたいオブジェクト名を
start=1,end=10 にベイクしたいタイムレンジを入力して実行すれば、ベイクされます。

import hfBakeTimewarp as hfBT
objects = cmds.ls(sl=1)
start = cmds.playbackOptions(q=1,min=1)
end = cmds.playbackOptions(q=1,max=1)
hfBT.bakeTimeWarp(objects,start,end,killWarp=1)

リンク先のTESTと同様ですが上記のようにかくと、
選択したオブジェクトを現在のタイムスライダの範囲でベイクします。

ちなみにTransformノードしかベイク出来ないようなので、shapeノードなどのアニメーションをベイクしたい場合、ロケータなどに数値を移動させてベイクする必要があります。


参考サイト
http://d.hatena.ne.jp/J_tashi/20120912/1347468356

2014/01/18

よく使うフリースクリプト(その2)[AE]

After Effectsにも便利なscriptが色々公開されており、
その中でも自分がよく使っているものを紹介します。

Launch Pad+他
エフェクトのアイコンショートカットを作成できるscript。Mayaでいうshelfのような感じです。
他にもキーボードショートカットをいじるものなど色々はいってます。

Quick_Fx_Palette
Launch Padはアイコンでしたが、こちらは普通に文字のみ。
デフォルトだと英語用になっているので、
script文初めのほうのエフェクト名を日本語にしてやる必要があります。
もちろんプラグインなど、別のエフェクトへのショートカットも作成可能です。

Expand Comp
プリコンポーズの逆が出来ます。
なぜ標準でないのか……?

EditComps_forCS4
コンポの設定をまとめて変更。

レンダーキュ設定
レンダーキュ設定をまとめて設定&キューごとのサブディレクトリ(フォルダ)を作成してくれる。


自分がAEscriptやJavaがさっぱりなので、こういうのを公開してくれるのは、
ホントにありがたいです。


2013/12/21

Shapeノードを別のtransformノードに移動させる。

リグのcurveなど、複数のShapeノードを一つにまとめたいときがあります。


そのときはまずFreeze transformをして、親となるtransformノードを選択、子になるShapeノードを選択。

つぎに以下のMELを実行。
parent -r -s;


一つのtransformノードにまとめることが出来ました。


2013/12/14

よく使うフリースクリプト(その1)[maya]

よく使わせてもらってるスクリプトのいくつか。


Guren
いろんなスクリプトが入ってるなんともありがたいスクリプト集。
よく使っていた機能がバージョンアップで消えてしまったのがちょっと残念……。
※公開終了しました。140119現在

作業画面のみウィンドウを表示する
デュアルモニタとか使っているときによく使う。

頂点を整列させるツール
使いやすくて便利。ありがたや~。

RoadKill(スクリプトだけじゃないけど……。)
一緒に入ってるMELつかえば、一々exportすることなく、
ダイレクトにRoadKillと行き来出来るのでとっても便利。
(インストール後は一回PCを再起動してください)

FileTextureManerger
リンクの切れたテクスチャパスを一括して変更したりコピーしたり色々できるテクスチャ周りのMEL

UVDeluxe
UVEditerを拡張したもの。

OutlinerPlus
Outlinerの拡張版。materialやUtlilties,Vrayノードをカテゴリごとに表示できる。
別シーンを開く前にOutlinerに戻しておかないとファイルがクラッシュすることがあるので注意。

DUPExtract
選択したFaceを切り取るか複製する。Gurenになくなってしまったので……。



こういう便利なものをフリーで公開してくれるとはホントにありがたいm(_ _)m



MayaでSelectionMaskとShowTypeを制御するスクリプト

簡単な自作スクリプトなんで公開するほどでもないんですが……。(というかそれぐらいしか作れ(ry)
アクティブになっているパネルのShowTypeとSelectionMaskを変更します。
※ご使用は自己責任でお願いします。


以下を実行
import maya.cmds as cmds
cmds.selectType(alo = 0)
cmds.selectType(nc = 1)

oPanel = cmds.getPanel( wf= 1 ) 
if cmds.getPanel( to= oPanel ) == "modelPanel" :
cmds.modelEditor( oPanel, e= 1, alo= 0 )
cmds.modelEditor(oPanel, e= 1, pm= 1 )
cmds.modelEditor(oPanel, e= 1, nc= 1 )

aloがallObject、pmがpolygonMesh、ncがnurbusCurveですので、
この場合nurbusCurveのみ選択可で、polygonMeshとnurbusCurveのみ表示するアニメーション用のものになっています。
下記を参考にcmds.selectTypeとcmds.modelEditorの中を変えていただければ、
モデリング用とかエフェクト用とか作れます。
ちなみにリセット用にalo = 1のものと併用するといいです。

参考
http://me.autodesk.jp/wam/maya/docs/Maya2010/Commands/selectType.html


私はこれをホットキーに割り当てて、いくつか変えたものを複数登録してつかっています。