3D Surface - Face Selection (New feature) [Merged]

Here's the place for discussion related to CAM/CNC and the development of the Path module.
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
User avatar
Gauthier
Posts: 123
Joined: Fri Jul 04, 2014 10:00 am
Location: Audenge, France

Re: 3D Surface - Face Selection (New feature)

Post by Gauthier »

Hi Russell,
Amazing job !!!
Work very well from first tests this afternoon...
I will continue to torture the code with my very complex parts that I plan to machine soon :D
@++;
Gauthier.
RatonLaveur
Posts: 991
Joined: Wed Mar 27, 2019 10:45 am

Re: 3D Surface - Face Selection (New feature)

Post by RatonLaveur »

I
Can
Not
Wait
For
That
PR....this Russ one... he's a piece of work.

That being said freman has a few good points that i had not yet quite so clearly formulated to myself.

A lot of the frontend is actually backend. And that's fine. It's very much work in progress as Russ among other key contributors and leaders aptly demonstrate time and time again.
Russ4262
Posts: 953
Joined: Sat Jun 30, 2018 3:22 pm
Location: Oklahoma
Contact:

Re: 3D Surface - Face Selection (New feature)

Post by Russ4262 »

Afternoon,
In the big picture, the two issues presented exist in part due to the current operation's structure. 3D Surface was much simpler before I put it in a Python arm bar and made it tap out.

I have been working within the confines of the current implementation of the operation, and trying to use my best judgement(not having any significant CNC experience) when presenting the user with new choices and features. So, current implementation is by no means the vision or the end goal. Rather, it has been a case of working within the existing limitations and definition of the operation while pushing the boundaries of, and providing more, capabilities. Consequently, it now does a lot more than it was, and is, purposed for - which is new a problem of sorts. Anyhow, I don't intend to sound defensive or negative.


freman wrote: Thu Mar 12, 2020 7:32 am
'ScanType': Select 'Planar' for standard 3-axis operations. Use 'Rotational' for 4th-axis operations.
While I can see that this makes perfect sense from the implementation perspective , is this clear from a user perspective?

Chosing "Planar" for 3D is counter-intuitive. If these options are uniquely tied to each use, would it be better to make that the user's choice. Would the user even realise what "scan type" was referring to?
No, this is not clear. I'm open to suggestions for improvement. We need to look at both the property name, 'ScanType', and the two values as well. With the current implementation, we need one of the values to suggest a rotational operation, and the other non-rotational. Anything coming to mind?

freman wrote: Thu Mar 12, 2020 7:32 am
'Algorithm': Select 'OCL DropCutter' for 3D Surface operations. Select 'Waterline' for that type of operation.
This particular property will disappear once the `3D Surface` and `Waterline` operations are separated into independent operations. The up-tick on this one is that until this separation happens, users coming from FC 18.4 will be familiar with the 'Algorithm' choice if they have used this experimental feature. As for the newcomers, I plan to work on the wiki side for supporting this user group once the PR is merged. Also, I plan to work on the separation of the two as one of my next projects; I already have a branch with this separation project at about 80% completion. I will have to update its`3D Surface` and `Waterline` code after this merger and double check stability with a build from source and some testing.

Thanks for the collaboration on this PR. Please post additional improvements/changes. If we like them, I can code them. At this point, I'd suggest we should let the current PR stand so the FreeCAD managers can have a fixed code set to analyze and test for the PR (It has changed drastically over the past few months). We can make the changes we want in another much smaller PR after this one, if need be.

I like your thoughts on converting the rough sheen into a glossy shine on this brass pot. I definitely appreciate the help. Please continue posting your ideas for fixing such issues. I'm reading them.

Cheers,
Russ
RatonLaveur
Posts: 991
Joined: Wed Mar 27, 2019 10:45 am

Re: 3D Surface - Face Selection (New feature)

Post by RatonLaveur »

