こちらを作った際、言語判断出来たら良いなぁ と感じました。
水平面高さリストを表示 - C#ATIA
フォーラムで質問しても回答がもらえないので、直接のパラメータ等は
無い様な気がします。
ので、イロイロ調べて何とか判断できるようになりました。多分。
//Powermill Language //param : - //return : lang(string) function GetLang(output string lang) { string list lst = values(toolpath.strategy) switch trim($lst[0]) { case 'Nezn疥' //Czech & Slovak $lang = 'Czech' break case 'Unknown' $lang = 'English' break case 'Inconnu' $lang = 'French' break case 'Unbekannt' $lang = 'German' break case 'Ismeretlen' $lang = 'Hungarian' break case 'Sconosciuto' $lang = 'Italian' break case '不明' $lang = 'Japanese' break case 'セヒキチチ・セハタス' $lang = 'Korean' break case 'Nieznany' $lang = 'Polish' break case 'Desconhecido' $lang = 'Portuguese' break case 'ヘ裴鈔褥・' $lang = 'Russian' break case 'Desconocido' $lang = 'Spanish' break case 'Bilinmiyor' $lang = 'Turkish' break default $lang = 'Unknown' break } }
values関数利用すると、設定されている言語毎の文字リストで戻り値が得られるようです。
上記のコードでは、 toolpath.strategy (ツールパスの種類のパラメータ)で判断しています。
但し、チェコとスロバキアの違いが見つかりませんでした。
・・・元々一緒の国だからどっちの表示でも良いのだろう、きっと。
又、エンコードの問題が有り、マクロのファイルはShift-JISで作ってます。
Shift-JISに限らず、準じたものなら大丈夫な気もしますが、エンコードは
常に頭の痛い問題です。
念の為、単体テストコードです。エコーコマンドに結果を表示させています。
//unit_test Function Main( ){ string list langs ={} call GetLangLst($langs) ECHO OFF DCPDEBUG UNTRACE COMMAND ACCEPT PRINT '********' PRINT '切り替えた言語/判断した言語/判定' string cmd = '' string msg = '' string res = '' foreach lng in $langs { $cmd = 'LANG ' + $lng docommand $cmd string list $prms = values($toolpath.strategy) call GetLang($res) $msg = $lng + ' / ' + $res+ ' / ' + string($lng == $res) PRINT $msg } } LANG japanese ECHO ON DCPDEBUG TRACE COMMAND ACCEPT } //ユニットテスト用、言語リスト //'Chinese-CHN','Chinese-TWN'はエラーになる function GetLangLst(output string list out) { $out = {'Czech','English','French','German','Hungarian','Italian','Japanese','Korean','Polish','Portuguese','Russian','Slovak','Spanish','Turkish'} }
Chinese-CHNとChinese-TWNはエラーになる為、言語の切り替えが出来なさそうです。
ソフト起動時は、
起動 → ライセンス承認 → 設定ファイル読み込み → ユーザーマクロ実行 → オペレーションOK
のような流れになっていると思うのですが、設定ファイルを見つけて
判断できれば一番良いような・・・設定ファイルが何処にあるのかわかりません。