{"id":201,"date":"2009-06-09T17:33:24","date_gmt":"2009-06-09T15:33:24","guid":{"rendered":"http:\/\/www.svenneve.com\/?p=201"},"modified":"2009-06-15T13:20:43","modified_gmt":"2009-06-15T11:20:43","slug":"lightwave-incrementalsavemodeler","status":"publish","type":"post","link":"http:\/\/www.svenneve.com\/?p=201","title":{"rendered":"Lightwave : hos_incrementalSaveModeler.ls"},"content":{"rendered":"<p><img loading=\"lazy\" class=\"alignleft size-full wp-image-202\" title=\"fancy_worm_blackback_120\" src=\"http:\/\/www.svenneve.com\/wp-content\/2009\/06\/fancy_worm_blackback_120.jpg\" alt=\"fancy_worm_blackback_120\" width=\"84\" height=\"84\" \/>Here&#8217;s a <a href=\"http:\/\/www.newtek.com\/lightwave\/\" target=\"_blank\">Lightwave<\/a> Modeler version of the incremental save system we use (finally got some time to clean up the code for release), again, it mimics the way Autodesk Maya does incremental saving.<\/p>\n<p>Just download or copy paste into a text editor and save as an .ls file in your Lightwave Plug-in \/ Lscript folder, bind to a key of your liking.<\/p>\n<p>Again, if you find anything, let me know.<\/p>\n<h3><a href=\"http:\/\/www.svenneve.com\/wp-content\/2009\/06\/hos_incrementalsavemodeler.ls\">download : hos_incrementalSaveModeler<\/a><\/h3>\n<p><span style=\"color: #303030;\">.<\/span><\/p>\n<pre lang=\"C\">@script modeler\r\n@version 2.2\r\n@warnings\r\n@name \"hos_incrementalSave\"\r\n\r\nmySeperator = getsep();\r\n\r\nmain\r\n{\r\n\u00a0\u00a0\u00a0 incrementalSave(Mesh(0));\r\n}\r\n\r\nincrementalSave:myObject\r\n{\r\n\u00a0\u00a0\u00a0 myFile = myObject.filename;\r\n\r\n\u00a0\u00a0\u00a0 if(myFile) \/\/ start creating an incrementalSave\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 myFileinfo = split(myFile);\r\n\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 checkDir(myFileinfo[1] + myFileinfo[2], myFileinfo[3]+myFileinfo[4]);\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 incVersion = checkIncrements(myFileinfo[1] + myFileinfo[2] + \"incrementalSave\" + mySeperator + myFileinfo[3] + myFileinfo[4], myFileinfo[3], myFileinfo[4]);\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 incFile = myFileinfo[1] + myFileinfo[2] + \"incrementalSave\" + mySeperator + myFileinfo[3] + myFileinfo[4] + mySeperator + myFileinfo[3] + \".\" + strright(\"000\" + incVersion.asStr(), 4) + myFileinfo[4];\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 filerename(myFile, incFile); \/\/ Using filerename() as move function;\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 save(myFile);\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 else \/\/ The object has never been save before, don't screw this up or people might go Jay and Silent Bob on my ass.\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 myDir=getdir(OBJECTSDIR) + mySeperator;\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 myFile = getfile(\"Save Object As\", \"*.lwo\", myDir, 0);\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 if(myFile)\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 myFileinfo = split(myFile);\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 myFile = myFileinfo[1] + myFileinfo[2] + myFileinfo[3] + \".lwo\"; \/\/ Basically makes sure there's ALWAYS an extension called .lwo\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 save(myFile);\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 }\r\n}\r\n\r\ncheckDir:myDir, myFile\r\n{\r\n\u00a0\u00a0\u00a0 dirArray = matchdirs(myDir,\"incrementalSave\");\r\n\u00a0\u00a0\u00a0 if(!dirArray)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 mkdir(myDir+\"incrementalSave\");\r\n\u00a0\u00a0\u00a0 }\r\n\r\n\u00a0\u00a0\u00a0 dirArray = matchdirs(myDir+\"incrementalSave\"+mySeperator, myFile);\r\n\u00a0\u00a0\u00a0 if(!dirArray)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 mkdir(myDir+\"incrementalSave\"+mySeperator+myFile);\r\n\u00a0\u00a0\u00a0 }\r\n}\r\n\r\ncheckIncrements:myDir, myFile, myExt\r\n{\r\n\u00a0\u00a0\u00a0 incCount = 0;\r\n\u00a0\u00a0\u00a0 incArray = matchfiles(myDir, myFile + \"*\" + myExt);\r\n\u00a0\u00a0\u00a0 if(incArray != nil)\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 foreach(incFile, incArray)\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \/\/ wanted to do this part with a more reliable regular expression, but LScript regex is bollocks.\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \/\/ So now we just do some string size math and pray that nothing weird is done with the filenames.\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 incVersioning = strleft(incFile, size(incFile) - size(myExt));\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 incVersioning = strright(incVersioning, 4);\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 incCount = max(incCount, incVersioning.asNum());\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 else\r\n\u00a0\u00a0\u00a0 {\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 return 1;\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 return ++incCount;\r\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Here&#8217;s a Lightwave Modeler version of the incremental save system we use (finally got some time to clean up the code for release), again, it mimics the way Autodesk Maya does incremental saving. Just download or copy paste into a text editor and save as an .ls file in your Lightwave Plug-in \/ Lscript folder,&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[20,18],"tags":[29,3,26,27,28,16],"_links":{"self":[{"href":"http:\/\/www.svenneve.com\/index.php?rest_route=\/wp\/v2\/posts\/201"}],"collection":[{"href":"http:\/\/www.svenneve.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.svenneve.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.svenneve.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.svenneve.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=201"}],"version-history":[{"count":8,"href":"http:\/\/www.svenneve.com\/index.php?rest_route=\/wp\/v2\/posts\/201\/revisions"}],"predecessor-version":[{"id":233,"href":"http:\/\/www.svenneve.com\/index.php?rest_route=\/wp\/v2\/posts\/201\/revisions\/233"}],"wp:attachment":[{"href":"http:\/\/www.svenneve.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=201"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.svenneve.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=201"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.svenneve.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=201"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}