I've been working on this as well, I got my Arduino to determine the distances by following absolute numbers of steps. Find out how many steps it takes to move an inch (or centimeter) and multiply that by the total length of that axis. My Y axis total travel is 40" long, and it takes 3500 steps to go one inch, so 3500 * 40 = 168000 steps. Say I want the axis to run 5.5 inches, find the fraction by dividing one inch by 2 to get the number of steps for half an inch (1750 steps) then go 3500 * 5 + 1750.
I've never been good at math, but I managed to get this done to where it works, if there's a better way to do that calculation I'm all ears. I wrote a small processing sketch that takes arrow key input to move a tenth of an inch at a time in either direction. It shows the position, as well as a diagram showing where the tool head should be, and outputs the data as a string looking like "X000000Y000000". All I have to do is get that to the Arduino so I can tell it that each time it takes in that string, to move each motor that number of steps. It's easy enough to use "if" statements to make sure it will run the correct direction:
if (axisXvalue > currentPosition && axisValue < axisTotalTravel) {
 axisXmotor.step(axisXvalue, FORWARD, SINGLE);
}
When I get home I'll post the processing code which I wrote to make it easier to hone the system and play with it manually.
The part that's been keeping me up at night is trying to figure out how to make the Arduino take in the data string through serial and parse it. I downloaded the String library which should make parsing it easier, but where I'm hung up is on how to make the Arduino create a string based on the input. When the Arduino reads serial data, it reads it one character at a time. There doesn't seem to be a simple way to assemble all of the characters into a string to parse. I don't really need a full string, if I could just get the numbers into separate integer values for each axis I'd be fine. Anyone have any ideas as to how to do this?
I already tried the liquidCrystal examples, but they just output one character at a time. I need a way to make a variable, and append each digit on to the end of the variable. The String library has a function called "append()", but it doesn't provide any useful information on how to use it. I also tried loading all the characters into an array, but I have no idea how to turn that array into a single multi-digit variable.
When I get home, I'm going to try looking directly at the String library file and see if I can figure out how the append() function works, but if anyone has a better idea, please let me know. I've spent too much time trying to create a data string from serial, it would be nice to get back to drawing lines on my machine. Also when I get home, I'll post the code I already have as well as the processing code for generating the values.