Creating space frame trusses on trimmed surface

Hello,

I am trying to create space truss on trimmed surface, I have tried with lunchbox space truss scripts, also with divide domain script. Each of them creates grids, elements outside of the roof boundary.
In this forum, I saw someone suggests mesh machine tool by Kangaroo component to create this grids on a trimmed surface, but I could not find it in Rhino 8 grasshopper. Moreover I am not sure if it is going to work for my purpose.
Can anyone help me with this ? Below you can find the screenshots.
Thank you.


That’s very easy via code:

I could provide a very indicative take (C#) on that matter. That said posting any real-life solution is out of question.

What real-life means? It means connectivity, clash detection and nested Instance Definitions (for all the “detailed” parts as found in real-life trusses) . Plus interactive on the fly modification on a per node basis (general case: using any BrepFace/Mesh as a “template”)

Hello again,
I am still handling with this issue and I checked your post that you mentioned some solution that you use, which is great. Do not want to be disrespectful for your huge effort but is there any chance that you can share your gh scripts? The way you created gh scripts and space frames are beyond my experience and knowledge.
Kind Regards,

All these are 100% C# driven meaning: not a single native component is used.

Some tips:

  1. Get a BrepFace and do a quad Mesh out of it (there’s a native component I think but I can’t recall the name). Get the Islands (if they exist). Triangulate if required.

On a per Island Mesh basis:

  1. Get the FF and FV Connectivity out of that Mesh. Plus compute the FaceNormals.
  2. W type trusses are in real life described using 5 Lists (and the required Connectivity Trees that have 3 dim paths): the base nodes (VB), the “top” nodes (VT), the base connections (EB), the W connections (EW) and last the top connections (ET). There’s various pragmatic reasons for this kind of data classification.
  3. During the population of these 5 Lists you should create the Truss Connectivity Trees (using the Mesh Conn Trees > see 2) as well (where the indices involved are the indices of the items in the corresponding Lists).
  4. For each TopologyVertex in the Mesh create the VB List. For each TopologyEdge in the Mesh create the EB List. For each Mesh Face using the FV Tree get the adjacent vertices and the Apex Pt (face center + face normal * H) and create the EW List and the VT one. Using the FF Tree connect the Apexes (VT pts) taking care NOT to sample twice the same connection: that’s your ET List.
  5. So you have the axis/nodes on hand. This means NOTHING: you’ll need clash checks because in real life a truss is made via struts, nuts, sleevers, bolts, cats and dogs. Clash checks without Connectivity are 100% impossible (using Trigonometry and not “solid” Ccx checks) .That part is rather impossible without code (notably the Methods required to change on the fly nodes that yield clash events).

All in all: a real-life truss on any curvy BrepFace is NOT a task for a novice (not even for an advanced user who can’t code). Nor has any meaning to create abstract collections of axis (Lines). All that before the envelope is invited to the party.

BTW: If you have some sort of flat Polyline collection and you want a truss that “follows” the resulting BrepFace … just triangulate the Face [MeshMachine and the likes] and then do a Truss out of the resulting Mesh (the last pic [var W height due to attractors) outlines rather clearly the need for clash checks.



1 Like

you’ll want to re-construct your geometry so that it’s a collection of untrimmed surfaces, like on the right. fyi, i used _srfpt

pass each untrimmed surface to your truss making algo

edit: you’ll probably want to manually draw the missing lines when you’re satisfied with the overall design. should take a few minutes