C#ATIA

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

プルダウンリストライブラリ (input choice multiple)

こちらの続きなのですが、タイトルが相応しくない為変えました。
"group" フォルダは犠牲にした、プルダウンリストライブラリ - C#ATIA

何らかの処理を行いたい際に、任意の要素を選択させる為に
前回作りました。 本当はこちらに記載した最後の "出来ない?"
と当時は思ったからです。
PowerMillマクロのダイアログ類 - C#ATIA

ところが先月辺りでこちらを見つけました。
Solved: MACRO - get directories from list - Autodesk Community
"input choice multiple" 何時から出来たのだろう? PMill2017の頃には
無かったはず・・・。
ちょっぴり動作が異なる為、ライブラリを修正すべきかどうか迷って
いましたが、修正する事にしました。

//pm2018 macro
//downmenu.inc ver0.0.3
//string list を選択肢としたダウンメニュー
//---------------------------------------------------------------------------------------------------
//ver0.0.1:完成
//ver0.0.2:AbortFg=0 空を返すように修正
//ver0.0.3:標準関数使用に修正(Groupフォルダ未使用化)
//---------------------------------------------------------------------------------------------------

//ダウンメニュー
//pram  :Lst-選択肢リスト
//pram  :Msg-メッセージ
//pram  :AbortFg-未選択時の処理 0-空を返す 1-終了
//return:OutLst-選択されたリスト
function Exec_DownMenu(string list Lst, string Msg, bool  AbortFg, output string list OutLst) {
	string allword = '全て'
	$OutLst = {}
	
	//先頭に全てを追記
	int dmy = add_first($Lst, $allword)
	
	//ユーザー選択
	int list idxs =  input choice multiple $Lst $Msg
	
	//空チェック
	if size(idxs) < 1 {
		if $AbortFg==1 {
			macro abort
		} else {
			return
		}
	}
	
	//選択リスト化
	if $idxs[0] == 0 {
		string tmp = remove_first($Lst)
		$OutLst = $Lst
	} else {
		foreach idx in $idxs {
			$dmy = add_last($OutLst, $Lst[$idx])
		}
	}
	return
}

ライブラリ化するのをやめるのも手なのですが、
・戻り値が選択されたListのインデックスが返って来る
 のでややこしい
・大量にチェックを入れる手間を省く為の "全て" の項目は
 継続したい
と言う気持ちが有り、ライブラリを書き換えました。
呼び出し側のマクロは修正不要です。

今回のものは "group" フォルダを犠牲していません!!