[Maxscript]笔记:文件相关的操作 【转载于知乎】

一、获取当前max文件的路径

获取当前max文件的路径 : GetDir #目录里的文件夹名 + “/文件名字.文件格式”

举例:

preview_name = (getDir #preview)+"/quickpreview.avi"

定义预览AVI文件的输出路径。使用getDir函数,可以访问3ds Max ' Customize>Configure Paths '中指定的当前预览路径。我们将文件名添加到用斜杠分隔的路径中。(我们也可以使用双反斜杠“\\”作为目录分隔符)。结果路径将存储在名为preview_name的用户变量中。

举例:

iconBmp = bitmap 16 15 iconBmp.filename = getDir #image +"/_temp.bmp" --输出"C:\Users\hzgedanfeng\Documents\3dsMax\sceneassets\images/_temp.bmp" 
save iconBmp close iconBmp display iconBmp --显示图片

max程序的路径:"C:\Program Files\Autodesk\3ds Max 2017\\3dsmax.exe"

GetFileSize (getDir #maxRoot + "\\3dsmax.exe")

------------------------------------------------------

二、创建文件 CreateFile

 createFile <filename_string> [encoding:{ <#current> | <#English> | <#German> | <#French> | <#Japanese> | <#Korean> | <#Chinese> | <#utf8> | <#utf16LE> | <#utf16BE> | <int codepage> } ] \ [writeBOM:<bool>]

createFile

f = createFile "lock.tmp" format "%" hardwareLockID to:f close f encryptFile "lock.tmp" "lock.dat" 123 deleteFile "lock.tmp"

三、打开文件openFile

openFile

 openFile <filename_string> [mode:<mode_string>] [encoding:{ <#current> | <#English> | <#German> | <#French> | <#Japanese> | <#Korean> | \ <#Chinese> | <#utf8> | <#utf16LE> | <#utf16BE> | <int codepage> } ] \ [writeBOM:<bool>]

openEncryptedFile

 openEncryptedFile <filename> <key> [encoding:{ <#current> | <#English> | <#German> | <#French> | <#Japanese> | <#Korean> |\  <#Chinese> | <#utf8> | <#utf16LE> | <#utf16BE> | <int codepage> } ] \ [writeBOM:<bool>]

getOpenFileName

getOpenFileName [	caption:<title> ] \ [	filename:<seed_filename_string> ] \ [	types:<description1>|<pattern1>|<description2>|<pattern2>|...| ] \ [	historyCategory:<string> ] 	      getSaveFileName [ caption:<title> ] \ [ filename:<seed_filename_string> ] \ [ types:<description1>|<pattern1>|<description2>|<pattern2>|...| ] \ [ historyCategory:<string> ]

两个函数都返回一个完全指定的文件路径名,如下图:

四、读取文件

readLine <filestream>读取下一行,作为字符串返回。

readChar <filestream>读取下一个字符,作为字符串返回。

s=stringstream "random 0. 1.;random red blue" readvalue s -- 读取并计算第一个值 
readvalue s -- 读取并计算第二个值 
seek s 0 -- 位于stringstream的开始位置 
readexpr s -- 阅读并计算第一个表达式 
readexpr s -- 阅读并计算第二个表达式 
seek s 0 -- 位于stringstream的开始位置 
execute s -- 计算所有表达式

输出显示:

StringStream: "random 0. 1.;random red blue"  random()   -- result line 2 (evaluated "random") 
0.0        -- result line 3 (evaluated "0.") 
OK         -- result line 4 
0.448042   -- result line 5 (evaluated "random 0. 1. ") 
(color 86.476 0 163.24) -- result line 6 (evaluated "random red blue") 
OK         -- result line 7 
(color 30.2417 0 143.636) -- result line 8 (evaluated all expressions,returns result of last expression)

display 图片文件

readValue

txt = "#([-2.93967e-07,0.977072,-0.212907], [-0.37391,0.902697,-0.212907], [-0.690895,0.690895,-0.212907])" a = "E://test.txt" f = (createFile a) format txt to:f   --写入信息  --比如format "value pos:%\n" $.pos to:f 
close f   --这里很关键 
if f != undefined then(o = openfile a)  --先判断文件是否能正常打开 
readValue o  --value只能读一个值,也可以用readLine o 读取一行

五、关闭文件

close <filestream> 刷新内存缓冲区并关闭文件。

free <filestream>释放filestream值使用的内存,而无需等待垃圾收集。

六、删除文件

testfile = (GetDir #export + "\\test.txt") --输出"C:\Users\hzgedanfeng\Documents\3dsMax\export\test.txt" 
aa = createfile testfile --输出<File:C:\Users\hzgedanfeng\Documents\3dsMax\export\test.txt> 
close aa --输出OK 
deletefile testfile --输出true

--------------------------------------------------------

七、存储数据

format

将值格式化为指定的文件流。

format <fmt_string> { <value> } to:<filestream>

append

<string>append <string1> <string2>

将string2追加到string1。在适当的位置对string1进行操作,并返回string1作为结果。

--由于此方法对string1进行操作,在运行以下代码段后,s1和s2将继续指向相同的字符串值: 
s1 = "aa" s2 = s1 append s1 "bb" s1-- returns "aabb" 
s2-- returns "aabb"and not "aa"

举例:创建一个空数组array,然后将需要的数值append进去

aa= #() --输出#() 
bb= $.pos --输出[-83.4442,0,0] 
append aa bb --输出#([-83.4442,0,0]) 
aa --输出#([-83.4442,0,0]) 
aa[1] --输出[-83.4442,0,0]


通过打开窗口打开文件并读取:

in_name = getOpenFileName() in_file = openFile in_name num_verts = readValue in_file


    本文标题:《[Maxscript]笔记:文件相关的操作 【转载于知乎】》作者:黑枫棉
    原文链接:https://cayteno.top/?id=22
    特别注明外均为原创,转载请注明。

    分享到微信

    扫描二维码

    可在微信查看或分享至朋友圈。

    相关文章

    发表评论:

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

    站点信息

    • 文章总数:17
    • 页面总数:1
    • 分类总数:6
    • 标签总数:2
    • 评论总数:0
    • 浏览总数:3808
    «    2025年6月    »
    1
    2345678
    9101112131415
    16171819202122
    23242526272829
    30

    控制面板

    您好,欢迎到访网站!
      查看权限

    网站分类

    搜索

    文章归档