V4 unexpected Boolean Behavior

Next
 From:  Ad (JUSTABLE)
10248.1 
Hi All,

I was trying to cut some holes in a ring, see attachment. As a result parts of the cutting objects remain.
To create the ring, I created a cylinder and then used a circle to subtract the ID. After that an array of cylinders was used
to boolean the outer hole patterns into the ring. After that I used another cylinder array to create the holes in the center
of the height, which causes me to have problems.

Even a boolean union operation of the cylinders before cutting the holes, gives me the same result. Also tried cutting each
hole individually. No difference.

Cutting the mid line holes into a solid cylinder and then creating the ID of the ring, followed by cutting the hole pattern along
the bottom and top edges solved the problem. I did not try to cut all of the holes in one go, need to check this too.

So basically I have a solution, I was just wondering what could cause this behavior in order to avoid having to go through
different steps to reach my goal. I also attached the moi file itself, in case someone wants to give it a shot. Maybe others
don't have that problem?

Thanks






  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
10248.2 In reply to 10248.1 
Hi Ad, so one thing that makes this difficult for the boolean intersection process is having a lot of faces and edges that are quite close to each other in the center area:




Another thing that can potentially also make things more difficult is the generally small scale of the objects here with the cylinder radius value of 0.05 units. It can be better to try and avoid making objects at smaller scales like that, when individual features of a model approach the intersection fitting tolerance it can make intersection computations decide that some areas are coincident.

I have tried to make these tolerance values automatically scale to the size of the objects so it may be ok in many cases but there are probably still a few operations that are targeting a fixed tolerance of 0.001 units and if your object features approach too close to that it can be problematic. So it's kind of safer to have something like this at 10x its current size.

Anyway, if you configured the cutting objects to not overlap each other in the center it should work a lot better, try the attached version, you should be able to do a boolean difference with this one all in one go:


- Michael

  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  WN
10248.3 
You can also round the cylinder diameter and the subtraction will work as expected.
Image Attachments:
Size: 246.2 KB, Downloaded: 11 times, Dimensions: 1561x913px
Size: 51.7 KB, Downloaded: 25 times, Dimensions: 435x365px
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Ad (JUSTABLE)
10248.4 In reply to 10248.3 
Thank you all for the quick reply. I experimented a little bit more (before I saw your reply).

1. Cutting the ring with all cylinders at once gave me the same undesired results.
2. Cutting a solid cylinder (instead of a ring) with all cutting objects at once, same as above.
3. It works when I cut the holes at midheight first and then the remaining holes close to the edges.

I did not try the solution that Michael suggested, trimming the cutting objects at the center, so
they don't overlap. I will try this, I am sure it works. Yes, Michael, now that you mention to scale
things up before cutting, I remember this was mentioned before at the forum.

Thanks again, learned something new today.
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Michael Gibson
10248.5 In reply to 10248.4 
Hi Ad,

re:
> I did not try the solution that Michael suggested, trimming the cutting objects at the center, so
> they don't overlap. I will try this, I am sure it works.

If you do it by trimming it might be good to run ShrinkTrimmedSrf on it afterwards so that the underlying surfaces are not still coincident.

In the example I posted above, the cylinders were positioned so that they were not overlapping when they were arrayed.

- Michael
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
Next
 From:  Ad (JUSTABLE)
10248.6 In reply to 10248.5 
Hi Michael,

Just saw your reply. I did actually move the cylinder off center to avoid the overlap,
instead of trimming. But thanks for mentioning the "ShrinkTrimmedSrf". I was
runnning in a situation where this probably would have been the solution. I just
could not remember the command. Don't need this too often.

But there is another question that came up in regards to the overlapping cylinders.
Does Moi first Boolean Union internally the cylinders before subtracting from the ring? I am
just asking out of curiosity, because this would make more sense to me why there is
a conflict, since those are all individual cylinders.

Ad
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged

Previous
 From:  Michael Gibson
10248.7 In reply to 10248.6 
Hi Ad,

re:
> But there is another question that came up in regards to the overlapping cylinders.
> Does Moi first Boolean Union internally the cylinders before subtracting from the ring?

No, but when cuts are being calculated it's the underlying surfaces that are initially intersected against each other.

- Michael
  Reply Reply More Options
Post Options
Reply as PM Reply as PM
Print Print
Mark as unread Mark as unread
Relationship Relationship
IP Logged
 

Reply to All Reply to All