Why can't I boolean?

Post here for help on using FreeCAD's graphical user interface (GUI).
Forum rules
and Helpful information
IMPORTANT: Please click here and read this first, before asking for help

Also, be nice to others! Read the FreeCAD code of conduct!
grooveman
Posts: 42
Joined: Fri Jul 05, 2019 3:29 pm

Why can't I boolean?

Post by grooveman »

Hi.

I'm in Part Design. I created two relatively simple bodes. I want to knock one out of the other. Every time I do this, however, it fails. If I go out of Part Design, and do this in Part, it will work... but then I don't have a body to work with anymore -- and it violates everything I've learned on this forum, namely: Don't move between workbenches anymore than you absolutely have to.

I'm attaching the part, if anyone wants to give this shot to see what I mean. I'm using the latest 19.3 AppImage build.

Thank you.
Attachments
messed_up.FCStd
(31.88 KiB) Downloaded 18 times
drmacro
Veteran
Posts: 8865
Joined: Sun Mar 02, 2014 4:35 pm

Re: Why can't I boolean?

Post by drmacro »

grooveman wrote: Fri Jan 21, 2022 5:08 pm Hi.

I'm in Part Design. I created two relatively simple bodes. I want to knock one out of the other. Every time I do this, however, it fails. If I go out of Part Design, and do this in Part, it will work... but then I don't have a body to work with anymore -- and it violates everything I've learned on this forum, namely: Don't move between workbenches anymore than you absolutely have to.

I'm attaching the part, if anyone wants to give this shot to see what I mean. I'm using the latest 19.3 AppImage build.

Thank you.
There is nothing wrong with using both Part and Part Design...as long as you play by the rules.

The recommendation you refer to is typically made to noobs, to lessen their confusion during the initial learning curve.

That said, the Boolean in Part Design should work and apparently has to do with the Body objects having been translated. This shouldn't effect it. Probably a ticket is in order...

You can easily just create a new Body and drop the result of the Part workbench Cut in as a base object as a workaround.
Snip macro screenshot-64a976.png
Snip macro screenshot-64a976.png (101.5 KiB) Viewed 1656 times
I can confirm that this is also the case in FC 0.20 with both OCCT 7.5.3 and 7.6.

OS: Debian GNU/Linux 10 (buster) (XFCE/lightdm-xsession)
Word size of FreeCAD: 64-bit
Version: 0.20.27134 (Git)
Build type: Release
Branch: master
Hash: 39ed257eb4b59ae72ef9522d1d6c6ba886f8222f
Python version: 3.7.3
Qt version: 5.11.3
Coin version: 4.0.0a
OCC version: 7.6.0
Locale: English/UnitedStates (en_US)
Star Trek II: The Wrath of Khan: Spock: "...His pattern indicates two-dimensional thinking."
grooveman
Posts: 42
Joined: Fri Jul 05, 2019 3:29 pm

Re: Why can't I boolean?

Post by grooveman »

Thanks drmarco.

The problem is, I need to do more "booleaning" with that part... I couldn't get to go in 19.3. I have a copy of 18.4... I was able to open in that, and do what I needed to do... I'm just hoping I can get a decent mesh out of this so I can print it...
User avatar
onekk
Veteran
Posts: 6144
Joined: Sat Jan 17, 2015 7:48 am
Contact:

Re: Why can't I boolean?

Post by onekk »

Part WB is the core of FreeCAD as it is the main interface with modelling engine OCCT.

PartDesign is an abstraction level up.

There are limitations when mixing things, as the abstraction level will impose some limitations when mixing, so it will (maybe) not ever possible to apply as example a Part Boolean operation to a PartDesign Body.

Usually you have in PartDesign equivalent tools to made operations that you will make with Part WB.

So you will have to choose the correct "workflow" and know as someone as told you the correct workflow to do a specific things.

Don't count in video tutorials around, if they are not advised by some skilled user and feel free to ask here when in doubt.

Usually questions are not unanswered here, just have a little patience, and someone will answer you with competence.

EDIT: follow advices of @chrisb and @TheMarkster, (as said above some competent people will answer usually in a short time.)

EDITED Post: Some correction and a little clarification.

Regards

Carlo D.
Last edited by onekk on Sat Jan 22, 2022 9:00 am, edited 1 time in total.
GitHub page: https://github.com/onekk/freecad-doc.
- In deep articles on FreeCAD.
- Learning how to model with scripting.
- Various other stuffs.

Blog: https://okkmkblog.wordpress.com/
TheMarkster
Veteran
Posts: 5505
Joined: Thu Apr 05, 2018 1:53 am

Re: Why can't I boolean?

Post by TheMarkster »

onekk wrote: Fri Jan 21, 2022 10:35 pm Part WB is the core of FreeCAD as it is the main interface with modelling engine OCCT.

PartDesign is an abstraction level up.

