2016年10月25日火曜日

Python:関数と戻り値と勝手に代入

拾い物のスクリプトを見ていたら。変な記述を見つけた。
簡単にするとこんな感じ。

test = []
def Test1(pList):
    pList.append("test")
    print pList
    return pList
Test1(test)
print test

本来ならtest = Test1(test)
とでもすればよいのか?
一見代入していないように見えてprintはちゃんと"test"と表示される。

ほほーPythonでは勝手に代入できちゃうの?
と思って以下のように動作チェック。
結果は・・・
['test']
['test']
---
['test']
---
test
んーあれー?
appendを使った時だけうまくいってる。
よくわからんわ・・・
どうして?

2016年10月21日金曜日

MotionBuilder:Python:IncrementSave

MayaのIncrement Save機能がうらやましいので、作った。



15:import shutil
フォルダのコピーはosコマンドでは無いらしいのでこれを導入

16:import datetime
日時情報を入手するのに使う

18:lFileName = FBApplication().FBXFileName
現在のfbxファイルのパスを取得

23:if not os.path.isdir(path+"\\old"):
既にoldフォルダが存在するか確認

31:for obj in os.listdir(path):
フォルダのリストアップ

51:shutil.copy(fromPath+"\\"+fileName, toPath+"\\"+newFileName)
フォルダのコピーはosコマンドではない

56:FBMessageBox( "Error", "Already exist\n"+errorPath+"\n\nCheck backup folder\nor backup by hand\n\nThere is NOT also normal SAVE", "OK" )
英語に自信なし

63:fileTime = fileTime.strftime("%Y-%m%d-%H%M-%S")
時間の取り出し
表記が簡単で便利

以下参考にしたサイト
pythonでファイルのコピー・移動 - 心魅
Saving to a File - docs.autodesk.com
共通のパス名操作 - docs.python.jp
pythonでフォルダ内のファイル一覧をパス無しで取得する - Qiita
ファイルのタイムスタンプ取得 - Python Snippets
基本的な日付型および時間型 - docs.python.jp

2016年7月5日火曜日

2016年6月22日水曜日

Motionbuilder:Python:自作モジュールの導入

何度も同じ事を書きたくない!

というわけで自作モジュールを導入してみようかと思った。

参考にしたのは以下のサイト。


呼ばれる側
こちらは普通にPythonのClassについて調べればもうちょっと面白いことができそう。
クラス変数とかそのあたり。
呼ぶ側
こちらはなかなか苦労した

4:libPath = "PATH" #your module.py file's directory path
  作成した「呼ばれる側」のスクリプトを置いたディレクトリまでのパスを指定する。
  「呼ぶ側」と同じ場所に置いて呼び出した方がいろいろと便利かも。
  MotionBuilder:Python:スクリプト自体のパスを取得

5:if not libPath in sys.path : sys.path.append(libPath)
  Motionbuilderのパスライブラリに書き込んで・・・

6:import moduleCalled
  「呼ばれる側」ファイル名を指定

7:reload(moduleCalled)
  これは自動で作られる.pycファイルをリロードする命令。
  これをリロードしないといくら「呼ばれる側」.pyファイルを更新しても「呼ぶ側」に反映されない。
  但し、他にこのファイルをロードしているファイルがある場合、そちらでも呼び直さないといけないらしい・・・。のでこれは開発中の処理。

8:import moduleCalled
  .pycファイルがリロードされたのでもう一度読み直す

10:testmod.testclass()
  こんな感じで呼び出す。出力結果は"create testclass"

11:testmod.testclass().testmethod()
  クラスの中のメソッドの呼び出し。出力結果は"call testmethod"

以上。
とりあえず作った自作モジュール。選択関連の動作を自動化してみた。

2016年6月6日月曜日

2016年5月18日水曜日

Motionbuilder:Python:作成したFBToolの中身にアクセスする

作成した後のFBToolにアクセスしたいんだが!

とりあえず突貫で何ができるかやってみた。


検索してアクセスする方法がわからん。
先にRegionの名前がわかっていないと拾えない。

Regionの中身をRemoveAll()するくらいのことはできそうだ。

2016年3月30日水曜日

MotionBuilder:Python:スクリプト自体のパスを取得

サンプルスクリプトの"ShotTrackSetupTool.py"に書いてあった!

import os
import traceback

os.path.dirname(traceback.extract_stack()[-1][0])

探したよー。
pythonの勉強をちゃんとせんとダメかー。
tracebackの仕組みがよくわからん。

コピペが文系の限界。

でも見つかってよかった!

2016年3月15日火曜日

2016年1月26日火曜日

2016年1月3日日曜日

GitHubの使い方がわかりませんな

ブログにソースを貼り付けるのに使おうと思っているんですが。

GitHubの使い方が全くわかりませんな!

多分便利なんだろうけど。
僕の脳がこういう整理の仕方をしてないんだとおもいますな。

どうすべえなあ。