Solid breaks apart after union

Next
 From:  jki (JKISS56)
7582.1 
Hello all,
I have an interesting problem, spent hours to fix it, but did not find any solution.

This should be a buffer for railroad model. (to be 3D printed) From left to right:
cage, spring. union of cage and spring, body attached to cylinder and prism. Until now everything is fine, objects are solids.



But if i try to union the body with a prism, which is just longer than the previous one (exact copy and scale), the solid breaks apart: (but the object it still treated as solid!)



In bottom row I tried to union two solids, the result is much more interesting, one of them is OK, however the second one is broken (but still reported as "solid")
But this happens not always, with different prism size Moi sometimes just do nothing at union.



What else can i try to get 4-5 bodies on one prism to keep it as one object at print?

  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:  bemfarmer
7582.2 In reply to 7582.1 
Well, it is possible.
Line up several spring unit/rectangular prism solid units, and redraw one long prism, and delete the large circles from the top new prism face,
then join. (Old prism(s) deleted manually.)

- Brian

  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:  bemfarmer
7582.3 
I do not understand how this spring compresses.
There is a smaller cylinder in the middle...
  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:  jki (JKISS56)
7582.4 In reply to 7582.3 
We are fifty-fifty now, I do not understan how did you do the join :-)

here is the principle: the spring is originally a flat iron plate wrapped to a helix



(the construction of the pushed spring is not exact, I have cheated to make it easier)

Could you please describe other words the process of unioning?
I tried to join two of your double buffer body objects - but again failed :-(

...where are the "large circles" coming from??

Thanks
J.

  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
7582.5 In reply to 7582.1 
Hi jki, I suspect that somewhere in your model you've got a degenerate surface (a surface squished down to not have any actual surface area), or a degenerate edge somewhere (edge compressed down to a single point), which is making intersection calculations get all messed up.

Also it can be difficult in general for booleans to deal with objects that just barely skim right over the same overlapping surface area, although usually if the overlap is very precise it can be ok.

re:
> But if i try to union the body with a prism, which is just longer than the previous one
> (exact copy and scale), the solid breaks apart: (but the object it still treated as solid!)

A quick fix for this one is to select the body and run the ShrinkTrimmedSrf command:
http://moi3d.com/3.0/docs/moi_command_reference10.htm#shrinktrimmedsrf

After you have run ShrinkTrimmedSrf on the body it seems to boolean ok with the box.


> In bottom row I tried to union two solids, the result is much more interesting, one of
> them is OK, however the second one is broken (but still reported as "solid")

It looks like running ShrinkTrimmedSrf on both of these pieces will then let this union go ok too.

Another alternative to get these pieces combined into one is to do a face selection of all the bottom box pieces, use Edit > Separate to break those off into a separate object, then do boolean union on just those box pieces, and finally select all the pieces and use Edit > Join to glue them together. That will avoid having the boolean go through and try to intersect all the upper parts with one another. Somehow there is a surface somewhere in the upper pieces that is making the surface/surface intersector get confused when it tries to use it.

So anyway the quickest fix for the moment is run ShrinkTrimmedSrf on your base object.

Hope this helps,

- 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:  bemfarmer
7582.6 In reply to 7582.4 
Thank you for the explanation J.

Here is a wireframe view of the two solids sitting next to each other. (There is a wireframe shortcut script.)
Replace the bottom prisms with one larger prism. The bottom prisms can be deleted face by face.
The 2 large circles are to be deleted from the top face of the new prism. Then join everything remaining.

- Brian




I have not tried Michael's methods.

EDITED: 2 Sep 2015 by BEMFARMER


  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
7582.7 In reply to 7582.1 
Hi jki, I investigated your model some more by using Edit > Separate on it and moving faces away one by one to look for any weird things and I did run into some little slivery degenerate looking faces here so far:



I think that some stuff similar to these is what's messing up your booleans, but not these specific ones since I removed them and still ran into the same problem. But probably there's more like these.

- Michael
Attachments:

  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
7582.8 In reply to 7582.1 
Hi jki - ok so it is those slivery bits that is messing things up. There is a whole chain of them here (and on the other side of the model as well):



I've attached a 3DM file with those slivers removed and this version should now boolean ok with no ShrinkTrimmedSrf used.

I removed those slivers by selecting the larger neighboring faces and using Edit > Separate to break them off the main solid, then use Edit > Hide to hide them temporarily, then it's possible to select the slivers and delete them, then unhide the big faces using Edit > Hide again, then use Edit > Join to glue it back together.

The problem with degenerate faces is that the opposite sides of the trimming boundary touch each other and that makes the outer skin of the model essentially have self-intersecting areas and anything that tries to go over that degenerate surface will lose the proper sense of orientation.

- 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:  jki (JKISS56)
7582.9 In reply to 7582.8 
Hello Michael,
thank you for explanation, now I understand the problem...
I was confused and I focused on spring, while it was also very tricky to get a solid.
The cage was quite simple construction, so I believed the core of the problem is in spring :-)

I like the "clean" constructions avoiding such mess by principle... therefore I have less experience with fixing such problems...
My next challenge is to re-construct the cage to avoid those slivers...

Just one more question:
if i have 1 solid, then i cut it by boolean diff with a single line to get two solids, then I edit both parts, but not connecting faces...And the if i try to join (bool union them again) - it is not possible, moi does nothing, I still have 2 separate solids... what to search for?

Jozef
  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
7582.10 In reply to 7582.9 
Hi Jozef,

> it is not possible, moi does nothing, I still have 2 separate solids... what to search for?

Well, I'd probably just take a general look for problems, like self-intersections, slivers, similar to what I looked for in your other case. See if using ShrinkTrimmedSrf gives different behavior or not.

Can you post the 3DM model file (or send it to me at moi@moi3d.com if you want to keep it private) and I'll take a look and see if anything stands out.

If your objects mate up along the cut line, it should be possible to delete the faces along that line and then with 2 pieces that have common open edges select them and use Edit > Join to glue them together rather than boolean union. Join only tries to glue unattached edges to each other, while boolean union also tries to intersect the objects and see if any pieces need to be removed, so it's a much more complex operation than join.

If your edits were right adjacent to the connecting faces with new pieces partially overlapping it may be difficult for the intersector to figure out how to cleanly divide it into separate chunks.

- 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