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.
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.
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.
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).
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).