スクリプト上からの操作は、むりなようです
※(扱えると言う情報がありましたら下さい〜)
しかし TextureEditer でショートカットキーが
設定してあるものについては
ショートカットをScriptで入力してやればよいと思われます
Pythonを利用し、キー入力の送り方を調査します
Pythonでのキーの送信
#Python import win32com.client shell = win32com.client.Dispatch("WScript.shell") shell.SendKeys("{F6}",0)
この状態でキー入力を行う事が出来ました
参考サイト
しかし、製作中のツールでは反応しませんでした。なんでじゃろ?
修正
myaraさんの指摘で以下を修正しましたDespatch > Dispatch //スペルミス
"F6" > "{F6}" //{}が抜けてました!(なぜか不要と決め付けてました orz)
以上を修正したら、TextureEditerで更新ができるようになりました!!!
バグだしは終わってないですけどスクリプトが動いたー
安定動作したら公開しま~す
そのほか、スクリプトの中でスクリプトを呼び出してますね、
ふむり~、参考になります
myara さん、ありがとうございましたーーー。
備考
myaraさんが、キーをスクリプトで送る件に関して記事を書かれたようですよ!
参考になることばかりです
キーをスクリプトで打つ
しかし、こういうときこそトラックバックとか使うんじゃなかったっけ?
使い方がわからん orz
初めまして、myaraと申します。
返信削除Pythonのコードにスペルミスがあります。Despatchではなく、Dispatchです。
あとは、テクスチャエディターを開きたいだけのなら、OpenViewで出来ますよ。
#Python
Application.OpenView ("Texture Editor")
初めまして〜 カキコアリガトウございます。
返信削除そしてスペルミスのご指摘ありがとうございます〜 orz
早急に修正しておきます
TextureEditerの操作ですが、開くだけではなく、
パネル内の、メニュー、ボタン操作を、
スクリプトで行うのが目的です。
例えば、画像のリフレッシュは、
ボタンを押すか "F6" ショートカットを行うのですが、
このリフレッシュをスクリプトで操作が出来ません。
従って、"F6" キーを押す という行為をPythonで組み込もうとおもいました。
現在は、"F6" は反応するのですが、なぜかレイヤーパネルが出てきてますw
プラグインが TextureEditer の Tools の最下部にメニューが来るため、
実行時、マウスの位置が TextureEditer パネルから、
はみ出してしまってるという可能性がありますw
なかなか難しいですね〜。
またなにか、お気づきの所がありましたら。
よろしくお願いします〜
このコメントは投稿者によって削除されました。
返信削除やってみて、一応出来たんだけど、あんまり格好良くないです。
返信削除//JScript
var WshShell = new ActiveXObject("WScript.shell")
//Texture Editorが開いていたら閉じます
//開いたままじゃあ、上手く行かないんですね・・・なぜか。
var views = Application.Desktop.ActiveLayout.Views
for (var i=0; i< views.count; i++){
if (views(i).name == "Texture Editor"){
views(i).state = siClosed;
}
}
//Texture Editorを開く
OpenView ("Texture Editor")
//Texture Editor が出てくるまで時間がかかるので
//予めに用意した「mSleep.vbs」を利用してちょいスリープ。
WshShell.run("I:\\Scripting\\mSleep.vbs 0.1", 2, 1)
//キーを打つ
// "^a" = CTRL + A
WshShell.SendKeys ("^a")
//------------
以下のサイトを参考にすると良い。
http://www.devguru.com/technologies/wsh/quickref/wshshell_SendKeys.html
因みにPythonのSleepは上手く行かないけど、Pythonは詳しくないので自分のミスだったかもしれません。
上記のサイトを見ていただくと分かると思いますが、良い忘れてたことがあります。"F6"キーは{F6}で書かないと、F + 6 と認識されます。だからレイヤーパネル(6)が出てしまいます。
返信削除