こちらの続きなのですが、タイトルが相応しくない為変えました。
"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" フォルダを犠牲していません!!