Speaking for myself, at the moment you kindof left me in the dust. I need some time to catch up and actually run the CNC a bit for troubleshooting. It will be weeks before i can contribute anything meaningful to the conversation.
I feel like it was yesterday you were still figuring out the collective vs single feature processing and the minimizing of air milling when performing 3D pockets in a slanted surface.
Now i need to check out circular dropcutter patterns. Face selection in 3d milling and all the options you added or tweaked such as extension of the toolpath.

Path has moved almost too fast in the past few weeks for the user base to follow. Which is both exhilarating and a bit scary.

I'll really try to catch up to start being a bit useful.
Russ4262
Posts: 953
Joined: Sat Jun 30, 2018 3:22 pm
Location: Oklahoma
Contact:

Re: 3D Surface - Face Selection (New feature)

Post by Russ4262 »

RatonLaveur wrote: Thu Mar 12, 2020 11:19 pm Speaking for myself, at the moment you kindof left me in the dust. I need some time to catch up and actually run the CNC a bit for troubleshooting. It will be weeks before i can contribute anything meaningful to the conversation.
LOL ! Awe, come on! You've been one of my most outspoken, staunchest supporters and voluntary testers! What are you saying? haha. Glad to have you on board, Sir. Thanks for sharing the journey.

RatonLaveur wrote: Thu Mar 12, 2020 11:19 pm ... the minimizing of air milling when performing 3D pockets in a slanted surface.
Thanks for the reminder. We need to add this to the 0.19 features list!

High five,
Russ
User avatar
freman
Veteran
Posts: 2214
Joined: Tue Nov 27, 2018 10:30 pm

Re: 3D Surface - Face Selection (New feature)

Post by freman »

Also, I plan to work on the separation of the two as one of my next projects; I already have a branch with this separation project at about 80% completion.
You seem to have a good idea where you are going and your judgement has been pretty good so far, but what is the motivation for this split? Won't that mean a lot of code duplication?

I may be misunderstanding this but isn't waterline just another method to map a 3D surface.

I would have thought that from a functional point of view, it would be more logical to separate rotational from orthogonal operations. Those do seem fundamentally different and could be separated into two different tools. ( That is a UI question which does not necessarily mean they need separation in the implementational code. ).

That would make the rotational option much more in evidence, which it merits. I think this is too big a feature just to tucked away as an option.
User avatar
freman
Veteran
Posts: 2214
Joined: Tue Nov 27, 2018 10:30 pm

Re: 3D Surface - Face Selection (New feature)

Post by freman »

I'll just drop this in while I'm on it. Hopefully I'm not being dumb and misusing it .

I just set up a face milling op with 3Dsurface since it provides more consistent cutting direction control that 2.5D too.

It defaults to cutting in X direction, I wanted Y but when I change dropCutter direction it did not change the path. ( Not seeing this setting exposed in the comboview either, did something get overlooked? )

Also I dont seem to get any change between conventional and climb. Default is "conventional" but does a climb anyway.

Here's FCStd. ...
Attachments
135x60-facemill.FCStd
(25.59 KiB) Downloaded 44 times
Russ4262
Posts: 953
Joined: Sat Jun 30, 2018 3:22 pm
Location: Oklahoma
Contact:

Re: 3D Surface - Face Selection (New feature)

Post by Russ4262 »

Morning Sir,
Taking a look at your file. The first thing I noticed is that I think you need to update your 3D Surface script/module. The provided file throws an error upon loading, stating a newer property, "ShowTempObjects", is not available. I have synced the current PR version with the scrpts on the OP of this topic. Or, feel free to visit the source branch for this PR at 3DSurface-FaceSelect, and build from source.

freman wrote: Sat Mar 14, 2020 12:58 pm ... It defaults to cutting in X direction, I wanted Y but when I change dropCutter direction it did not change the path. ( Not seeing this setting exposed in the comboview either, did something get overlooked? ) ...
The `DropCutterDirection` property is now only visible when `ScanMode` is set to `Rotational`. When using `ScanMode` set to `Planar`, the `CutPatternAngle` property will allow rotation of the horizontal cut angle for `Line` and `ZigZag` cut patterns.

