JoshM wrote: ↑Sun Feb 17, 2019 8:56 pm
Hi Dan,
Looks like you're making good progress. I'm glad if anything I offered is helpful. I've put a fair amount of thought and effort into understanding the relationships that exist between cutting edges and job models, so figured if any of it translates and is helpful to you, I'd throw it out there.
Any input is helpful and to be honest i'm generally happy that someone is interested enough to discuss it at all, where as you have clearly invested lots of thought and effort in to the thinking.
JoshM wrote: ↑Sun Feb 17, 2019 8:56 pm
I see that you've worked out the issue where a feature of the job model is too small to fully achieve with the selected tool. That's a big one. It looks like you are approximating the cutting edge as a single point though, unless I'm mistaken, and that likely will require further refinement--which I believe you alluded to.
what I have done is still very much proof of concept. I have a plan that I am working through but I am a way off completion.
JoshM wrote: ↑Sun Feb 17, 2019 8:56 pm
I'm not sure the tool model that you target in the last image you posted. If it is similar to the insert that I mentioned, and the triangle of the insert is capable of side-cutting tangent to the edge of the "base of the pawn" in your model, I believe your path is good up to the intersection to the sphere at the "top of the pawn" in your model. The issue may occur where your path appears to be supporting both left-justified and right-justified--that is, it is tangential to the model on both sides of the sphere.
The only concept of a tool currently in my library is an allowable cutting angle. I generally use DCMT inserts on a RH tool with an angle of 60 degrees so the 'undercut' on the screenshot would be possible with that tool.
JoshM wrote: ↑Sun Feb 17, 2019 8:56 pm
But, as I mentioned earlier, I believe it is key to understand the reference point of your tool. So, where I mention an offset due to the nose-radius curvature on the tool I used as an example, your path is drawn for a sharp tool with no nose-radius. That's a valid tool that requires support also, so I don't mean to imply what you have is in any way wrong, but am trying to get a sense if you have already considered (or implemented) support for tools with a nose radius, or with cutting edges other than 60-degrees for that matter.
The tool is currently not represented in the code so there is no consideration for the radii or offset. If you don't mind I would like to use some of the code from your macro to form part of the tool class?
JoshM wrote: ↑Sun Feb 17, 2019 8:56 pm
I think you made a good choice to ignore completely grooves/slots that are not entirely turnable with the current tool. I am not sure, but believe, that you would generally shift to a different tool for special operations, and allowing your algo to try to "rough" into that might be more trouble than it's worth.
Other CAM software allows 'partial grooving' where the tool will cut wherever it can reach. I would like to support this feature but its not something I use myself. Like you say I prefer to do all the grooving with a proper grooving or parting tool.
JoshM wrote: ↑Sun Feb 17, 2019 8:56 pm
You mentioned working out boring, versus other turning ops, and that implies that you do--or want to--support more complex models that might contain both interior and exterior turning. Do you intend to support models that are intended for lathe operations on some portion, but milling on other portions? That is, if there is a flat section on an otherwise "turned" model, is your algo still good with it, or will it stumble on that?
Yes I intend to have a boring op because I need it. I do fee earning work on my machine and almost every part I make has some type of boring.
When working on mill/turn parts the library expects that the part has been simplified before being passed in to the library. This will require some work to the job setup in FreeCAD to 'spin' the profile of the part and ensure that the outer profile or extremities are passed in to liblathe. This would certainly be something that would benefit from your attention if you fancied looking in to it?
JoshM wrote: ↑Sun Feb 17, 2019 8:56 pm
I think another area often overlooked is the significance of the Chuck in how close you can get to your model. I believe that tailstocks are of limited use in CNC lathe work, because of interference with the tool-table, but I'm not sure of that. The chuck jaws on the headstock though can be challenging. You need to grab the stock well, and the further away from it you are, the more need for tailstock support. The closer you work to the Headstock though, the less clearance available...
The UI I have been testing allows setting the inner and outer profile limits and the end plane limits. This allows manual adjustment to account for work holding and addition offset / lead in / lead out.
I was toying with the idea of including a chuck plane too as additional check. This is a feature available in my current CAM software and it can be useful.
JoshM wrote: ↑Sun Feb 17, 2019 8:56 pm
I'll try to work out some models for you. Do you require models be generated in a certain plane? Are you at a point where you can share your existing inputs/assumptions, and/or script? Asking only to get a sense what you are looking to evaluate. Everything's radial cutting, and we've discussed some of the more obvious challenges, so I'm curious what you are looking to validate?
I am just looking to test with different models to check that I have considered as many different scenarios as possible. I am currently working through some edge cases where models have axial grooves (grooves in the z direction) and undercuts.
The only requirement for the model is that it the z direction can be set correctly in the Path Job setup, this is another area that requires some attention. Some models have to manually rotated to achieve the correct model setup.
There isn't much mileage me sharing what I have at the moment as I know that it won't work everywhere (plus the code is a mess!!) I am almost at the point where it is worth me pushing it to my GIT account to track the changes a bit better so once that is done I will share.
Thanks,
Dan