学习用MaxScipt批处理Max文件
学习用MaxScipt批处理Max文件
需求
对几百个.max文件中的指定指定名称的骨骼进行重命名。
解决
考虑到是一次性需求,花了两个钟用maxscript实现了功能,基本逻辑把改名规则做成配置文本,然后一个个加载文件夹中的max档更加配置给节点改名。
为了方便以后使用,又用winform写了个带详细使用说明的界面,这个界面可以编辑配置文件,指定批处理文件夹,最后通过cmd来启动3dsmax执行这个脚本:
MaxScript:
-- by Tongyun Liu
-- 2017-4-27
----------------- define variables -------------------------------
logpath = @"D:\BoneRename.txt"
inipath = @"D:\RenameLog.ini"
batchpath = @"D:\batch_Directories.ini"
outputLogs = #()
inifile = openfile inipath
----------------- define functions -------------------------------
fn fn_RenameAllMax =
(
batchfile = openfile batchpath
while not eof inifile do
(
iniLine = #()
iniLine = filterString (readline inifile) "="
if(iniLine!= undefined) then
(
len = iniLine.count
if(len == 2) then
(
oldName = trimRight iniLine[1] "\t"
newName = trimLeft iniLine[2] "\t"
if(oldName !=undefined) and (oldName !=undefined)and(oldName !=undefined) then
(
bobj = execute("$'"+oldName+"'")
for o in objects
where (classof(o) == biped_object) or (classof(0) == BoneGeometry) do
(
if((bobj != undefined) and (o.name == bobj.name)) then
(
append outputLogs ("\t["+oldName+"]\t\tRenameTo:\t\t["+newName+"]")
bobj.name = newName
)
)
)
)
)
)
return 1
)
--------------------------------- batch rename -------------------------------------
while not eof batchfile do
(
maxpathline = readline batchfile
if(maxpathline != "")and((findstring maxpathline ".max") != undefined) then
(
loadmaxfile maxpathline
append outputLogs ("MaxFileName: "+maxpathline + "\t\t"+localtime)
func_rename = fn_RenameAllMax()
savemaxfile maxpathline clearNeedSaveFlag:true quiet:true
)
)
close inifile
close batchfile
---------------------- output logs --------------------------------------------
append outputLogs ("\n-------------------------------------------------------")
logfile = openfile logpath mode:"a+"
print outputLogs to: logfile
close logfile
shelllaunch "notepad.exe" logpath
quitmax #noPrompt
命令行启动和操作3dsmax
在winform中启动max并执行maxScript的方法:
private void RunCmd()
{
Process process = new Process();
string maxExePath = "3dsmax.exe所在的文件夹路径";
string maxScriptPath = "需要执行maxscript脚本的路径";
process.StartInfo.WorkingDirectory = maxExePath;
process.StartInfo.FileName = "3dsmax.exe"
process.StartInfo.Arguments = " -silent -mip -u MAXScript " + maxScriptPath;
process.Start();
process.WaitForExit();
if(process.HasExited)
{
process.Close();
}
}
学习用MaxScipt批处理Max文件的更多相关文章
- SVN批处理更新文件夹
SVN批处理更新文件夹 "C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe" /command:update /path:&quo ...
- Java执行批处理.bat文件(有问题???求高手帮忙解答!!!)
Java执行批处理.bat文件(有问题???求高手帮忙解答!!!) 在项目开发中常常都会遇到需要在代码中调用批处理bat脚本,把自己在项目中遇到过的总结下 ...
- 学习用Node.js和Elasticsearch构建搜索引擎(6):实际项目中常用命令使用记录
1.检测集群是否健康. curl -XGET 'localhost:9200/_cat/health?v' #后面加一个v表示让输出内容表格显示表头 绿色表示一切正常,黄色表示所有的数据可用但是部分副 ...
- Unity3D导入MAX文件的一些问题(zz)
1.轴向偏转 MAX模型导入Unity3D后,X轴会自动偏转-90度.是因为Unity3D采用的是左手坐标系,而3DMax采用的是右手坐标系.无奈啊,这是很多游戏引擎跟Max结合后都会产生的问题.兼容 ...
- Asp.Net Core 轻松学-一行代码搞定文件上传 JSONHelper
Asp.Net Core 轻松学-一行代码搞定文件上传 前言 在 Web 应用程序开发过程中,总是无法避免涉及到文件上传,这次我们来聊一聊怎么去实现一个简单方便可复用文件上传功能:通过创建 ...
- 学习用5W1H来管理自己的项目/工作
学习用5W1H来管理自己的项目/工作 最近开始需要系统化的思维模型,这只是一个开始,一下用脑图的形式来简介5W1H的具体内容: 先写xmind思维树的文本导出,后面附上图片.^ _ ^ 5W1H ...
- 将bat批处理命令文件固定到任务栏
将bat批处理命令文件固定到任务栏第一种方法:使用链接工具http://www.xstui.com/read/3451.在任务栏点击右键,移动到工具栏,勾选链接工具2.你会在通知栏左侧看到链接字样,将 ...
- 自导自演的面试现场,趣学MySQL的10种文件
导读 Hi,大家好!我是白日梦!本文是MySQL专题的第 24 篇. 今天我要跟你分享的MySQL话题是:"自导自演的数据库面试现场--谈谈MySQL的10种文件" 换一种写作风格 ...
- window批处理——bat文件的编写
BAT 批处理脚本 教程 第一章 批处理基础第一节 常用批处理内部命令简介 批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD.这些命 ...
随机推荐
- 【转】关于HTTP中文翻译的讨论
http://www.ituring.com.cn/article/1817 讨论参与者共16位: 图灵谢工 杨博 陈睿杰 贾洪峰 李锟 丁雪丰 郭义 梁涛 吴玺喆 邓聪 胡金埔 臧秀涛 张伸 图钉派 ...
- OpenMax的接口与实现
OpenMax IL层的接口定义由若干个头文件组成,这也是实现它需要实现的内容,它们的基本描述如下所示. OMX_Types.h:OpenMax Il的数据类型定义 OMX_Core.h:OpenMa ...
- @RestController失效
@RestController 注解失效.就是本来应该是直接返回数据.而不是去查找视图.但是去查找视图了.我这人不喜欢弄一些无用的配置文件.所以用到什么.引用什么.但是也容易犯错误.不过也好.对哪里出 ...
- java 中的懒汉单例和饿汉单例模式
//-------------------------------------------------------------饿汉模式--开始----------------------------- ...
- 分别用Eclipse和IDEA搭建Scala+Spark开发环境
开发机器上安装jdk1.7.0_60和scala2.10.4,配置好相关环境变量.网上资料很多,安装过程忽略.此外,Eclipse使用Luna4.4.1,IDEA使用14.0.2版本. 1. Ecli ...
- AJAX上传文件到服务器
上传文件是常要处理的事情,使用ajaxFileUpload.js处理比较方便,这里的ajaxFileUpload.js文件修改过的, Html部分 <input type="file& ...
- 浅谈async函数await用法
今天状态不太好,睡久了懵一天. 以前只是了解过async函数,并还没有很熟练的运用过,所以先开个坑吧,以后再结合实际来更新下,可能说的有些问题希望大家指出. async和await相信大家应该不陌生, ...
- [MYSQL][1]创建,修改,删除表
查看有哪些数据库: SHOW DATABASES; 创建,删除数据库: CREATE DATAABASE mydb; DROP DATABASE mydb; 查看有哪些表: SHOW TABLES; ...
- Redis总导航目录
NoSQL入门和概述 NoSQL入门概述 3V + 3高 当下的NoSQL经典应用 NoSQL数据模型简介 NoSQL数据库的四大分类 在分布式数据库中CAP原理CAP+BASE Redis入门介绍 ...
- Java开发小技巧(五):HttpClient工具类
前言 大多数Java应用程序都会通过HTTP协议来调用接口访问各种网络资源,JDK也提供了相应的HTTP工具包,但是使用起来不够方便灵活,所以我们可以利用Apache的HttpClient来封装一个具 ...