karamba3d / K3D_NightlyBuilds

Nightly build versions of Karamba3d
https://karamba3d.com
25 stars 2 forks source link

REQUEST: Shell Section - Improve projection behaviour #21

Closed robertvier closed 3 years ago

robertvier commented 3 years ago

I tried the Shell Section component on a simple I-Beam example.

It would be great if the intersections could be made a bit easier to use.

A. Can you make the algorithm pull the polyline to the next shell? In the example I can just intersect the upper flange by supplying the shell index. If I have one single shell in the model instead of 3 separate ones, this is not possible. B1. Can you make polylines that lie exactly on the shell be handled? B2. What about supplying a mesh, a plane, or a brep to intersect with, instead of a polyline and a direction?

grafik 201209 Shell Sectino Example.zip

Thanks for the great component!

The component actually came at the right moment, as we had a request on origami structures and section forces in shells from our office in Frankfurt, for teaching purposes.

kr Robert

EnricoAntolini commented 3 years ago

Hello Robert,

A) The algorithm works in this way: It searchs for the first point on the polyline that project to the mesh and then it marchs edge by edge until a naked edge or an end point is reached. At the moment it retrieves just the first (closest) intersection to make it simple. It could be possible to retrieve also other intersections but in the case of a I-Beam it would be better to handle the web mesh and the upper and lower flange separately. B1) Yes, this could be fixed B2) At the moment the algorithm work as a projection of a polyline on a mesh, but it could be possible to expand to plane-mesh or mesh-mesh intersection cases in the following WIP.

kr Enrico

robertvier commented 3 years ago

Hi,

thanks for the answer. If you try the example file you will see that not the closest point on the mesh is found the way you describe. The projection 'passes' through the upper chord, no matter from where I project as far as I have tried.

Imo it should be possible to handle this example without the need to create a custom data structure for the shell - dividing it into 3 separate shell ids for example. This is sometimes very hard in real projects.

kr Robert