C#ATIA

↑タイトル詐欺 主にCATIA V5 の VBA(最近はPMillマクロとFusion360APIが多い)

PowerMill Ncプログラム出力先の変更

PowerMillのNcプログラム出力先のフォルダは、デフォルトでは絶対パスでプロジェクト内に
記録されています。正直、相対パス設定の方が使いやすいのですが・・・・。

プリファレンスで出力先を

{project.path}\ncprogram\{ncprogram}

としておけば、現行のプロジェクトフォルダ内の "ncprogram" フォルダに
出力されると以前サポートさんに教わりました。
新作のものは良いんですよ。

困るのは古いプロジェクトを流用した場合です。
既に作成済みのNCプログラムの場合、出力先ががっちり絶対パスになっており
うっかり出力すると、とんでもない所(設定された古いパス)に書き出されます。
出力先のフォルダが無い場合、エラーや警告が出るとありがたいのですが、
新たにフォルダを作成してしまい、何食わぬ顔で処理を進めてしまします。

そこで、作成済みのNCプログラム全ての出力先を書き換えるマクロを
(やっと)作りました。

//pm2019 macro
//NcProgram_PathChange.mac ver0.0.1
//NCパスを現行プロジェクト以下に変更
//
//-------------------------------
//ver0.0.1:完成
//-------------------------------

Function Main(){
	//toolpath
	int cnt = size(folder('ncprogram'))
	if $cnt < 1 {
		message info  'NCプログラムがありません'
	}
	
	//確認
	string list ncs =  extract(folder('ncprogram'), 'name') 
	string msg = '以下のNCプログラム出力先を修正します' + crlf
	$msg = $msg + join($ncs,crlf) + crlf
	$msg = $msg +'宜しいですか?'
	bool yn = 0
	$yn = QUERY $msg
	if not $yn {
		return
	}
	
	//書き換え
	string ncpath = '{project.path}\ncprogram\{ncprogram}'
	foreach nc in $ncs {
		EDIT NCPROGRAM $nc FILENAME $ncpath
	}	
	
	message info  'Done'
}

実際の場面で、作った事を思い出せるかな・・・。