So I have been battling with the different export formats and different ways to present the plates on the screen once the export is completed.
I have had some good success with the Threejs javascript library and have been able to export into a json format which gives a nice visual representation of the plate in the UI. Here are some screenshots to give you an idea. This is a perspective view, so you can see that the plate is 3D. You can rotate the plate and move it around as well as zoom all in the browser. I think this is a nice visualization for the generated plate and it seems to work pretty well.
On the other hand, the export formats have been a total PITA. I have been able successfully export into a bunch of formats which work well in cad, however, they do not export with all of the components which make up the drawing, so they are not editable once they are imported into the cad software. If my tool works perfectly and the result is exactly what the end user wants, then fine, we dont have a problem. I suspect though that some people will use my tool as a starting point and they may want to make small modifications to the drawing after. If this is the case none of these formats will work. With all of these 'drawing as one object' formats, I have had pretty good success with the BREP or BRP format. It has been rock solid for me and seems to be a pretty standard format, so I will probably offer that format regardless. It exports quickly, it shows all the segments and anchor points even if they are not split out into their own tree, so it seems to be a pretty nice format to work with.
Here is a BRP format cad file which is pretty solid.
And here is an example measurement in on this BRP model. All the anchor points and such work, so it is very easy to do measurements and that sort of thing...
Luckily since FreeCAD and it supporting libraries are open source I have been able to have a poke through their code and have been able to 'fix' the issues with the SVG export and the DXF export for the most part. Neither of them are working as well as I would like unfortunately. The SVG will only import as a drawing instead of a geometry, so it is pretty useless in my opinion.
The DXF format imports correctly as a cad file, but for some reason it messes up "some" of the fillets. WTF? Why would it mess up some and not others? If I just export the drawing from the FreeCAD UI and reimport it does the same thing, so something is messed up with the import/export functionality for this library. So close...
Even still, it only imports as a final drawing, not with the tree of the different components that make up the drawing, so that is annoying...
So long story short. I have not forgotten about this project, actually, I have spent WAY too much time on it recently. The exporting stuff is pretty frustrating if I am honest. I will probably just say 'enough with it' for now and just offer the BRP drawings to start with and we will go from there. I need to change the air a bit or I will get too frustrated with the project and that will not help me move things forward...
On the bright side, I have been working a lot on the web UI and should have something together soon. I have taken this opportunity to dig into Tornado a non-blocking IO python web framework. If this tool becomes popular I need to have something in place which will allow me to scale the processing across multiple cores as well as not block requests when the plates are being processed. Since all the code is in python I wanted to keep it in python (for now), so I figured I would give Tornado a shot. I like its approach and I have worked with these types of frameworks enough that I should be able to pick it up in a day or two.
Anyway, thats my status update for today. Don't tell my wife I am working over the holiday or she will have my head.