HELP: Put lines through plane without the them intersecting each other

Hello, im fairly new to Grasshopper so any help, solutions or ideas how to get aroud my probem is greatly appreciated.

I had the idea to recreate a table-design that should look something like this,


The only thing that i would want to add is some kind of “fixture plate” at half height of the table. ALL Tablelegs(Lines) should cut through this fixtureplate but without Intersecting each other. I’ve tried multiple ways of placing the Legs but couldnt get around this Problem - is there any solution i cant think of right now?

Table design.gh (17.3 KB)

Here’s one example of what i’ve been doing so far. The Points do not have to sit on the line that ive defined but can be randomly distributed on the whole area on the bottom/top of the table if that helps.

If this all works out i would want to 3D-print that fixture plate so i can slide the tablelegs right in and keep them in place ( I hope that’s is somewhat comprihensable :sweat_smile: )

If i were to use Populate 2D or a random Gene Pool to define the Tablelegs most of the resulting lines would’nt even cut through the “fixture plate” in the middle as seen here.

that is also because you are formulating a complex problem made of 3 rules:

and are expecting to solve it using just two :slight_smile:

if you generate all the points at once, you are relying on the fact that randomness (luck) is on your side and there won’t be 2 or more lines colliding together, and all the lines would pass through surface B: if even one single case of any of those rules is broken, the whole solution gets discarded

what if you create points from scratch, iteratively one by one, giving constrains that a new point has to be created in a certain location at a given distance from existing ones, go to surface C through surface B making sure it avoids intersections with previously existing lines and once that is done you just create a new point using the same set of rules?

1 Like

This version uses Anemone to choose points so the piped legs don’t collide (often impossible).


Table design_2025Feb26a.gh (33.4 KB)

Reminds me of this:


with a twist!
A slightly more interesting(?) variation is to rotate each leg slightly on two axes instead of just one. This allows the crossing at the top to be in the same direction as the bottom. More complex to draw and build but better?


2 Likes

Huge Thanks to the both of you!

I tried rebuilding Joseph’s Version with a square fixtureplate so i get to understand better what each component does. After doing so i must say that i really like how it turned out :slight_smile:

Even though it isn’t exactly what i had in mind initially i am happy with the result. As inno said, if i wanted to somehow recreate this with straight lines i’d probably have to define every single point by hand which would’nt really help since i wanted that part of the design to be variable.

1 Like

What you are trying to do, is it take a geometric-structural principle often seen in architecture and furniture design (the torsion of a ruled cylinder into a paraboloid):

and apply it to a rectangle. There’s a reason why this doesn’t work. As a cylinder, the upper circle can be turned in relation to the bottom circle up to a point where the formerly vertical members lie slanted against each other and become mutually supporting. In a rectangle, you can only shift the verticals by the number of verticals on the smaller side of the rectangle after which point they begin to self-intersect:

There are a number of ways to get around this:

  • hold yourself to the restriction that you can’t shift the verticals more than the number of segmentations on the shorter side of the rectangle. But this does not allow the straight members to bundle very well the farther away the rectangle aspect ratio goes from square.

  • choose a different geometric profile for the bottom anchors; like a circle or an ellipse. This will allow you to shift verticals farther until intersection limited by the tightest curvature of the circle or ellipse occurs

  • start using curved members to avoid intersections, which is the approach Joe took. But this has the disadvantage that you are using members which in addition to having different lengths also have different curvatures, which makes it very costly and difficult to produce.

None of these solutions have the structural or geomtric elegance of the twisted cylinder. Which is why I feel you are polarized into one of two options: recreate the twisted cylinder or justify the approach you’ve chosen as an expensive “one-of-a-kind” product that embraces randomness. I’d choose the latter option, as you have, but would recommend three things.

Firstly, revise the subdivision method of the upper rectangle so that a support always find itself in a corner of the rectangle. Secondly, scale down the lower rectangular profile so that the table footprint is not as large and you can actually sit at the table (unless it’s a night stand or something like that) Lastly, provide some sort of ring (rectangular or elliptical) for the base to hold the supports, otherwise the table will be very pokey and sproingy. In much the same way, the table top will probably have an apron to hold the top end of the supports.

1 Like

The most impressive thing would be if you could get all the the curves to be the same.

1 Like

Here’s an attempt to do that…

20 lines between two rectangles / meshes. Length and collision is optimized with Kangaroo.

lines_between_planes_kangaroo.gh (31.2 KB)

3 Likes