It's fast!
Published February 11, 2011
I haven't worked on the "project" too intensively (because I worked
with it intensively) but I managed to optimize the thing, so it's lightning fast now. I optimized it by using two dimension array to store the file like I mentioned previously. I can do that, because the specifications say that the max linelength of the G-code is 256 (or less in case of older implementations, I found that 70 is the minimum). Maybe that means a lot of wasted memory, but the 10-20 times faster parsing is totally worth it.
I fixed lots of bugs (and left even more), reworked the state machine (the former was a joke: every edit feature had it's own state variable. Total crap), some refractoring. It's easier to polish a program, if you are actually working with it and it's not just some toy.
I added new and pretty useful features, such as:
- Snap to point
- Cycle between overlapping points for selection
- Rotate selected with center point - reference point - new direction
- Mirror selected Vertical/horizontal constrains work with these too
- Set start/depart of selected sequence
- Some special features for my need:
- Display foam (the stuff the machine cuts)
- Set foam position and size
- Toggle tool-swept path: it would be easier to explain if I spoke English. So the hot wire melts the foam, and it melts in a much bigger diameter than the diameter of the wire. And that's a very important info for stable cutting, for designing trajectories for small surface features, etc
Windowing: I added dialogs for text/number imput. Such as setting feedrates, entering comment text etc. Message boxes.Better file stuff: save/save as/open/new works pretty much like in other programsData type-in: If the user hits enter during certain commands, values can be typed into a dialog box instead of clicking with the mouse in the editor. Offset values for moving, angle for rotation, insertion coordinates, etc.Feed system reworked. There are no default feeds, all feed values are loaded from the CNC file and the user can only assign those loaded values. However, the user can define new feed values and redefine existing ones (obviously, the data is updated accordingly). I found this system to be quite intuitive (much more intuitive than making all the feeds accessible and with some hard coded default values that totally fucked up the whole thing when loading the values form the CNC files on top of this "feed table". And better, if there weren't any pre-defined feeds and feedrates were just thrown around without control). The only flaw is that gradual feed changes cannot be used (or have to be edited manually)Calculating total machine timeProgress bar...One very important thing is still missing: Undo/Redo. That will be the next big and unavoidable step.
http://www.sendspace.com/file/lhsy8vNote, that the help text
inside the program is OFF, the "manual" is the right thing.
It is Congrats.