C#ATIA

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

選択済みのツールパスからNCプログラムを作る

連日作業していて "作ろう作ろう" と思いながら放置していたマクロです。

"選択済みのツールパスから1個のNCプログラムを作る" だけです。

//pm2020 macro
//registerNCProgram.mac Ver0.0.1
//選択済みツールパスから1個のNCプログラム作成
//---------------------------------------------------------------------------------------------------
//<?xml version="1.0" ?>
//<menupage>
// <button label="NCプログラム作成" command='MACRO registerNCProgram.mac'  multiple_selection="allowed" />
//</menupage>
//---------------------------------------------------------------------------------------------------
//ver0.0.1:完成
//---------------------------------------------------------------------------------------------------

function main() {

	IF $PowerMILL.Status.MultipleSelection.Total  {
		IF $PowerMILL.Status.MultipleSelection.First == 0 {
			return
		}
	}

	//ツールパスリスト
	string list tps = extract(explorer_selected_entities() , 'name')

	// NCプログラム名
	string ncName = ''
	call getNcName($ncName)

	// NCプログラム作成
	call initNcpro($ncName)

	// ツールパスを追加
	call registerToolPath($ncName, $tps)

	// 終了
	DEACTIVATE NCProgram
	message info  'Done'
}

//ツールパスを追加
function registerToolPath(string ncName, string list tps){
	call Msgoff()
	foreach tp in $tps {
		EDIT NCPROGRAM $ncName INSERT Toolpath $tp LAST
	}
	call Msgon()
}

// NCプログラム作成
function initNcpro(string ncName){
	string tmp = new_entity_name('ncprogram')
	CREATE NCPROGRAM ; EDIT NCPROGRAM ; QUIT FORM NCTOOLPATH
	NCTOOLPATH ACCEPT FORM ACCEPT NCTOOLPATHLIST FORM ACCEPT NCTOOLLIST FORM ACCEPT PROBINGNCOPTS
	RENAME NCProgram $tmp $ncName
}

// NCプログラム名
Function getNcName(output string out) {
	string ncName = project_pathname(1)

	$ncName = input 'NCプログラム名を入力'
	if length($ncName) < 1 {
		macro about
	}
	call getNewName('ncprogram' , $ncName , $out)
}

// 新たな名前の取得
Function getNewName(string folder , string name , output string out) {
	if entity_exists(entity($folder ,$name)) < 1 {
		$out = $name
	} else {
		$out = new_entity_name($folder ,$name)
	}
	return
}

function Msgoff() {
	graphics lock
	dialogs message off
	dialogs error off
}

function Msgon() {
	graphics unlock
	dialogs message on
	dialogs error on
}

f:id:kandennti:20200114145828p:plain

途中でNCプログラム名を入力するダイアログが出ます。デフォルトは
プロジェクト名です。

ツールパス毎に作ってくれる機能はあるんですけどねぇ。