how to sweep a solid

Next
 From:  michael (MHASSE)
10905.1 
Hi,

Is there a way to achieve something like Inventor's "solid sweep" in moi?
In my screenshots, this is simulated in Moi by densely arraying a solid along a path. The desired result would correspond to a boolean union of an array with an infinite item count.





  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
10905.2 In reply to 10905.1 
I am not aware of such a command in MoI.
There are 3 scientific papers about solid-sweep, but it must be difficult to program.

- 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:  Frenchy Pilou (PILOU)
10905.3 
Menu Transform /Array Curve the 3D Object with a tiny distance! (or Numerous item count)
Then Select All and Boolean Union! ;)

EDITED: 30 Nov 2022 by PILOU

  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 (MHASSE)
10905.4 In reply to 10905.2 
Hi Brian, thanks for the hint. I found this one: https://www.sciencedirect.com/science/article/abs/pii/S0167839614000582. Would you happen to have any other sources?

- 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:  michael (MHASSE)
10905.5 In reply to 10905.3 
Hi Frenchy, I think that's approximately what I did as well. At high density, the boolean union starts to bug.
  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 (MHASSE)
10905.6 
Btw. one of the applications I am looking for is modeling the cut created by a milling tool. In a case as in the screenshots below, this can be approximated by sweeping revolving the tool profile around its symmetry axis and also sweeping it along the tool path. Unfortunately, this only works if the tool is highly symmetric.








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
10905.7 In reply to 10905.6 
Hi Michael, I doubt that a boolean union at high density would be workable. The geometry would be in too many little tiny slivery fragments which is not a good situation for booleans.

Is it possible for you to post the .3dm file for your original screenshot or a similar test case? Is the path planar or 3D? Are you using any specific options for the Array curve command, like Rotation: Flat maybe?

I think that you might want to start by generating some boundary curves maybe by arraying a point object placed at a corner of your original profile.

The process might be something like array one point , use the plugin to export points to .csv file, then use the plug-in to import points from .csv file making a curve. That's what I would try out if I had an object to test with.

- 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
10905.8 In reply to 10905.4 
Hi michael (MHASSE),
Yep, that is one of their 4 papers.

https://arxiv.org/pdf/1405.7457.pdf
https://arxiv.org/ftp/arxiv/papers/1404/1404.0119.pdf
https://arxiv.org/pdf/1305.7351.pdf
https://arxiv.org/pdf/1204.0908.pdf

I do not know if their methods would work for random solid shapes, or with NURBS...
Seems like different sub-faces get mapped to different swept faces...

Google scholar can be good for located papers.

- 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
10905.9 In reply to 10905.6 
There are several papers on 5-Axis NC Machining Simulation.
Many are pay per view. I very rarely pay for a paper...

https://www.merl.com/publications/docs/TR2013-049.pdf

- Brian, over and out.
  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 (MHASSE)
10905.10 In reply to 10905.7 
Hi Michael, agreed, the boolean was more meant as an approximation to illustrate the desired result.

The path is planar, and rotation is set to freeform.

Good idea about arraying boundary points, I'll give that a try.

Meanwhile I got some interesting results by sweeping each of the edges of just one of the faces along the same path. I then Boolean merged all the resulting 4 surfaces with each other and deleted the "hidden" faces. The boolean intersections don't all work because the faces intersect in complex ways and at very shallow angles. But resulting shape nicely covers the array of the source face, except for the concave section in the middle.

EDITED: 1 Dec 2022 by MHASSE

Attachments:

Image Attachments:
Size: 260.4 KB, Downloaded: 21 times, Dimensions: 1510x486px
Size: 505.9 KB, Downloaded: 16 times, Dimensions: 1542x504px
  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
10905.11 In reply to 10905.10 
Hi Michael, I can't seem to find the source object in the .3dm file you posted. Can you please post one with just the base object and path for the array alone and not just the result of the array?

If the path is planar then I would think you should be able to create offset curves from the path to form boundary curves. You'd offset the path through a vertex of the base object and then move it to the z level of the vertex.

But also like you mention a one rail sweep of edges of the base object should generate some surface pieces as well.

- 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:  michael (MHASSE)
10905.12 In reply to 10905.11 
Hi Michael, sorry, I got my attachments mixed up.

In the new file, source solid and path. In addition, as you proposed, offset curves (for four coplanar vertices).

I swept the corresponding edges along the offset curves (default settings), merged the resulting faces and deleted the "behind" faces. The boolean result looks very clean this time.

- Michael H



  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
10905.13 In reply to 10905.12 
Hi Michael H - that's looking pretty good! Will that method work for what you need?

I guess it would be good to overlay it onto the dense array to check it for accuracy. I think that possibly doing extensions of the offset curves may cause a little bit of differences in shape from the array result.

I think that maybe a way to get a really accurate result you may want to connect a line to the start of the path curve (the original path curve, no offsets) for each edge that you want to sweep, so that profile for the sweep will have its initial position at the start of the path curve rather than it possibly attaching to the interior of the path curve.

What I mean is to sweep this edge:



Extract it into a regular curve by selecting it and doing Copy/Paste (Ctrl+C/Ctrl+V) and then draw a line connecting it to the start of the path and join it so it's like an L shape like this:



Now sweep that joined L shape with the path as the single rail and it should give you the right shape:



You can delete the extra face generated by the other piece of the L.

The reason for this is because if you just sweep the edge directly it's going to associate it with the rail like this:




Sweep works like that because you can make a sweep profile that is somewhere in the middle of the rail, like this:





By making the L to make the profile touch the start of the rail that will ensure that the profile will have the start of the rail as its station like you want.

Array curve is a little different than sweep in this regard, it doesn't try to make the profile connect to the middle of the rail like sweep does, unless the rail is a closed curve.

To make sweep behave the same as array curve you need to make the profile curve actually touch the start of the rail or be a planar curve where the plane touches the start of the rail. Adding the line to make the "L" shape does that.

- Michael G

  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
10905.14 In reply to 10905.12 
So if you repeat that with all 12 edges you'll get surfaces like the attached.

It still needs some problematic bunching and slivery intersections to resolve but it's 12 surfaces to work with instead of a whole lot of arrayed solids so probably better.

If some extra space is ok maybe something like arraying a cutting plane along the path and intersecting those with the 12 surfaces could yield some cross sections.

- 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
 From:  michael (MHASSE)
10905.15 In reply to 10905.14 
Great suggestions! With the first example, I failed to trim about 10% of the surfaces.
I finally succeeded with a simpler case: the source solid is a tetrahedron, and the path curvature is smoother.
The trim tool ultimately worked better than the boolean merge, so I might go back and try that on the first example.

the resulting solid:


overlayed with arrray:


the tetrahedron "engraving" into a substrate:

  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