Hi all, I mentioned something about this in the "ideas for an open source cam" thread, but I've started my fourth attempt at an open source CAM program. So far, I've got about 80 hours of work put into it. See the attached screen shots for an idea of the current state. Yes, I fixed the speed issue mentioned in the other post and got some form of G-code output working by the weekend .
I'm going to try to keep working on this until either it or another open source program becomes a usable 3D CAM tool.
MeshMill is the working name for it at the moment since that's what it does, although I may change it to something more creative avoid confusion with MeshCam.
Anyway, the planned features of version 1 will be:
-Load/save STL files
-Load/save G-code files
-Load/save cycle configuration
-Hierarchical cycle tree with "supercycles" for patterning, mirroring, etc... groups of cycles
-Milling simulation/3D backplot
-Large set of highly configurable machining cycles
-5 axis support through patterning of 3 axis cycles
It is written in Java, so it should work on Linux/Mac/Win/etc...
I am currently working on implementing tool size/shape compensation. I am not sure what algorithm would be best to use for this.
Another thing I'm not sure about is how to implement simulation/backplotting. I plan to have the stock material represented by a mesh and "virtually mill" the mesh away in an accurate way. To maintain a relatively high performance level, I know that I will probably have to dynamically subdivide and optimize the mesh.
Any thoughts on either of these problems?
Also, is there anyone here who would be interested in working on this? As I said, it is all Java.
Always good to see someone who is willing to do something for everyone else. i second waynes comment. Looking great. We definately need a good free cam program to use as it is always the hardest to find to suit the needs. Keep up the good work and hopefully look forward to a proto version of MeshMill.
Well, I've applied for a Sourceforge project. The program will now be called "ThreeCAM". Assuming Sourceforge approves the project, I will make the source available there.
Development wise, I a lot of the day thinking about a way to handle the size/shape of the tool and haven't come up a good solution yet. In the meantime I added a really crappy way (inaccurate) of doing it. I made a variety of small improvements including support for tool tables.
Again, I will probably need some help with this. I am neither a professional programmer or mathematician and without help it would likely take years for me to develop this into a high end CAM package.
I might be interested in helping out. I say might as I am not sure how much time I will be able to spend on it (due to family, work etc). That said I program in Java for a living and am a solftware architech for a software company in the telecommunications area.
The Java 'gotcha' is that I do 99.8% of my Java codeing in the 'backend' side of things, EJBs, integrations, webservices etc and therefore little experience with the graphical side of things.
The CAM 'gotcha' is that I have no experience with CNC at the moment. I know no G code etc. I have a mill I am thinking of converting and a lathe as well so I am researching. I have come to the conclusion though that a free CAM program would make things easier as I model eveything in Alibre before manually machining so if I CNC a machine I would like to 'automate' the process as much as possible.
Have any 'design' written out or a plan? If you get others to help there will need to be some design and architecture by the brains of the project or it might get out of hand quickly. Then again that might just be my software architecture brain talking
PM me if you want to discuss more how I might be able to help or let us known once the project is publicly available.
OK. I've got a basic web page up at http://www.threecam.com/. The SourceForge project page is at http://sourceforge.net/projects/threecam/.
The current code is available through subversion at threecam.svn.sourceforge.net/svnroot/threecam/ThreeCAM. I would recommend importing it in Eclipse using subclipse (http://subclipse.tigris.org/). It requires the Java3D library.
Normally, I would start a project like this by creating a detailed design specification, flowchart, etc..., but when I first started this I was mostly interested in seeing if it would work or not, so I just started coding with only a very general design in mind. I now need to retrofit a formal design to it and I haven't really decided on some of the specifics yet. I am very much open to suggestions.
The code is messy in some places, since I was trying out a variety of methods to do various things. I am working on cleaning it up.
Hi, I wish I had the skills to help. Just curious, have you considered working with some existing open source CAM projects ? I have no idea which ones are "good" vs "ok", etc, but here is a link to one I have been watching.
I know he is looking for help on his project. It would be really neat if you could help him get it into 4 axis capability.
Last edited by harryn; 08-24-2007 at 04:11 PM.
I took your source and moved it into Enterprise Architect and ArgoUML. I am attaching a ZIP of both files.
If you go get ArgoUML version 0.24 and install and then open the project ThreeCam.zargo you can make you documentation. ArgoUML is Java based.
You can export to XMI and then import to Eclipse if you want. Or use Argo to do the UML.
Enterprise Architect offers a 30 day trial.
Hmm. I haven't ever done anything with UML before, only simple flowcharting, but it looks handy. I'll have to learn some more about it. I downloaded ArgoUML and am currently reading about UML.
I'm currently documenting the classes and methods in eclipse.
I was actually thinking about GCAM earlier. I downloaded a copy and tried it out. I thought it would make a good compliment to a mesh based cam. I could see it becoming sort of a graphical parametric program generator. As for adding features to it, I'll have to look at the code sometime and see what I can do.
Java Netbeans IDE interface is free.
It would be nice if everyone involved use the same development software for the project. If everyone starts going in their own preferred IDE, then it will be like herding cats.
Am I missing anything here? Does it matter what complier is used?
I have currently have both JavaBeans and Eclipse, but I switched to using Eclipse a couple years ago.
It probably doesn't matter much which IDE is used. For Eclipse, there are a couple metadata files with Eclipse project information (which are only used when the project is initially imported), but Eclipse will work with any Java code. If the code is edited with another IDE, it will still work with Eclipse. The only problem I could see is variation in the comment syntax. For example, comments starting with "TODO" are treated specially in Eclipse, although this can be configured on a per-project basis to work with any tags. In the end, all you are doing is editing text files.
I could see the NetBeans GUI editor being problematic, but that is only a problem if it is actually used. I don't remember how it worked exactly, but I remember that it generated code blocks which could only be changed with the GUI editor.
The compiler is completely separate from the IDE. I have been using the Sun JDK 1.5. Other compilers can be used for development, but it might be best to create releases with the official Sun JDK.
Eclipse is open source and can be downloaded at:
Which version of Ellipse are you using?