MaxscriptでWindowsのマイドキュメントフォルダのパスを調べてみる


表題どおり。
MaxscriptでWindowsのスペシャルフォルダを取得してみる。
コレが以外にクセがあってめんどくさかった・・・・。

折角なら$XXXで始まるパス列挙にWindowsのフォルダあっても良いじゃん、
けちだなぁMaxは。

-- 従来の方法 $xxxx でパスを取得できる
-- https://help.autodesk.com/view/3DSMAX/2017/JPN/?guid=__files_GUID_0EE531B2_6FF8_4D0B_ACA1_5400E0B9D604_htm
print(symbolicPaths.getPathValue "$max");

-- .Netを使ってwindowsのスペシャルフォルダを取得する
speFld = dotNetClass "System.Environment+specialFolder";
sysEnv = dotNetClass "System.Environment";
--ret = sysEnv.getfolderPath speFo.commonApplicationData;  -- こうするとプログラムファイルのパスをだす
ret = sysEnv.getfolderPath speFld.MyDocuments;
print(ret);

-- Pythonで今のファイルのパスとかマイドキュメントのパスを
-- 注意事前にosとsysをインポートすること!
-- あとこれ以下はMax2018でないと動かない、試す人はコメントアウトを外して実行
python.Execute("import os");
python.Execute("import sys");
--python.Execute("print(os.path.abspath(sys.argv[0]))");
--py = "print(os.environ.get(\"USERPROFILE\") + \"\\Documents\")";
--python.Execute(py)

python.Executeだと実行結果が成功したのか?失敗したのか?
というreturnしか受け取れないので、直接pythonを使ってパスを読み取ろうとするなら
イチイチ実行するpythonまでのパスを通しておいてpython.importを使うのが常套句なんだけれど
結局pythonのパスとうすのカヨ、めんどくせぇな。って事で回りくどくてそのままじゃ使えない。
http://help.autodesk.com/view/3DSMAX/2018/JPN/?guid=__files_GUID_E9BA617D_50E5_447F_997B_4F640F1110BA_htm

一番手っ取り早いのはどうやら dotNetClass を使うやり方らしい。

ちなみに、 DOSCommand とか ShellLaunchでも取得できないか試してみたけれど、
returnで標準出力を取得したり出来ないっぽいのであきらめた。
もしやるならpythonでdos叩いてリターン拾うのが手っ取り早いかも。
って結局python経由かよ、コンチキショー・

 

と言うことで

以上今日のメモでした!

 

Leave a comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください