Showing posts with label Incremental Save. Show all posts
Showing posts with label Incremental Save. Show all posts

Thursday, September 16, 2010

MEL Script: Incremental Save

This mel script will automatically increment your saved scene for you. Simple and sweet, just source the script to either increment your already numbered scene or to add a serial number at the end of a filename without one. Also adds your new file to your Recent Files list in the File menu. I recommend saving it and then calling it with a shelf button for easy access.

Download Here: MEL Script - jgIncrementalSave.mel


// **********************************************************
// Automatically Increments A Saved Maya File
global proc jgIncrementalSave () {

// Scene File Name
string $sceneFile = `file -q -sn` ;

// Get File Extension
string $extension = `fileExtension $sceneFile` ;

// Remove Extension
string $fileNameNoExt ;
if($extension == "mb" || $extension == ".ma") {

// Tokenize Filename
string $buffer[] ;
tokenize $sceneFile "." $buffer ;

// Recompile Scenename Without Extension
for($i = 0; $i < (size($buffer)-1); $i++) { $fileNameNoExt = $fileNameNoExt + $buffer[$i] ; } } else { // Error Check error "Open file isn't .mb or .ma, please save before incrementing." ; } // Extract Name And Current Version Using Regex string $nameWithNoVersion = `match ".*[^0-9]" $fileNameNoExt` ; string $currentVersion = `match "[0-9]+$" $fileNameNoExt` ; // Check For Integer, Add One If None if($currentVersion == "") $currentVersion = "00" ; // Increment Version int $int = $currentVersion ; $int++ ; // Pad Digits If Needed int $beforeCount = size($currentVersion) ; string $incVersion = $int ; int $afterCount = size($incVersion) ; if($beforeCount > $afterCount) {
while($beforeCount > $afterCount) {
$incVersion = ("0"+$incVersion) ;
$afterCount = size($incVersion) ;
}
}

// Make New Filename
string $newFileName = ($nameWithNoVersion+$incVersion+"."+$extension) ;

// Save It
file -rename $newFileName ;
file -f -save ;

// Add To Recent File List
if($extension == "mb") catch(`addRecentFile $newFileName "mayaBinary"`) ;
if($extension == "ma") catch(`addRecentFile $newFileName "mayaAscii"`) ;

// Finish
print ("Saved as "+$newFileName+"\n") ;

} jgIncrementalSave ;


As always if you find any bugs, have any questions about the code, or would like to make suggestions please leave a comment below.

Scripting Topics

MEL (41) Maya (39) Scripting (32) Scripts (21) programming (14) Free Mel Scripts (8) MaxScript (7) Coding (6) Rigging (5) tutorial (5) 3ds Max (4) Python (4) Tricks (4) faceware (4) image metrics (4) Learn (3) Namespace (3) Namespacing (3) animation (3) facial (3) webinar (3) Code (2) GDC (2) Game Developers Conference (2) Multiple Namespaces (2) Print Selected Objects (2) Recursive (2) Removing Namespace (2) Return (2) Set Driven Keys (2) TOkenize (2) Tips (2) Toggle Background Color with MEL (2) animation tools (2) animators resource (2) deformers (2) learning (2) maya tools (2) mesh (2) modeling (2) nodes (2) procedure (2) script swell (2) transforms (2) Animschool (1) Attribute (1) Background Color (1) Beer (1) Blur (1) Character Setup (1) Check if an object exists (1) Class (1) Command Line (1) Constraints (1) Create SDK (1) Create a directory with mel (1) Data (1) Export (1) FilterString (1) Fix (1) Floating Slider Time (1) Functions (1) Get Maya Version MEL (1) Get Parent (1) Google (1) Holiday (1) How To Write To A Text File (1) Import (1) Incremental Save (1) Index (1) Joint Chain (1) Make Set Driven Keys (1) Maya Version (1) Modules (1) Objects (1) Orient Constraint (1) PYMEL (1) Parent (1) Parent Constraint (1) Point Constraint (1) Position (1) Print (1) Print Current Selection (1) Print Random Quotes (1) Print Selection (1) Print Vertices (1) Progress Bar (1) Progress Window (1) PyQT (1) Removing Spaces From Names (1) Scene File Name (1) Select Connections (1) Select Outgoing Nodes (1) Split Bones (1) Split Joints (1) St. Patrick's Day (1) String Array (1) System (1) Transfer UVs (1) Viewport (1) White Space (1) Windows Username (1) Zero Out Attributes (1) animButtonState (1) arrays (1) articles (1) auto key (1) better (1) blendshapes (1) break (1) confirm dialog (1) continue (1) convention (1) e3 (1) efficiency (1) error (1) eval (1) executable (1) fclose (1) fopen (1) fprint (1) games (1) improving (1) infinite loop (1) joints (1) listHistory (1) listRelatives (1) logic (1) loops (1) milestone (1) nodeType (1) objExists (1) recursion (1) rotates (1) rotations (1) schools (1) sculpting (1) setAttr (1) shout outs (1) source (1) source a script with a variable (1) speed (1) tech-artists.org (1) translates (1) video (1) warning (1) world matrix (1) worldMatrix (1)
 
Script Swell - Blogged