Open-source foam cutting software for XP.
I've started writing some open-source foam cutting software.
The frontend is fairly complete. The features are fairly minimal as yet. Consider it early alpha.
The backend is currently just a script file that can be run in GMFC as I'm yet to write the parallel port driver.
Anyone wanting to help with development (particularly on an interrupt driven parallel port driver!) is most welcome.
Ok, I'm feeling pretty impressed with myself at the moment. I managed to write the kernel mode driver and the user mode interface and get it debugged all in one day.
Trying to use C# to talk to a kernel mode driver turns out to be quite a pain the in butt, but google was my friend and it turned out ok.
The program is currently sitting on the bench telling me that the MM2001 style board I have is generating interrupts at 4050.2Hz. I'm a little suspicious of the number of significant figures there, but it's a very very good start.
The next step, being actually moving the steppers, is a pretty simple task from here.
The software is now complete enough to drive the steppers on my Xylotex board (unfortunately the actual pinout is currently hardcoded in in Machine.cs). After loading the airfoils in the wing page, I managed to successfully 'cut' a wing core (or at least, move the wire in a way that would have cut it).
There's still a long way to go. I need to write the form to handle setting up the actual pinout, I need to fix a problem with the scale (it's moving too far at the moment), I need to actually set the heat rather than just pretending etc etc!
On the whole, I'm very satisified. I think I'm definately past the crest of the hill now, the end is in sight!
(Ps: New release of software off the project page: Linked from http://fcut.sf.net)
More progress. I've written the heat control code, but it's not fully hooked up yet.
I've also written the dialog to change the pinouts for the parallel port.
A fair number of bugs were also fixed. This one will actually cut something that looks like a core under manual heat control.
(It's not actually a real core because the geometry isn't quite right yet).
Spoke too soon. The geometry is done. It's now fully capable of cutting an actual core! (Under manual heat control).
While I was on a roll, I wrote the point interpolation for the .dat files.
Which brings up a point: With two different .dat files, what points should be matched up? i.e. when one end of the wire is at point X in the left file, what would the corresponding point in the right file be?
At the moment, I'm measuring the total length of the polyline that the .dat file describes, and then matching up x% along that line with each .dat file (if that makes any sense).
Is that the best way? or should something else be used for alignment.
Just released the latest version. There's a number of improvements, the biggest of which is that the heat control is now fully syncronized with the wire motion.
This involved changing the kernel driver, so you'll need to uninstall the old driver for the new release to work (Can be done from the Test menu, under 'Uninstall driver').
There's a number of smaller graphical improvements as well, and even a start of some documentation at http://www.homecnc.org/index.php/FCut_Documentation
A screen shot from the (sparse) docs:
Not bad. Ill get back into my foam cutting cnc after I fix all the bugs in my new Home built CNC router
It turns out the MM2001 driver conflicts with the FCut driver for some unknown reason.
The MM2001 driver needs to be disabled (via the device manager) before FCut is started, else your computer will crash hard when FCut exits.
Still trying to work out exactly why this is the case.
Version 1.0.8 released.
1. Now does spline interpolation (rather than linear
interpolation). This makes the wire motion much smoother
and reduces sharp accelerations in the wire.
2. The kerf calculation around tight bends is more accurate.
We iterate to find a solution that matches the perdicted
3. The issue that caused the computer to crash if the
MM2001 driver was installed was found and a workaround
written. The program still don't work if the MM2001 driver
is active, but it won't crash the computer either. It will also
warn that it's unable to access the interrupt because the
MM2001 driver has it locked.
4. A number of minor bugs fixed.
Spent the morning doing foam cutting using FCut, so there's a fair bit of polish added.
1. Finally fix the bug preventing negative values in manual move mode.
2. Fixed bug where the foam depth offset wasn't being used.
3. Fixed bug where the foam was drawn in the wrong position in the top view window.
4. Fixed bug where the foam width offset wasn't always being recalculated when the foam position changed.
5. Fix major bug where heat wasn't being set when the wire moved.
6. Fix bug where move window wasn't being automatically closed when move finished.
7. Fix bug where heat wasn't being set on manual moves, unfortunately requires a driver update.
8. Feature: Turn off heat at end of cut, sync'ed with wire motion.
9. Bug: Projecting the shape to the wire supports now works correctly, and copes with different span shapes being cut in the same core.
10. Feature: The shape is now automatically centered in the foam shape.
11. Bug: Right/Left wing box didn't instantly update drawing on changed value.
12. Bug: Wing occasionally lost track of setting slope by dihedral angle or basic height. Now remembers which one was set last.
13. Bug: Kerf values were the wrong way around
14. Bug: Kerf were at max speed and min speed, instead of max speed and max speed/2.
15. Bug: The warning message about a missing interrupt generator was occasionally falsely triggered.
16. Bug: The kerf values where treated as a radius instead of as a diameter.
17. Feature: Warn if the kernel driver is out of date.
See http://fcut.sf.net as normal
Just released version 1.0.10
Available for download at https://sourceforge.net/project/show...roup_id=176672
as usual ( details at http://fcut.sf.net )
Most notable change is probably that it now remembers board and machine settings!
With the 'Reduce heat on sharp corners' settings, I can now automatically cut the supergee-II wingtip (a 6mm thick airfoil) without getting meltback on the leading edge. Yay!
Obligatory screen shot:
When 'reduce heat' is turned on, FCut drawns a visible indication of the rate of curvature. The length of the spiky purple lines indicates how tight the airfoil is curving at that point..
Full list of changes:
1. Started adding heat reduction on tight curves.
2. Feature: wire now moves at max speed when 'known' to be outside the foam.
3. Internal: Wire path calculation now separated from drawing code.
4. Internal: Now maintain the machine and foam wirepath seperately.
5. Internal: Consolidated the wirepath planning into a single location.
6. Feature: If in the foam settings, 'Reduce heat on sharp corners' is turned on, then the wire heat is reduced around sharp corners. This is a must for cutting relatively accurate leading edges on AG46 and AG47 style airfoils.
7. Feature: Only show the sharpness of curvature if 'Reduce heat' is turned on.
8. Bug: Cut dialog now shows the number of points and the time it would take as soon as it's shown.
9. Bug: Cut dialog now changes the 'Cut' button to be an 'Ok' button when the cut is finished.
10. Bug: Fixed tabbing order in manual move dialog.
11. Feature: Manual move dialog has a checkbox to turn on heat while moving.
1. Feature: Now remembers the location of the main window when restarted.
2. Feature: Now remembers the board pinout when restarted. Took crazy amount of time to write!
3. Testing: Now drawing 'sharpness of curvature' lines in the main box (mostly for my debugging purposes).
4. Feature: Now lets you disable the driver board. Automatically disables the driver board if it can't start the kernel driver.
5. Feature: Now remembers the machine description when restarted.
6. Bug: Now correctly bugs the axis inversion into the machine description.
7. Bug: Corrected the label on the Board tab (was saying 'Machine').
8. Internal: Moved the kernel driver handling out of MainForm into Board.
9. Internal: Wrote object serialization and deserialization handlers in Util.
10. Internal: Moved finding a line normal vector into Util.