阿赵的MaxScript学习笔记分享八《文件操作》
大家好,我是阿赵。继续分享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
相关文章:
阿赵的MaxScript学习笔记分享八《文件操作》
大家好,我是阿赵。继续分享MaxScript学习笔记第八篇 。这一篇主要讲文件操作,包括文件的I/O和导入导出。 1、获得3DsMax指定的一些目录路径 如果在电脑上安装了3DsMax软件,那么在文档里面会有一个3dsMax的文件夹,里面有一些3dsMa…...
将项目封装进docker进行迁移或使用
首先要理解docker的基本使用,本文不做过多阐述,博主也对docker没有了解透彻。 这里列一下docker的基本命令: docker info # 查看docker信息 docker -v # 查看docker版本 docker images # 查看docker所有的镜…...
matlab - 特殊矩阵、矩阵求值、稀疏矩阵
学习视频1.特殊矩阵1.1 通用特殊矩阵format % 零矩阵(全0) 幺矩阵(全1) 单位矩阵 % zeros ones eye rand(生成0~1的随机元素) randn(生成均值为1,方差为0的符合正太分布的随机阵)zeros(3) % 3x3的全0方阵 zeros(3, 4) % 3x4的全0矩阵 exA ones(3, 5) % 3x5的…...
Flume使用入门
目录 一. Flume简单介绍 1. Agent 2. Source 3. Sink 4. Channel 5. Event 二. 环境安装 1. 创建日志目录 2. 修改日志配置文件 3.修改运行堆内存 4. 确定日志打印的位置 5. 修改flume使用内存 内存调大 三. 校验flume 1. 安装netcat工具和net-tools工具 2. 判…...
【Servlet篇2】Servlet的工作过程,Servlet的api——HttpServletRequest
一、Servlet的工作过程 二、Tomcat的初始化 步骤1:寻找到当前目录下面所有需要加载的Servlet(也就是类) 步骤2:根据类加载的结果创建实例(通过反射),并且放入集合当中 步骤3:实例创建好之后,调用Servlet的init()方…...
【JAVASE】注解
文章目录1.概述2.JDK内置注解2.1override注解2.2 Deprecated注解3.元注解4.注解中定义属性4.1 属性value4.2 属性是一个数组5. 反射注解6.注解在开发中的作用1.概述 注解,也叫注释,是一种引用数据类型。编译后也同样生成class字节码文件。 语法 [修饰…...
【408之计算机组成原理】计算机系统概述
目录前言一、计算机的发展历程1. 计算机发展的四代变化2. 计算机元件的更新换代3. 计算机软件的发展二、计算机系统层次结构1. 计算机系统的组成2. 冯诺依曼体系结构3. 计算机的功能部件1. 输入设备2. 输出设备3. 存储器4. 运算器5. 控制器三、 分析计算机各个部件在执行代码中…...
1.Spring Cloud (Hoxton.SR10) 学习笔记—基础知识
本文目录如下:一、Spring Cloud基础知识什么是微服务架构?服务拆分 有哪些注意事项?什么是分布式集群?分布式的 CAP 原则?组件 - Spring Cloud 哪几个组件比较重要?组件 - 为什么要使用这些组件?组件 - Na…...
嵌入式开发工具箱【持续更新中】【VMware、Ubuntutftp、nfs、SecureCRT、XShell、Source Insight 4.0】
一、概述 本文主要介绍嵌入式开发过程中需要用到的工具及简单的使用方法。避免在搭建嵌入式开发环境时,需要四处寻找文档,收藏此文章,一文搞定。 大多数嵌入式开发环境是使用Linux作为目标开发系统,所以开发主机一般都是Linux系统…...
深究Java Hibernate框架下的Deserialization
写在前面 Hibernate是一个开源免费的、基于 ORM 技术的 Java 持久化框架。通俗地说,Hibernate 是一个用来连接和操作数据库的 Java 框架,它最大的优点是使用了 ORM 技术。 Hibernate 支持几乎所有主流的关系型数据库,只要在配置文件中设置好…...
微服务一 实用篇 - Docker安装
《微服务一 实用篇 - Docker安装》 提示: 本材料只做个人学习参考,不作为系统的学习流程,请注意识别!!! 《微服务一 实用篇 - Docker安装》《微服务一 实用篇 - Docker安装》0.安装Docker1.CentOS安装Docker1.1.卸载(可选)1.2.安装docker1.3.启动docker…...
JavaSE22-集合2-map
文章目录一、集合概念二、map集合1、Map集合的特点2、HashMap2.1 HashMap特点2.2 创建对象2.3 常用方法2.4 遍历2.4.1 使用entrySet遍历2.4.2 使用keySet遍历3、HashMap的key去重原理一、集合概念 集合就是用于存储多个数据的容器。相对于具有相同功能的数组来说,集…...
【项目精选】病历管理系统设计与实现(源码+视频)
点击下载源码 企业财务管理系统主要用于电子病历来提高医院各项工作的效率和质量,促进医学科研、教学;减轻各类事务性工作的劳动强度,使他们腾出更多的精力和时间来服务于病人。本系统结构如下: 电子病例系统: 病人登…...
如何用Python把篮球和鸡联系起来
文章目录画个球让球转起来画个球 不管篮球和不和鸡联系起来,都首先得有个球,或者说要有一个球面,用参数方程可以表示为 xrcosϕcosθyrcosϕsinθzrsinϕ\begin{aligned} x & r\cos\phi\cos\theta\\ y & r\cos\phi\sin\th…...
【RocketMQ】消息的刷盘机制
刷盘策略 CommitLog的asyncPutMessage方法中可以看到在写入消息之后,调用了submitFlushRequest方法执行刷盘策略: public class CommitLog {public CompletableFuture<PutMessageResult> asyncPutMessage(final MessageExtBrokerInner msg) {// …...
AMBA-AXI(一)burst 传输-INCR/WRAP/Fixed
💡Note:本文是根据AXI协议IHI0022F_b_amba_axi_protocol_spec.pdf(issue F)整理的。主要是分享AXI3.0和4.0部分。如果内容有问题请大家在评论区中指出,有补充或者疑问也可以发在评论区,互相学习ὤ…...
Java知识复习(八)Spring基础
1、什么是Spring框架? Spring :是一款开源的轻量级 Java 开发框架,旨在提高开发人员的开发效率以及系统的可维护性 2、Spring、SpringMVC和SpringBoot的区别 Spring主要指Spring Framework,就是指如上图所示的各项功能模块Spr…...
WuThreat身份安全云-TVD每日漏洞情报-2023-02-27
漏洞名称:OTFCC 缓冲区错误漏洞 漏洞级别:中危 漏洞编号:CVE-2022-35060,CNVD-2023-11996,CNNVD-202209-1527 相关涉及:OTFCC OTFCC 漏洞状态:EXP 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2022-23648 漏洞名称:MuYucms 存在任意代码执行漏洞 漏洞级别:高危…...
上海交大陈海波教授、夏虞斌教授领衔巨作上市:《操作系统:原理与实现》
❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。2022年度博客之星评选TOP 10🏆,Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作…...
dpi数据接入shell脚
原文:dpi数据接入shell脚本_weixin_34416754的博客-CSDN博客 ##############从ftp服务器拿数据文件 #!/bin/bash #获取感知优良率DPI数据 #DCN服务器信息 uSichuan pS988188# ip137.192.5.53 #获取日期,根据日期抓取文件 Tdate -d "3 days ago&…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...
Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...
xmind转换为markdown
文章目录 解锁思维导图新姿势:将XMind转为结构化Markdown 一、认识Xmind结构二、核心转换流程详解1.解压XMind文件(ZIP处理)2.解析JSON数据结构3:递归转换树形结构4:Markdown层级生成逻辑 三、完整代码 解锁思维导图新…...
