MoI discussion forum
MoI discussion forum

Full Version: Boolean not working

Show messages:  1-20  21-31

From: Billabong
11 Jan   [#1]
I am trying to Boolean/Union this object into the other one, but no matter what I cant get it to work. I feel like the answer is staring me straight in the face but for the life of me I cant figure it out.


Attachments:
Boolean_Issue.3dm

Image Attachments:
1.JPG 


From: Billabong
11 Jan   [#2] In reply to [#1]
I think i figured it out. Instead of trying to union both objects. I selected the faces of the main drone that were going to be in the boolean and that worked!
From: val2
11 Jan   [#3]
here is the file booleaned.
you had two of the inset holes that had errors. I removed them and remade them. It was making the object normals not all face out.

Attachments:
Boolean_Issue.3dm


From: Michael Gibson
11 Jan   [#4] In reply to [#2]
Hi Billabong, I also found that if I hack off the back part of the object then it booleans ok too:



I noticed that the main object is sometimes not being categorized as a solid even though there are no naked edges. This means that some piece of the model is not responding well to ray fire tests that are used for volume containment calculations.

I've been going around and removing chunks of the model to try and weed out the problem geometry and I think these may be an issue:





It's easy for rounded corners like that baked directly into the surface control points can end up as a self intersecting surface.

Some info here:
http://moi3d.com/forum/index.php?webtag=MOI&msg=1127.4
http://moi3d.com/forum/messages.php?webtag=MOI&msg=3473.3

- Michael

Image Attachments:
drone_boolean.jpg  drone_boolean2.jpg  drone_boolean3.jpg 


From: Billabong
11 Jan   [#5]
@val2, How did you figure that out? Seems like that would be looking for a needle in a haystack

@Michael, Interesting. Thanks. Will read that in the morning.
From: val2
12 Jan   [#6] In reply to [#5]
Billabong,

Your model registered as solid in Moi but was failing so I looked at it in 123D. It came in with flipped normals but didn't show where the error was right away so I looked at it in Cad Assistant and it showed the two holes failing so I went to Moi removed the holes and cut two new ones. It then booleaned after that.

Val
From: Billabong
12 Jan   [#7]
@val2, Would you say it would be a good practice to periodically drop your model into CAD Assistant to check it for errors?
From: val2
12 Jan   [#8] In reply to [#7]
No, I only do it when things aren't obvious in Moi itself. As in, it looks like you have two solids but they won't boolean, so why not? have I confused Moi in some way? Are my control lines on my two objects touching? No? then I take it to another package to see if it can do it. It's a quick way to check errors. IE, 123D will show normals are not all facing out by assigning two colors to your model. If normals are not all facing out something is wrong with the solid. cad assistant will mangle the model so it will be obvious where things are wrong. Moi can on occasion do the same if you import from other software packages. what will come into moi mangled from lets say a solid works generated file will open up fine in 123D ( or, more to the point, open differently, some errors in moi won't be the same as the errors in 123D). I don't know exactly why but I suspect it has to do with each package calculating the model differently. You will need someone who understands this better to explain it.
From: Billabong
13 Jan   [#9]
@Val2,
So after a little bit of research on my end and realizing that the obvious was staring at me straight in the face. I figured out the main issue and I think the failure on my part was not fully understanding the jargon when working in nurbs. So after I brought in your file that you corrected for me, I started to get the same issue not long after where I couldn't get boolean to work. I kept sitting here thinking what am I missing. So, I exported out my model as an .obj into 3ds max, which is my native program. As soon as it came in, it looked like what you seen below. The normals were flipped!! I deal with cad from clients all day at my day job and there will be times when the model will import flipped normals even when importing as a step file and I never knew why. Actually I still dont understand why this actually happens in nurbs yet ( but I'm getting there). So I did a little more research and if I run my Cplane (in MOI) over the model, it actually shows me the patches that are flipped and then I can just select the patches, separate them and then press Tab, and write "flip" and then re-attach it to the main model. It fixes it.
This is a huge find for me. I was almost to the point of giving up because I just couldn't figure out why I was keep having this issue.






@Michael,
Do you know the reason why this happens? Part of me think that this comes from using "Mirror" but then it would also happen if I select an edge, duplicate it and create a patch from it using the network "command". Like in the image below. The funny thing is. All of those curves are "rebuilt" before the patch is created and the normals were still flipped. This is the main thing that I dont understand and is it something that I'm not doing correctly?

By the way, This is why when I would select only the faces that were going to be booleaned it worked is because those faces actually had normals facing in the right direction

Anyway. I know this was kind of a long post, but I wanted to post back what I found.


Image Attachments:
1.JPG  2.JPG  3.jpg 


From: Billabong
13 Jan   [#10]
Annnnnddd. I just discovered another issue! After flipping all those normals in MOI and then reattaching them back to the main model. They re-flipped themselves!! I mean that went back to their original state!! Why?
From: Michael Gibson
13 Jan   [#11] In reply to [#10]
Hi Billabong, probably there are some degenerate squished surfaces still in there. Surfaces that look like curves because they have all their surface area either squished down or trimmed away.

Those can interfere with surface traversal where things are trying to gather up stuff all on the same side.

- Michael
From: Billabong
13 Jan   [#12] In reply to [#11]
@Michael, Found it! So this is an absolute nightmare. Is there a way to avoid this or a faster way to find this type of stuff? This can really throw a wrench in your production.





Image Attachments:
4.jpg  5.jpg 


From: Michael Gibson
13 Jan   [#13] In reply to [#12]
Hi Billabong,

re:
> Is there a way to avoid this or a faster way to find this type of stuff? This can
> really throw a wrench in your production.

It can be pretty hard to find these, sorry. To avoid it try to keep your initial curve setup as clean and simplified as possible, try not to have duplicate curves or little tiny segments in the curves.

Any irregularities in initial curves will tend to inherit on down the line.

If you have repeatable steps that generates some bad stuff please send it over to me so I can see if I can stop it from happening. It's really hard to figure out exactly what previous step went wrong only by looking at the end result.

- Michael
From: Billabong
13 Jan   [#14] In reply to [#13]
Hey Michael,

I do have another question. but I think it would be easier to explain in a video. so I made this in hopes you could explain it to me. Thanks

https://www.dropbox.com/scl/fi/sm93yamauizuh91h6rbxt/Moi-Issue.mp4?rlkey=65t8sj1pbe4st2q1znsa55fzd&dl=0
From: Michael Gibson
13 Jan   [#15] In reply to [#14]
Hi Billabong, can you please also post the .3dm model file that you are showing in the video?

It's pretty hard to figure out what is going on without being able to examine the actual geometry.

Thanks, - Michael
From: Billabong
13 Jan   [#16] In reply to [#15]
Sure thing. Sorry about that. Just a quick note, this happens every time I create a patch from existing faces.

Attachments:
patch_problem.3dm


From: Michael Gibson
13 Jan   [#17] In reply to [#16]
Hi Billabong, you generally want to make things more by intersecting parts that push through each other rather than going around and filling in patches like this.

If you do want to fill in using Network, it will be tough to do it on edges that are meeting up a little loosely like you have here.

That's because to Join the new patch needs to have its edges match up close enough to the original edges, when you edit the curves that's basically moving stuff away from where Join will want it at. But just using Network without moving pieces isn't going to help because the surface that network generates will be an average anyway where things don't touch exactly.

Another complicating factor is a couple of micro edges in this area:





If you turn on surface control points on your Network, you'll see that even though the shape is very nearly planar, it's got a bunch of control points all sliding and skewing along like this:



This is not that great because you generally want surface control points to naturally follow the surface shaping and boundary details come from trim boundaries instead of baked directly into the surface structure.

I'll take a look at doing some repair work to simplify the edges.

- Michael

Image Attachments:
micro_edge1.jpg  micro_edge2.jpg  networkcontrolpoints.jpg 


From: Michael Gibson
14 Jan   [#18] In reply to [#16]
Hi Billabong, some of the surfaces in here are a little odd, like this strip here:







That looks like it wants to be an extrusion that is trimmed but instead it's something that's surfaced directly between 2 long curves, unlike an extruded surface all of the surface control points are not all in one single direction there is kind of a skew between them in some areas.

I mean it's still a surface but it's more complex and less accurate than an extruded surface.

- Michael

Image Attachments:
extrusion1.jpg  extrusion2.jpg  extrusion3.jpg 


From: Zooen
14 Jan   [#19] In reply to [#6]
Hi val2
>I looked at it in Cad Assistant???
How do you open a .3dm file in "Cad Assistant"? I've read about opening Nurbs files but I don't understand how to do it.

https://www.opencascade.com/products/cad-assistant/
Additional mesh file formats import is supported with help of Open Asset Import (COLLADA, 3DS, FBX, BLEND) and openNURBS (3DM) libraries.

Well, I think that's way beyond my capabilities. But it may be of interest to some people.
https://github.com/mcneel/opennurbs
From: val2
14 Jan   [#20] In reply to [#19]
Zooen,
I import and export with STEP.


Basic functionality is provided by XDE component of Open CASCADE Technology (OCCT). The program supports the following file formats:

STEP (AP203, AP214 and AP242) — ISO 10303 standard for product data representation and exchange among CAD systems (ASCII format). Supported data: shape geometry, assembly structure, colors, names, validation properties, file information, dimensions and tolerances (semantic and tessellated PMI).
IGES (5.1 and 5.3) — vendor-neutral format for data exchange among CAD systems (ASCII format). Supported data: shape geometry, colors, top-level object names, file information.
glTF — API-neutral runtime asset delivery format (ASCII or binary), commonly supported by modeling systems and game engines. Supported data: shape geometry (triangulation), assembly structure, PBR metallic-roughness materials with texture maps, names.
XBF — BinXCAF, which is a binary persistence format for universal XCAF document structure used by OCCT. Format accumulates persistence of various data which can be imported from other files formats like STEP, IGES, ACIS, glTF, etc.
BREP — ASCII persistence of shape Boundary representation used by OCCT with open specification. Supported data: shape geometry and assembly structure (defined by nested compounds, without names).
OBJ Wavefront — format for 3D assets exchange commonly supported by modeling systems and game engines (ASCII format). Supported data: triangulation and quads, plain list of named groups, common materials with texture maps.
VRML or WRL — ISO 14772 virtual reality modeling language (ASCII format). Supported data: triangulation, assembly structure, colors, names.
Additional mesh file formats import is supported with help of Open Asset Import (COLLADA, 3DS, FBX, BLEND) and openNURBS (3DM) libraries.

Show messages:  1-20  21-31