MEL Scripting: How To Export/Write To A Text File
0 Comments
Page 1 of 1
The original tutorial can be found here: https://www.scriptswell.net/2010/12/mel-scripting-tutorial-how-to-write-to.html
In this mel scripting tutorial we'll look at how to write data out to a file so you can make your own data exporting tools. By the end of it you'll have a firm understanding of and know how to take data from your Maya scene and write it out to a file. This is a follow up to the previous tutorial: How To Read A Text File. This article assumes you've read the previous tutorial and is a continuation of the concepts discussed in it. If you've not read the tutorial on how to read a text file, please browse Script Swell's Technical Artist Tutorials or click here.
Skill Level: Beginner to Intermediate
There are two things you'll need in order to proceed: some data to write out, and a text a file to write it to. To start off let's create a string array in Maya. In the script editor, copy and paste the following and run it.
Now let's get into some code and see how this works. The idea here is that we're going to "open" our file as an object in Maya, put our data inside it, then "close" it. If you recall in the previous tutorial we use the fopen command to open the file and prepare it for use.
-----------------------------------------------------------
Tip: If you forget to use fclose and leave the file object "open" within Maya it will become locked and you won't be able to make changes to it outside of the program. If this happens you will need to close Maya to "unlock" your file.
-----------------------------------------------------------
After running this script, take a look at your text file and you'll see the file now reads the following:
This is line one of my data from Maya.
This is line two.
And then line three!
Both of these flags are useful depending on the context of what you're doing. Be sure to check out these commands in the MEL documentation as well for a slightly more in-depth look at how they work.
It really is simple as that to write out data! As long as you remember to fclose your file and use the correct flags when using fopen you shouldn't have any trouble using this technique.
For more tutorials check out the Technical Artist Tutorials page at Script Swell. Leave a comment below if you have any thoughts or questions and thanks for reading!
In this mel scripting tutorial we'll look at how to write data out to a file so you can make your own data exporting tools. By the end of it you'll have a firm understanding of and know how to take data from your Maya scene and write it out to a file. This is a follow up to the previous tutorial: How To Read A Text File. This article assumes you've read the previous tutorial and is a continuation of the concepts discussed in it. If you've not read the tutorial on how to read a text file, please browse Script Swell's Technical Artist Tutorials or click here.
Skill Level: Beginner to Intermediate
There are two things you'll need in order to proceed: some data to write out, and a text a file to write it to. To start off let's create a string array in Maya. In the script editor, copy and paste the following and run it.
// Create A String Array With Test Data
string $myStrArray[] = {"This is line one of my data from Maya.", "This is line two.", "And then line three!"} ;
string $myStrArray[] = {"This is line one of my data from Maya.", "This is line two.", "And then line three!"} ;
// Create A String Array With Test DataNext, create a file in an easy location, e.g. "C:\mel\testFile_v01.txt". In this file, on the first line type the following: "This is the first line of my text file, version 01!". Save and close your file.
string $myStrArray[] = {"This is line one of my data from Maya.", "This is line two.", "And then line three!"} ;
Now let's get into some code and see how this works. The idea here is that we're going to "open" our file as an object in Maya, put our data inside it, then "close" it. If you recall in the previous tutorial we use the fopen command to open the file and prepare it for use.
// Create A String Array With Test Data
string $myStrArray[] = {"This is line one of my data from Maya.", "This is line two.", "And then line three!"} ;
// Define Your File Path
string $filePath = "C:/mel/testFile_v01.txt" ;
// Open Your File
$fileId = `fopen $filePath "a"` ;
string $myStrArray[] = {"This is line one of my data from Maya.", "This is line two.", "And then line three!"} ;
// Define Your File Path
string $filePath = "C:/mel/testFile_v01.txt" ;
// Open Your File
$fileId = `fopen $filePath "a"` ;
// Create A String Array With Test DataThe first difference you may have noticed from the previous tutorial is that instead of "r" (for 'read') we've switched to "a" which stands for "append". What this means is that we're telling MEL that when we're working with this particular file, we'll be writing to it but we'll be appending data onto the end of whatever is there. This way using the "a" flag you can keep your current data intact and simply add more to it. Let's continue on with more code.
string $myStrArray[] = {"This is line one of my data from Maya.", "This is line two.", "And then line three!"} ;
// Define Your File Path
string $filePath = "C:/mel/testFile_v01.txt" ;
// Open Your File
$fileId = `fopen $filePath "a"` ;
// Create A String Array With Test Data
string $myStrArray[] = {"This is line one of my data from Maya.", "This is line two.", "And then line three!"} ;
// Define Your File Path
string $filePath = "C:/mel/testFile_v01.txt" ;
// Open Your File
$fileId = `fopen $filePath "a"` ;
// Print Array To File
for($line in $myStrArray)
fprint $fileId ($line+"\n") ;
// Close File
fclose $fileId ;
string $myStrArray[] = {"This is line one of my data from Maya.", "This is line two.", "And then line three!"} ;
// Define Your File Path
string $filePath = "C:/mel/testFile_v01.txt" ;
// Open Your File
$fileId = `fopen $filePath "a"` ;
// Print Array To File
for($line in $myStrArray)
fprint $fileId ($line+"\n") ;
// Close File
fclose $fileId ;
// Create A String Array With Test DataThe newest line in our code starts with a for in loop and is looping through our string array one line at a time. This is because in this case we don't just want to dump all the data to the file, we want to have control over how it's added and make sure it's exporting to an easily readable format. We loop through our array one line at a time and use the fprint command. What fprint does is essentially the same thing that the normal print command does except it prints to your text file instead of Maya's script editor. Just like print though, it will not add a new line at the end of the argument and this must be done manually, hence the "\n" that I've appended to the $line variable. If you leave this out, all of your data will print to a single line! After we're finished printing out the data we're using fclose to "close" our file object.
string $myStrArray[] = {"This is line one of my data from Maya.", "This is line two.", "And then line three!"} ;
// Define Your File Path
string $filePath = "C:/mel/testFile_v01.txt" ;
// Open Your File
$fileId = `fopen $filePath "a"` ;
// Print Array To File
for($line in $myStrArray)
fprint $fileId ($line+"\n") ;
// Close File
fclose $fileId ;
-----------------------------------------------------------
Tip: If you forget to use fclose and leave the file object "open" within Maya it will become locked and you won't be able to make changes to it outside of the program. If this happens you will need to close Maya to "unlock" your file.
-----------------------------------------------------------
After running this script, take a look at your text file and you'll see the file now reads the following:
This is the first line of my text file, version 01!
This is line one of my data from Maya.
This is line two.
And then line three!
This is line one of my data from Maya.
This is line two.
And then line three!
This is the first line of my text file, version 01!Nicely done! You are now one step closer to building your data export tool. Next we'll double back slightly and look at another flag we can use in the fopen command. Look at the code below.
This is line one of my data from Maya.
This is line two.
And then line three!
// Create A String Array With Test Data
string $myStrArray[] = {"This is line one of my data from Maya.", "This is line two.", "And then line three!"} ;
// Define Your File Path
string $filePath = "C:/mel/testFile_v01.txt" ;
// Open Your File
$fileId = `fopen $filePath "w"` ;
// Print Array To File
for($line in $myStrArray)
fprint $fileId ($line+"\n") ;
// Close File
fclose $fileId ;
string $myStrArray[] = {"This is line one of my data from Maya.", "This is line two.", "And then line three!"} ;
// Define Your File Path
string $filePath = "C:/mel/testFile_v01.txt" ;
// Open Your File
$fileId = `fopen $filePath "w"` ;
// Print Array To File
for($line in $myStrArray)
fprint $fileId ($line+"\n") ;
// Close File
fclose $fileId ;
// Create A String Array With Test DataThe only change here is we've swapped the "a" flag with it's brother: "w" which stands for "write". What write will do is destroy the prior contents of the file and replace them with whatever we're printing to it. So your result will be:
string $myStrArray[] = {"This is line one of my data from Maya.", "This is line two.", "And then line three!"} ;
// Define Your File Path
string $filePath = "C:/mel/testFile_v01.txt" ;
// Open Your File
$fileId = `fopen $filePath "w"` ;
// Print Array To File
for($line in $myStrArray)
fprint $fileId ($line+"\n") ;
// Close File
fclose $fileId ;
This is line one of my data from Maya.
This is line two.
And then line three!
This is line one of my data from Maya.This time only the string array has been printed to the file and the original file's contents were destroyed.
This is line two.
And then line three!
Both of these flags are useful depending on the context of what you're doing. Be sure to check out these commands in the MEL documentation as well for a slightly more in-depth look at how they work.
It really is simple as that to write out data! As long as you remember to fclose your file and use the correct flags when using fopen you shouldn't have any trouble using this technique.
For more tutorials check out the Technical Artist Tutorials page at Script Swell. Leave a comment below if you have any thoughts or questions and thanks for reading!
Page 1 of 1
Author: Jay Grenier
Submitted: 2010-12-08 20:33:04 UTC
Tags: data file, fprint, fopen, mel, Export, and file
Software: Maya
Views: 20,124
Related Items
-
Gradient Data Manager script for Maya for Maya 1.1.1 (maya script)
$20.00 (USD) -
Animation Data Recovery 1.1.0 for Maya (maya script)
$100.00 (USD) -
File Batch Exporter 1.6.2 for Maya (maya script)
$20.00 (USD) -
UHF Military data radio 3D Model
$49.00 (USD) -
Folder Management for Animation Production pipeline 1.1.0 for Maya (maya script)
$25.00 (USD) -
Easy Environment for Maya 1.6.1 (maya script)
$90.00 (USD) -
Simple Tools Asset Manager 0.9.10 for Maya (maya script)
$20.00 (USD) -
3D Thumbnail Generator (batch script) for Maya 0.3.1 (maya script)
$20.00 (USD) -
Curve Library 1.7.0 for Maya (maya script)
$20.00 (USD)