大家好,我是阿赵。继续分享MaxScript学习笔记第八篇
。这一篇主要讲文件操作,包括文件的I/O和导入导出。
1、获得3DsMax指定的一些目录路径
如果在电脑上安装了3DsMax软件,那么在文档里面会有一个3dsMax的文件夹,里面有一些3dsMax默认使用的文件夹。
如果我们写脚本时想使用这些路径,可以通过getDir方法,获取一部分的路径。
如果想修改这些路径,可以在3DsMax主工具栏的Customize>Configure Paths里面打开设置面板指定
2、创建和删除文件
1.创建文件
使用createFile方法,可以创建文件,如果没有指定路径,只有文件名,文件将会创建在电脑桌面。
在创建的时候,可以指定编码打开,编码有:
#current | #English | #German | #French | #Japanese | #Korean | #Chinese | #utf8 | #utf16LE | #utf16BE
也可以用布尔值指定是否带BOM头
需要注意以下几点:
(1)在创建和写入完之后,一定要调用close,不然这个文件会一直被3DsMax占用着,不能释放,也不能在外部将它删除,直到当前运行的3DsMax程序关闭
(2)如果文件已经存在,使用createFile方法再次创建,会把原来的文件删掉,再创建一个新的,原来的文件内容就没了,所以在createFile之前,一定要使用doesFileExist先判断文件是否存在
(3)使用format to方法可以往文件内逐行写入内容
2.删除文件
使用deleteFile方法可以删除指定路径上的文件,如果文件存在,可以删除成功,会返回true,否则返回false
3、加密文件
可以对某个文件通过某个key进行加密
encryptFile path1 path2 整型数字的key
4、读取和写入文件
1.读取文件
打开文件有2个方法
openFile和openEncryptedFile
openFile是打开没有加密的文件,具体方式是openFile path
openEncryptedFile是对应通过encryptFile 的方法,具体方式是openEncryptedFile path key
openFile系列方法默认都是只读模式
打开文件后,可以通过readLine来读取一行,或者用readChar 来读取一个字符
这个读取是逐行或者逐字符读取的,一直读取到文件末尾,继续读取就会报错,所以要用eof来判断是否到了文件末尾
这是一个读取一个文件所有内容的例子
2.写入文件
openFile系列方法可以接mode:<模式>
默认:只读
“a+”/”r+”:可读写,如果用format写入,会添加在原文本后面
“1”:只写,如果用format写入,会添加在原文本后面
“wt”:只写,如果用format写入,会覆盖原有文本
5、复制文件
copyFile path1 path2
6、打开文件选择窗口和保存文件窗口
打开一个窗口,选择需要打开的文件:
getOpenFileName caption:“标题” fileName:“默认文件名” types:“扩展名”
打开一个窗口,选择需要保存的文件:
getSaveFileName caption:“标题” fileName:“默认文件名” types:“扩展名”
其中标题、默认文件名、扩展名都可以不填,返回选择的文件路径
7、文件夹相关操作
1.判断文件夹是否存在
doesDirectoryExist path
2.选择文件夹
dir = getSavePath caption:“请选择” initialDir:(getDir #maxroot)
3.创建文件夹
makedir path
4.获取文件夹内所有文件夹
dir_array = GetDirectories (dir+”/*”)
5.获取文件夹内所有文件
fileArr = getFiles (dir+“*”)
8、导入导出常用格式
1.导入文件
–导入一个obj格式的文件
path1 = getdir #export+“\box.obj”
“C:\Users\admin\Documents\3dsMax\export\box.obj”
–如果不加任何参数,会打开导入设置窗口,并由用户选择参数
importfile path1
true
如果加了参数,将不会打开导入窗口,直接导入到场景
importfile path1 #noPrompt
true
2.导出文件
–创建2个box
boxt1 = box()
$Box:Box001 @ [0.000000,0.000000,0.000000]
boxt2 = box()
$Box:Box002 @ [0.000000,0.000000,0.000000]
path1 = getdir #export +“\box1.obj”
“C:\Users\admin\Documents\3dsMax\export\box1.obj”
–不加任何参数的导出,会导出整个场景所有物体为一个文件,并会弹出导出设置窗口
exportFile path1
true
–添加#noPrompt,不会弹出设置窗口,导出整个场景所有物体为一个文件
exportFile path1 #noPrompt
true
–加上selectedOnly:true,只导出当前选择的物体
select boxt1
OK
exportFile path1 #noPrompt selectedOnly:true
true
9、其他操作
1.获得文件大小
GetFileSize path1
2.释放文件内存
free filestream