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

Here's the place for discussion related to CAM/CNC and the development of the Path module.
chrisb
Posts: 22526
Joined: Tue Mar 17, 2015 9:14 am

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

Postby chrisb » Fri Jan 10, 2020 6:59 am

jonasthomas wrote:
Fri Jan 10, 2020 4:34 am
I posted results and source files here... I don't seem to be getting a correct result.. Any chance you can check this out and let me know what you think???
https://forum.freecadweb.org/viewtopic. ... 97#p359297
See my comment there.
herbk
Posts: 1737
Joined: Mon Nov 03, 2014 3:45 pm
Location: Windsbach, Bavarya (Germany)

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

Postby herbk » Fri Jan 10, 2020 7:11 am

chrisb wrote:
Fri Jan 10, 2020 6:59 am
See my comment there.
:?:
Gruß Herbert
chrisb
Posts: 22526
Joined: Tue Mar 17, 2015 9:14 am

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

Postby chrisb » Fri Jan 10, 2020 8:29 am

herbk wrote:
Fri Jan 10, 2020 7:11 am
chrisb wrote:
Fri Jan 10, 2020 6:59 am
See my comment there.
:?:
Sorry, I was referring to the now quoted post, and did not realize that other posts had occurred in between.
Russ4262
Posts: 373
Joined: Sat Jun 30, 2018 3:22 pm

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

Postby Russ4262 » Tue Jan 21, 2020 3:08 am

Evening all!
Hope you are having a great FreeCAD Monday. Wanted to inform the community that the OP has been updated to version 5d ! This new version has new features and needed fixes and refinements to the previous version. I'll push the same version to the current PR after posting this. This PR and the new version 5d require three files be updated. See the OP for those.

Changes thus far from the current nightly 0.19 working version include:
  • Face selection will now be a reality.
  • New property, `RespectBoundary` will force cutter to remain inside the face(s) selected, or the boundary shape of the entire model.
  • New property, `BoundaryAdjustment` to allow the user to push cutter beyond(positive) the face boundary, or withhold(negative) from the boundary. This is designed to allow for a roughing and final pass to be created with the op.
  • The existing 0.19 complex optimization algorithm was redone, ground up, due to incompatibility with the new face-selection feature. The new version is not as robust, but a decent start - 70-80% of 0.19 version if I had to quantify.
  • Renamed `Optimize` property to `OptimizeLinearPaths` for more detail
  • Added `OptimizeLinearTransitions` property for enabling/disabling the more complex optimization algo. This is independent of the linear optimization.
  • The `CutAngle` and `CutMode` properties are working correctly when `CutPattern` is set to LINE.
  • The ZigZag cut pattern is respected. The `CutAngle` value is also respected here.
  • Added new `CutInternalFeatures` property to allow the user to include(cut) internal features within faces, or avoid them. This feature is only available with certain faces. Unfortunately all faces are not created equally in FreeCAD, making complex addition/subraction of internal features a bit tricky and nauseating. LOL
  • New property added, `HandleMultipleFeatures`, to cut selected faces INDIVIDUALLY(one after the other), or COLLECTIVELY(all layer by layer).
Have a great time with the new version of 3D Surface. As always, tell your wife you'll be in the shop, wear your ear and eye protection, maintain good chip removal, use a sharp cutter, double check your paths, always know where your fingers are and keep one hand over the STOP button at all times.

Ohh, and have fantastic CNC routing session!

Russ
chrisb
Posts: 22526
Joined: Tue Mar 17, 2015 9:14 am

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

Postby chrisb » Tue Jan 21, 2020 7:08 am

Great news, thank you. Good to hear it will be in one of the next versions, until now I copy the two files in question from one version to the next.
Russ4262
Posts: 373
Joined: Sat Jun 30, 2018 3:22 pm

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

Postby Russ4262 » Tue Jan 21, 2020 12:45 pm

