Workflow for Connecting Pipes Tangentially in a Complex 3D Structure

Hello,

I’m working on a complex 3D construction in Rhino 7 consisting of many pipes of the same diameter. The pipes are arranged spatially in such a way that each pipe connects to 1–4 other pipes through tangential contact. These tangential connections are essential to the design and structure, but the lack of predefined geometric reference points makes the process challenging.

For the entire structure, I need a reliable workflow to position and align pipes tangentially to others without overlaps or additional contacts. However, for now, I’m seeking advice on a smaller task to get started:

How can I position a pipe tangentially to two other pipes in 3D space, where no explicit geometric reference points are provided, and the tangents must be calculated spatially?

I’d greatly appreciate any insights into workflows, Rhino tools, or scripts that could help streamline this process, both for this initial problem and for the larger construction.

Thank you in advance for your help!




Hi Olga,

Here is a basic workflow that allows you to position a new rod accurately against two existing ones. Assuming the rods are the same diameter, D, the important constraint is that the minimum distance between two touching rods’ centrelines will also be D (assuming both rods are the same diameter. The process of setting them out is straightforward but tedious, so you may want to consider automating it with Grasshopper, particularly if you want to tweak positions.

  1. Draw two centrelines for the initial rods.

  2. Pipe them to create the rods.

  3. Draw a line between the two centrelines to indicate approximately where the new rod is to go. Note that this is not the centreline of the new rod.

  4. Create a 3-point plane using the ends of one centreline and the far end of the connecting line.

  5. Repeat for the second centreline and the connecting line.

  6. For each plane, use Line Normal to Surface to create a line normal to the plane at the point where the centreline and the connecting line meet. This Normal line’s length should be equal to D, the rods’ diameter.

  7. Draw a line between the free ends of the two Normals. This will be the centreline of the new rod. You can extend this or scale it to increase the overall length to what you want (if scaling, be careful not to alter the alignment of the line).

  8. pipe the line to create the new rod.

  9. If you examine the position of the new rod against the two originals, it should be just touching them (note that the Intersection command may not recognise this contact).

  10. You can repeat this process for additional rods.

Construction v2.3dm (135.1 KB)

HTH
Jeremy

3 Likes

Thank you so much, Jeremy!
This turned out to be the best workflow. I translated it into Grasshopper, and it works perfectly.

I’ve attached the Grasshopper script here. It automates the process of positioning a pipe tangentially to two others in 3D space.

All the best,
Olga

Pipe_Tangential_Placement.gh.gh (22.6 KB)

1 Like