C#ATIA

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

複数選択での無効化

PowerMillで単体の要素の無効化(未計算状態)、ツールパス等のフォルダ全体を
無効化出来るのですが、任意の複数の要素だけを無効化することが出来ません。

その為のマクロを作成しました。

//pm2019 macro
//Invalidate.mac Ver0.0.1
//無効
//---------------------------------------------------------------------------------------------------
//<?xml version="1.0" ?>
//<menupage>
//   <button label="無効化"
//	 command='MACRO Invalidate.mac $FolderName'  multiple_selection="allowed" />
//</menupage>
//---------------------------------------------------------------------------------------------------
//ver0.0.1:完成
//---------------------------------------------------------------------------------------------------

//param:folName-フォルダ名
Function Main(string folName) {
	//ツールパスリスト
	string list lst = {}
	call GetSelList($lst)
	
	//実行
	call Exec_Invalidate($folName, $lst)
}

//無効
Function Exec_Invalidate(string folName, string list lst) {
	string code = ''
	switch $folName {
		case 'toolpath'
			$code  = 'INVALIDATE TOOLPATH '
			break
		case 'boundary'
			$code  = 'INVALIDATE BOUNDARY '
			break
		case 'stockmodel'
			$code  = 'UNLOCK STOCKMODEL '
			break
		default
			return
	}
	
	call Msgoff() 
	
	string cmd = ''
	foreach itm in $lst {
		$cmd = $code + ' ' + $itm
		DOCOMMAND $cmd
	}
	
	call Msgon() 
}

//選択名リスト
Function GetSelList(output string list out) {
	$out = extract(explorer_selected_entities() , 'name')

	IF is_empty($out) {
		string msg = '要素がが選択されていない為、中止します'
		MESSAGE ERROR $msg
		MACRO ABORT 
	}
}

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

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

コンテキストメニューでの呼び出しです。
XMLファイルは、マクロの引き数にフォルダ名(toolpath,boundary,stockmodel)にします。

<menupage>
	<button label="無効化" command='MACRO all\Invalidate.mac "toolpath"'  multiple_selection="allowed" />
</menupage>

<menupage>
	<button label="無効化" command='MACRO all\Invalidate.mac "boundary"'  multiple_selection="allowed" />
</menupage>

<menupage>
	<button label="無効化" command='MACRO all\Invalidate.mac "stockmodel"'  multiple_selection="allowed" />
</menupage>

ストックモデルの処理はこれで良いのかな?