C#ATIA

↑タイトル詐欺 主にFusion360API 偶にCATIA V5 VBA(絶賛ネタ切れ中)

PowerMill 言語判断

こちらを作った際、言語判断出来たら良いなぁ と感じました。
水平面高さリストを表示 - 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
のような流れになっていると思うのですが、設定ファイルを見つけて
判断できれば一番良いような・・・設定ファイルが何処にあるのかわかりません。