chrisb wrote:
Tue Jan 21, 2020 7:08 am
Great news, thank you. Good to hear it will be in one of the next versions, until now I copy the two files in question from one version to the next.
Make sure you get all three(3) files.


Russ
chrisb
Posts: 22526
Joined: Tue Mar 17, 2015 9:14 am

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

Postby chrisb » Tue Jan 21, 2020 2:11 pm

Russ4262 wrote:
Tue Jan 21, 2020 12:45 pm
Make sure you get all three(3) files.
I read so in your last post. Since I had copied only PathSurface.py and PathSelection.py until now, I decided to wait until it is in master.
Russ4262
Posts: 373
Joined: Sat Jun 30, 2018 3:22 pm

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

Postby Russ4262 » Thu Jan 23, 2020 6:36 am

Updated to version 6a!
This one will make you want to upgrade your CNC machine! LOL

Changes:
  • Fixed rookie dependency error on new op creation - introduced in version 5d by none other than yours truly.
  • Fixed/Improved the `CutPatternAngle` implementation when using `ZigZag` pattern. The fix will allow future `CutPatternAngle` to accept 0-360 degrees, instead of current 0-90 degrees.
  • Cleaned-up and consolidated more code.
  • Revisited and improved method that enforces limits on certain properties.
  • New feature: Face avoidance! Just add the faces you want to avoid to the Base Geometry list. Then set the new property, `AvoidLastXFaces` to the number of faces at the end of the list you wish to avoid. All remaining faces above that number will be cut; if none, the entire model will be cut except for(avoiding) those faces! Awesome!
Features on the horizon, or up for consideration:
  • Finish pass toggle - apply wall/face-only engagement, ignoring internal material that would be removed with a roughing pass
  • Basic/simple circular cut pattern
  • Process vertical face(s) toggle - Perhaps create a new, stand-alone op for this feature
  • Update the rotational mode of the current op
I'm open to ideas and suggestions. No guarantee I will implement the ideas presented here... ;) But, I'm reading...

@Sliptonic: I still don't have the kitchen sink yet! LOL Thanks for all your encouragement, guidance and support! This thing ROCKS!
@Mlampert: Ditto...
@ChrisB: We talked about avoiding the top of that long cylinder. Now we can! Here's your file right back at you. Thanks!

To use 21st century youth vernacular, "This is lit!" haha
Mic drop... I'm out... No, really. I'm going to bed. 'Night ya'll.

Russell
Attachments
surface-a.FCStd
Source file for images
(83.15 KiB) Downloaded 6 times
3D_Surface-Version 6a - Avoid 3 Faces.png
Notice top of long cylinder is AVOIDED.
3D_Surface-Version 6a - Avoid 3 Faces.png (245.13 KiB) Viewed 309 times
3D_Surface-Version 6a - ZigZag.png
Two lower faces are avoided, but top of cylinder is not.
3D_Surface-Version 6a - ZigZag.png (212.05 KiB) Viewed 309 times
chrisb
Posts: 22526
Joined: Tue Mar 17, 2015 9:14 am

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

Postby chrisb » Thu Jan 23, 2020 7:14 am

Thank you very much and good night!
User avatar
freman
Posts: 939
Joined: Tue Nov 27, 2018 10:30 pm

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

Postby freman » Fri Jan 24, 2020 1:01 am

Thanks for all these new features Russ. Now I'll have to make something to cut !

In terms of suggestions, I'd like to see some way of having more control over cut direction, like zig-zag without the zag. ;) If the tool would lift and come back so it always cuts in the same direction that would work on a lot of shapes and give a nicer more uniform finish.

The other possibility is :
Basic/simple circular cut pattern
For shapes like the ping-pong balls in Chris' file, this would mean you could descend into it while always cutting in the same direction. This would improve the finish and accuracy on a lot of materials. Now we have more control over what gets cut or not cut this would be very useful.

I'm not sure how you see the circular cut working but if it was a kind of water line method it would also work for semi-cylindrical objects: see attached.

Anyway, thanks for the continued effort. I shall have to download and try it.
:)