freman wrote: Sat Mar 14, 2020 12:58 pm ... Also I dont seem to get any change between conventional and climb. Default is "conventional" but does a climb anyway. ...
I check this on the current PR version, and it seems to be working fine.

I did find one minor bug in the specific climb-zigzag-odd-line-count-last-line use case. I fixed this and will push it to the PR.

Glad to have your detailed eye looking at the PathWB! Thanks!

Russ
Russ4262
Posts: 953
Joined: Sat Jun 30, 2018 3:22 pm
Location: Oklahoma
Contact:

Re: 3D Surface - Face Selection (New feature)

Post by Russ4262 »

Hey Freman, How goes it?
freman wrote: Fri Mar 13, 2020 10:17 pm ... what is the motivation for this split? Won't that mean a lot of code duplication?

I may be misunderstanding this but isn't waterline just another method to map a 3D surface.
Some thoughts:
  • Module size is a good motivator for separating the two, `3D Surface` and `Waterline`.
  • Dr. Wallin's OCL has a specific set of waterline functions, but the results were not stable enough when I boarded the S.S. FreeCAD. So, I adapted his OCL DropCutter functions, used for 3D Surface, to a more stable version than the existing Waterline in FreeCAD. The improved version is slower, but more reliable. So no, for the most part the application of OCL DropCutter in Waterline is unique to the current 3D Surface.
  • I believe the PathWB is headed for a much needed version 2.0 with some restructuring to better accommodate a growing list of tools, operations, and milling strategies. The split would also flow well into this restructuring.
  • No, there will not be much code duplication. The flip side is that as we separate distinct operations, we can group duplicate or triplicate functions into a single support module to be loaded by those modules needing these common functions.

freman wrote: Fri Mar 13, 2020 10:17 pm I would have thought that from a functional point of view, it would be more logical to separate rotational from orthogonal operations. Those do seem fundamentally different and could be separated into two different tools. ( That is a UI question which does not necessarily mean they need separation in the implementational code. ).

That would make the rotational option much more in evidence, which it merits. I think this is too big a feature just to tucked away as an option.
Yes, Sir. We are moving in that direction. My philosophy is to develop features and reliable capability over aesthetics. I very much appreciate the reminder to work more on the GUI, general organization, and overall presentation. It is an area I tend to neglect, or perhaps even avoid. With your good ideas, we'll get there faster.

Have a wonderful day in the UK! ... or wherever you reside!

Russ
User avatar
freman
Veteran
Posts: 2214
Joined: Tue Nov 27, 2018 10:30 pm

Re: 3D Surface - Face Selection (New feature)

Post by freman »

Russ4262 wrote: Sat Mar 14, 2020 6:21 pm The `DropCutterDirection` property is now only visible when `ScanMode` is set to `Rotational`. When using `ScanMode` set to `Planar`, the `CutPatternAngle` property will allow rotation of the horizontal cut angle for `Line` and `ZigZag` cut patterns.
Thanks for pointing out I was not up to date. I must have missed last hurricane warning about storm Russell coming through. ;)

I grabbed the three files from OP and have the honour of being the first to download the zig-zag fix. I deleted the old ops and recreated them with the new software to ensure it creates a new surface path object.However, I still see `DropCutterDirection` property in Planar mode, and still get climb only.

I used cut angle to get the cut direction I wanted, which is great, but still don't have control over climb/conventional ( though luckily it defaults to what I need at the moment).


I just dropped those three files into my master build. Is there come caching operation which means I need to rebuild master with these file in source tree?

This job is just light finishing pass surface milling op. However, I set start=0; final=-0.1;step=1 and singlepass mode. I was expecting a single pass at -0.1 and instead I'm getting single pass at z=0.

Also tried start=-0.1; finish=-0.1 , still getting one run a z=0 :?

Is this a brain fart on my part or a bug?

Thanks for the help.
Attachments
135x60-facemill-Y.FCStd
(22.14 KiB) Downloaded 39 times
Post Reply