オブジェクト位置ファイル出力改良型

選択したオブジェクトの名前と位置をテキストファイルに出力する、ユーティリティスクリプトです。
オブジェクト名で使用された空白を除去する機能の追加と、Startup へ登録するように改良しました。
3DS MAX がインストールされているディレクトリ下の、Scripts\Startup へ登録してください。


-- *****************************************************************
--      オブジェクト位置を出力する(一部改良型)
--
--      Coded By Yoshiaki Tanaka
--      2001/10/02
-- *****************************************************************
utility Iconsahedron "オブジェクト位置出力"
(
--
-- ユーザーインターフェース定義
--
    label lb1 "倍率"
    spinner keisuspin range:[0.001,20000,1] align:#left
    label lb2 "出力ファイル"
    edittext outfile text:"C:\TESTFILE.POS" enabled:on align:#left
    button do_listup "出力" width:180

--
-- アクション定義
--
    on do_listup pressed do
    (
        Local  ostr

        if selection.count < 1  then
        (
            messagebox "オブジェクトを選択してください。" Title:"Operation Error"
        )
        else
        (
            ostr = createFile( outfile.text )
            if ostr != undefined then 
            ( 
                for i in selection do
                (
                    tpos = i.pos * keisuspin.value
                    eang = i.rotation as eulerAngles

                    -- オブジェクト名の空白文字をアンダーバーに強制変換
                    nm = i.name
                    do
                    (
                        rep = false;
                        idx = findString nm " "
                        if idx != undefined then
                        (
                            rep = true;
                            -- messagebox (idx as string) Title:"Attention"
                            nm = replace nm idx 1 "_"
                        )
                    ) while rep

                    -- 情報出力
                    format "NAME=%\n" nm    to:ostr
                    format "X=%\n" tpos.x   to:ostr
                    format "Y=%\n" tpos.y   to:ostr
                    format "Z=%\n" tpos.z   to:ostr

                    format "RX=%\n" eang.x  to:ostr
                    format "RY=%\n" eang.y  to:ostr
                    format "RZ=%\n" eang.z  to:ostr

                    format "END=\n"         to:ostr
                )
                close ostr
                messagebox "出力しました" Title:"Attention"
            )
            else
            (
                messagebox "ファイルがオープンできません。" Title:"File Error"
            )
        )
    )

)