変換したあとのログファイルボタンを人の代わりに押したり、ファイルを別のフォルダにコピーします。
更新履歴
- 2021年3月29日
- 初リリース
- 2021年3月31日
- WAIT_TIMEを10から50に変更した。
- 「変換したら、つぎのフォルダに移す」にチェックを入れていていて移したあとに、移す前のフォルダにある.gpbと.materialを消していなかったのを消すように直した。
- 2021年4月6日
- GPB converterの変換がおわるのを待つようにした。
- モデルファイルのフォルダがないときのエラーメッセージを変えた。
- GPB converterが半角空白のあるファイルを変換できないから、変換するモデルファイル名に空白がある場合に、エラーになるようにした。
つぎのソースをhspeditにコピーしてコンパイルしてください。
;revision 20210406
#include "hspext.as"
*define
#define apl_keycode_space 32
WAIT_TIME=10
title "GPB コンバート自動実行"
width 640,180
GPB_converter_title = "GPB converter ver"
model_file_name="test.fbx"
from_folder_base="sample\\hgimg4\\fbx\\"
to_folder_base="sample\\hgimg4\\res\\"
checkflag_gpb_file_move=0
goto *main
#include "user32.as"
#deffunc focus_window_close
keybd_event 18,0,0,0 ; VK_ALTキーを押す
keybd_event 0x73,0,0,0 ; VK_F4キーを押す
keybd_event 18,0,2,0 ; VK_ALT:KEYEVENTF_KEYUP キーをはなす
keybd_event 0x73,0,2,0 ; VK_F4:KEYEVENTF_KEYUP キーをはなす
wait 10
return
#deffunc select_text_all
keybd_event 17,0,0,0 ; VK_CONTROLキーを押す
keybd_event 'A',0,0,0; aキーを押す
keybd_event 'A',0,2,0; a:KEYEVENTF_KEYUP キーをはなす
keybd_event 17,0,2,0 ; VK_CONTROL:KEYEVENTF_KEYUP キーをはなす
;aplkey 46: wait 10
wait 10
return
#defcfunc has_last_path_separator str path
tmp = path
last_char=""
last_char = strmid(tmp, strlen(tmp)-1, 1)
if "\\"==last_char {
return 1
}
return 0
#defcfunc remove_last_path_separator str path
tmp = path
last_char=""
last_char = strmid(tmp, strlen(tmp)-1, 1)
if "\\"==last_char {
return strmid(tmp, 0, strlen(tmp)-1)
}
return path
#deffunc ファイルをけす str filepath
exist filepath
if 0 <= strsize {
delete filepath
}
return
*main
*init
if dir_cmdline!="" {
;"abc.fbx C:\Users\takahiro\Documents\HSP\hsp36beta\sample\hgimg4\fbx C:\Users\takahiro\Documents\HSP\hsp36beta\sample\hgimg4\res 1"
arg_str=dir_cmdline
index=instr(arg_str,0," ")
model_file_name = strmid(arg_str, 0, index)
current_position = strlen(model_file_name) + 1
prev_index = index
index=instr(arg_str,current_position," ")
from_folder_base = strmid(arg_str, current_position, index)
current_position = current_position + strlen(from_folder_base) + 1
prev_index = index
from_folder_base = from_folder_base + "\\"
index=instr(arg_str,current_position," ")
to_folder_base = strmid(arg_str, current_position, index) + "\\"
current_position = strlen(to_folder_base) + 1
prev_index = index
checkflag_gpb_file_move = int(strmid(arg_str, -1, 1))
}
mes "モデルファイル名"
pos 130,0
input model_file_name, 120, 20
pos 250,0
pos 260,0
mes "(フォルダ"
pos 345,0
input from_folder_base, 200, 20
pos 550,0
mes ")を"
pos 175, 30
objsize 300,25
button goto "GPB converterで変換する", *do_convert
pos 0,70
objsize 180,25, 0
chkbox "変換したら、つぎのフォルダに移す", checkflag_gpb_file_move
pos 190,70
input to_folder_base, 400, 20
stop
*do_convert
pos 0,100
color 255,255,255
boxf 0,100, 600,180
redraw
color 0,0,0
if 0==has_last_path_separator(from_folder_base) {
from_folder_base += "\\"
}
;モデルファイルのフォルダをチェックする
dirlist direxist, remove_last_path_separator(from_folder_base), 5
if stat==0 {
mes "モデルファイルのフォルダがありません"
stop
}
;モデルファイルがあるかチェックする
file_path = from_folder_base+model_file_name
exist file_path
if -1==strsize {
mes "モデルファイルがありません"
stop
}
;モデルファイルの名前に空白がないかチェックする
ファイル名に空白がある = instr(model_file_name, 0, " ")
if 0<=ファイル名に空白がある {
mes "モデルファイル名に空白があるモデルファイルはGPB converterは変換できません"
stop
}
;変換したモデルファイルを移すフォルダがあるかチェックする
if checkflag_gpb_file_move {
if 0==has_last_path_separator(to_folder_base) {
to_folder_base += "\\"
}
dirlist direxist, remove_last_path_separator(to_folder_base), 5
if stat==0 {
mes "移すフォルダがありません"
stop
}
}
aplsel GPB_converter_title, 0
if stat == 1 {
exec "gpbconv.exe"; 起動
wait 50
}
;GPB converterフロントエンドを動かす
aplsel GPB_converter_title, 0 : aplobj "Edit"
aplstr file_path:wait WAIT_TIME
aplsel GPB_converter_title, 0 : aplobj "Button",7:wait WAIT_TIME : aplkey apl_keycode_space:wait WAIT_TIME
*wait_gpb_converter_log
aplsel GPB_converter_title, 0 : aplobj "Button",3:wait WAIT_TIME : aplkey apl_keycode_space:wait WAIT_TIME ; ログボタンを押す
convert_log_line_num=0
aplsel GPB_converter_title, 0 : aplobj "Edit"
apledit convert_log_line_num,1:wait WAIT_TIME
if convert_log_line_num==1 {
goto *wait_gpb_converter_log
} else {
if convert_log_line_num<=6 {
goto *convert_error
} else {
goto *convert_success
}
}
*convert_error
pos 0,100
mes "変換に失敗しました。モデルやフォルダを調べて変換、配置を試してください。"
mes "そのときにGPB Converterを終了しておいてください。"
stop
*convert_success
pos 0,100
mes "変換に成功しました。"
focus_window_close ; GPB converterフロントエンドを閉じる
if checkflag_gpb_file_move {
mes "ファイルをプログラムの利用フォルダに移します。"
model_file_name_exclude_extention = getpath(model_file_name, 1)
if from_folder_base!=to_folder_base {
bcopy from_folder_base+model_file_name_exclude_extention+".gpb", to_folder_base+model_file_name_exclude_extention+".gpb"
bcopy from_folder_base+model_file_name_exclude_extention+".material", to_folder_base+model_file_name_exclude_extention+".material"
ファイルをけす from_folder_base+model_file_name_exclude_extention+".gpb"
ファイルをけす from_folder_base+model_file_name_exclude_extention+".material"
mes "ファイルを移しました。"
} else {
mes "フォルダが同じです。"
}
mes "ファイルのタイムスタンプを確認してください。"
}
stop
メモ
このツールは起動時引数に次の4つのオプションを指定できます。※指定するときはすべて指定してください。
モデルファイル名(たとえば、character.fbx)モデルファイルがあるフォルダ(たとえば、c:\modelやsample\hgimg4\fbx)モデルを移すフォルダ(たとえば、c:\resやsample\hgimg4\res)モデルを移すかどうか、0か1を指定してください。0は移さない、1は移す、です。
↑思ったことがまだできないので打消し。