There are limitations when mixing things, as the abstraction level will impose some limitations when mixing, so it is not even possible to apply as example a Part Boolean operation to a PartDesign Body.
You can apply a Part Boolean operation to a Part Design Body. Just make sure to select the Body in the tree view and not in the 3D view or else you will get one of the features inside the body instead of the body itself.
chrisb
Veteran
Posts: 53922
Joined: Tue Mar 17, 2015 9:14 am

Re: Why can't I boolean?

Post by chrisb »

To add to onekk's post:
With the same effort needed for the second body you could have created a subtractive loft in the first. That would have the boolean "built in". There are very few cases where a PartDesign boolean is needed. Most cases can be handled if you consider that additive features have the union built in, and subtractive make a cut.
A Sketcher Lecture with in-depth information is available in English, auf Deutsch, en français, en español.
kisolre
Veteran
Posts: 4163
Joined: Wed Nov 21, 2018 1:13 pm

Re: Why can't I boolean?

Post by kisolre »

the Boolean in Part Design should work and apparently has to do with the Body objects having been translated.
This got buried down... The problem is that the base body is also translated. But The tool is applied in the base bodies coordinate system so that makes it applied in the wrong (from the user perspective) location. With the proper locations everything works as expected. In the attached file I did not bother too place second body at the desired location, just in the general area.
This is pry explained in the docs PartDesign_Boolean
Tool bodies adopt the local origin of the active Body. If the active Body is not located at (0,0,0) in the global coordinate system, the tool bodies' placement need to be relative to the active Body. It may be easier to leave the active Body's placement at the origin before applying the Boolean feature, then to change its placement.
Edit: user quote got mixed up so I removed the user data...
Attachments
messed_up_kiss.FCStd
(47.95 KiB) Downloaded 19 times
drmacro
Veteran
Posts: 8865
Joined: Sun Mar 02, 2014 4:35 pm

Re: Why can't I boolean?

Post by drmacro »

kisolre wrote: Sat Jan 22, 2022 9:32 am
the Boolean in Part Design should work and apparently has to do with the Body objects having been translated.
This got buried down... The problem is that the base body is also translated. But The tool is applied in the base bodies coordinate system so that makes it applied in the wrong (from the user perspective) location. With the proper locations everything works as expected. In the attached file I did not bother too place second body at the desired location, just in the general area.
This is pry explained in the docs PartDesign_Boolean
Tool bodies adopt the local origin of the active Body. If the active Body is not located at (0,0,0) in the global coordinate system, the tool bodies' placement need to be relative to the active Body. It may be easier to leave the active Body's placement at the origin before applying the Boolean feature, then to change its placement.
Edit: user quote got mixed up so I removed the user data...
Yes, I guess I said that in a way that implies I didn't understand the why of why it didn't work.

And, I do know it is documented.

But, IMO this is at best confusing to users and at worst a failing of the Body conept.

Two solids that overlap anywhere in space should be expected to be used in a Boolean operation successfully. The fact that two Part workbench objects do work and two body objects that have been translated don't. Two Body objects that represent two solids would be expected to deal with the position in space by the casual observer.

I also, agree with @chrisb that, the Part Design paradigm would be to have the operations described by the OP, in a single body with subtractive operations.

Note, I'm just noting that this behavior is easy to see why it confusing behavior, until the global and Body coordinate relationships aren't understood.
Star Trek II: The Wrath of Khan: Spock: "...His pattern indicates two-dimensional thinking."
kisolre
Veteran
Posts: 4163
Joined: Wed Nov 21, 2018 1:13 pm

Re: Why can't I boolean?

Post by kisolre »

drmacro wrote: Sat Jan 22, 2022 11:49 am I didn't understand
My comment was mainly explanation of why the OP operation fails, since only your comment touched that. I think that this was intentionally made that way so when the body is translated but the tools is not this will not change the body. But now as with shapebinders and subshapebinders I think that there could be a reasonable feature request at least to implement something like support/relative for the boolean operation.
I just tried and using Shapebinder with Tracesupport=True of the whole body for the boolean works exactly as desired here:
Attachments
messed_up_kiss_shapebinder.FCStd
(46.15 KiB) Downloaded 15 times
TheMarkster
Veteran
Posts: 5505
Joined: Thu Apr 05, 2018 1:53 am

Re: Why can't I boolean?

Post by TheMarkster »

Using kisolre's shapebinder trick I was able to make this work with PDWrapper macro.

Workflow:

1) install pdwrapper macro
2) make he outer body active
3) select cut body, make blue shapebinder, trace support = True
4) select shapebinder, run macro
5) select subtractive type, follow additive loft
Snip macro screenshot-360531.png
Snip macro screenshot-360531.png (88.19 KiB) Viewed 1403 times
Attachments
messed_up_pdwrapper.FCStd
(46.6 KiB) Downloaded 12 times
Post Reply