C# to Maxscript】的更多相关文章

MaxScript里开不了线程,但是可以用.Net的BackgroundWorker来做后台处理 BackgroundWorker Fn BackgroundTcpListenerDoWork theSender theEvent = ( IPAddress = DotNetClass "System.Net.IPAddress" theIPAddress = IPAddress.Parse "127.0.0.1" theTcpListener = DotNetOb…
前天看到一位大神写用MaxScript实现重启3dsMax的方法,用的是.net临时编译一个exe出来,然后用这个新的进程来关闭并开启新的max.感觉这种思路不错,或许可以用在别的地方.不过谈及max的重启,用那办法写几十行的代码显得繁琐了. 我想了一下,其实有个相当简单的办法,两行脚本搞定: callbacks.addscript #postSystemShutdown "shellLaunch (getDir #maxroot + \"3dsmax.exe\") \&qu…
之前用 hiddenDOSCommand 本机测试通过,但是换其他电脑有时会不能用... fn xcopy oldfile newfile = ( newfilepath = newfile + "\\" + getFilenameFile oldfile xcopy_cmd = "xcopy /s /e /i /y " + oldfile + " " + newfilepath-- + " &&rd /s /q &qu…
关于如何获取/清除 MAXScript 侦听器内的文本 用来保存记录?还没想到实际用处,先记上. macroRecorder as string listener as stringclearListener()…
之前写过一个 关于 MAXScript 中文路径返回上级目录 的博文 今天无意中发现了一个更简单的方法 代码如下: fn newfile filepath = ( nf = getfilenamepath filepath nf[nf.count] = "" nf ) --返回上级路径 newpath "D:\Program Files\Autodesk\3ds Max 2014\小一\工具" 这样确实比以前清爽多了…
MAXScript 中可以对文件进行创建删除复制等操作但是唯独不能删除文件夹... 网上搜了一下批处理的剪切方法,在 MAXScript 里调用一下就好了 fn xcopy oldfile newfile = ( newfilepath = newfile + "\\" + getFilenameFile oldfile xcopy_cmd = "xcopy /s /e /i /y " + oldfile + " " + newfilepath…
官方帮助文档FileStream Values部分有相关介绍. fn format_txt filepath filetext = ( if doesFileExist filepath == true then ( fin = openfile filepath mode:"r+" seek fin #eof txt = filetext + "\n" format txt to:fin close fin ) else ( newfile = createFil…
MAXScript 官方文档里关于获取文件夹下所有文件的方法 fn getFilesRecursive root pattern = ( dir_array = GetDirectories (root+"/*") for d in dir_array do join dir_array (GetDirectories (d+"/*")) my_files = #() for f in dir_array do join my_files (getFiles (f…
1,将场景中所有选中物体整体导出为一个fbx文件 exportfile filename #noprompt selectedOnly:true using:FBXEXP 2,将场景中所有选中物体各导出为一个文件 Sel = Selection as array for i=1 to Sel.count do ( Select Sel[i] objname=$.name exportfile objname #noprompt selectedOnly:true using:FBXEXP ) 下…
maxscript中数组和字符串下标是从1开始的.…
I figured I’d do a quick tutorial about something a little more difficult, but still very important. I’m going to take you step-by-step through integrating a maxscript document and a C# class library so that you can access the powerful and robust fea…
这是我编写的一部分maxScript 脚本,专注于3DsMax 快速建模,程序化地为我们完成一些繁琐的工作. 可以极大提高公司开发的效率! 2019年04月09日 :上传 今年新开发的插件,还有很多,很多功能都汇集成一个窗口,有些设成快捷键了,没有展示,…
最近项目要求通过java给max发送任务指令,max接收指令执行任务,并且返回执行的结果.不管为什么会有这样的需求,有就要去实现. 1.OLE开启 Max本身提供了一个方式,它可以将自己注册成一个Ole自动化对象,默认是没有开启的,开启这个接口只需要操作注册表即可.将该脚本存放的max的安装路径下的Scripts\StartUp,即max启动时会默认加载的脚本.保证max启动以后会执行该脚本. 关于脚本中内容具体请参考Maxscript的自带文档 OLE Automation 章节. ( /*…
getnodebyname "circle01" for o in objects do if o.name == "circle01" then select $Box* – select any objects with the name box at the beginning of them. move, scale rotate move obj [x,y,z] scale obj [x,y,z] rotate obj (eulerangles x y z…
1. string string类型的变量是一个数组,下列操作合法:strName = $.name -- output: "Shemmy_03" strName[1] --得到字符串strName第一个元素 "S"strName[3] --得到字符串strName第一个元素 "e"strName.count --得到字符串strName的字符个数为 9--交换最后两个数字的顺序num = strName.count --记下该字符串中字符的个数…
MaxScript代码补全插件 作者Nik,原文发布于ScriptSpot 安装后max自带脚本编辑器会有自动补全,效果如下:…
参考链接: is there a way to through maxscript to make the time slider go to a spacific frame? 最近老师布置了要用mitsuba渲染动画的任务,然而mitsuba这样的古董没法导入1.4.1版本的dae文件,所以只好先将dae文件导入max中,再一帧帧导出成obj.然而如果手动一帧帧导出也太麻烦了,所以我打算学习一下maxscript怎么用. 脚本如下,取名为export.ms: outputDir="C:/Us…
用到了 GetFileVersion 相关文档在此:http://docs.autodesk.com/3DSMAX/16/ENU/MAXScript-Help/index.html?url=files/GUID-BA196B48-8ECA-4E0C-AE2E-F7EFAAF39844.htm,topicNumber=d30e712756 fn max_Version = ( max_V = GetFileVersion (getDir #maxRoot + "\\3dsmax.exe"…
相关内容记录在官方文档 BitmapTexture : TextureMap 中 fn allUsedMaps = ( sceneMaps = usedMaps() for m in meditmaterials do join sceneMaps (usedMaps m) sceneMaps ) allUsedMaps() 扩展一下复制使用贴图名到指定目录 fn copy_usedmaps maxpath = ( allusedmaps = makeUniqueArray (usedmaps(…
一,#号: 1,数组 #(123, "hi") 2,系统目录 fileName = getDir #scripts + "\\xxx.ms" 二,$号 节点路径$box03/box01…
选中一行或几行代码,然后按数字小键盘上的Enter键,即可单独运行之.此法方便调试.…
第一次是print "hi"的输出,第二次是print "hi" 的返回值被输出. 参考:https://davewortley.wordpress.com/2012/06/25/lesson-3-challenge-and-the-maxscript-listener/…
一个简单的小工具,方便在MAX里面快速的修改帧速率,像maya一样.具体看视频演示.…
自己的写的一个简单的脚本方便实现大面积的烟,火,爆炸,云的效果.能实现静态动态的切换,还有快速的偏移FumeFX的缓存,支持随机缓存 具体看这个插件的ShowReel,结算的三套基础的火焰然后用此脚本快速实现大面积火海.…
未完待续 ps_app= createOLEObject "Photoshop.Application" ps_app.Load "d:\\test\\aaa.tga" ps_app.ActiveDocument.Selection.SelectAll() ps_app.ActiveDocument.Selection.Copy() ps_app.ActiveDocument.Paste() ps_app.Quit() ReleaseOLEObject ps_app…
Fn GetSpecialFolder argEnumName = (DotNetClass "System.Environment").GetFolderPath (Execute ("(DotnetClass \"Environment+SpecialFolder\")." + argEnumName)) Fn GetSpecialFolderArgs = GetPropNames (DotnetClass "Environment…
也是帮网友写的.不过最后没用上.哈哈. targetPF = $ startTime = AnimationRange.Start.Frame endTime = AnimationRange.End.Frame particlesCount = targetPF.numParticlesGenerated() particleMeshs = #() particleMeshs[particlesCount] = undefined for timeIndex = startTime to en…
看到有网友需要写的,其实镜像就是缩放改为负数 Fn MirrorObject argObjects argAxisName = ( local axisNames = #(#x,#y,#z) do ( throw "the second parameter error !!! -- valid values:#x,#y,#z" ) local mirrorMatrix = matrix3 local tempArray = #() maxOps.CloneNodes argObject…
Fn SmtpSendMail argSmtpAddress argSenderAddress argSenderPassword argTargetAddress argTitle argMessage = ( tempSmtpClient = DotNetObject "System.Net.Mail.SmtpClient" argSmtpAddress tempSmtpClient.UseDefaultCredentials = false tempSmtpClient.Cred…
代码可直接运行 fn renderr = ( a=box() --新建一个立方体 ambientcolor = (color ) --设置环境光(搞不太懂,白的不出错就行) to do ( dis = i* i as string ca=TargetCamera pos:[,,dis] --设置摄像机位置 tobj=targetobject pos:[,,] --设置摄像机目标点的位置(ca 和 tobj的连线其实就是照相的方向,决定着之后以何种角度给房子 拍照渲染) ca.target=tob…