Making a profile on specific mesh edges

Hi guys!

I’ve been strugling for some time now trying to solve this, so I figured I could ask around at the source :wink: I have tried with surfaces but didn’t manage to solve the topology part. Then I switched to meshes…

What I have is an ellipsoidal structure with the crack around it. Crack is the window, so to say. I need to draw the frame profile (see attached picture) at the designated edges. The profile should be positioned in a way that it’s averaging the angle between panels.

No need for you to draw the profile, I just need the topology solved (calculation of angles at the edges). Here’s the definition. It’s got some mesh+ components inside. (136.4 KB)


Rhino methods include topology for meshes.
There could be plugins for that, but i haven’t them, so i use small c# scripts…
am1 (32.8 KB)

  private void RunScript(Mesh M, ref object EL, ref object EF)
    int n = M.TopologyEdges.Count;
    List<Rhino.Geometry.Line> edges = new List<Rhino.Geometry.Line>();
    Grasshopper.DataTree<int> tree = new Grasshopper.DataTree<int>();
    for(int i = 0;i < n;i++){
      tree.AddRange(M.TopologyEdges.GetConnectedFaces(i), new GH_Path(i));
    EL = edges;
    EF = tree;

With .GetConnectedFaces we get all connected faces (the indexes) to a given edge (the index).
As the edge list is different from grasshopper edge tools, i’ve also extracted the actual edge line.

1 Like

First of all - thanks Riccardo for a quick reply! Very much appreciated.

Unfortunatelly thats not a complete solution. The edges have to be tested against all the adjacent mesh faces. That means it has to include all 3 neighbouring faces per each face in staklo mesh. That is why I included and merged all the meshes in the file, not just the ones in the staklo container.

I’ve tried modifying the script but without the knowledge of rhino script I cannot do much.
Isolating the interior mesh edges is something I’ve done before with basic gh + plugin components. It’s the 2 (and more) sets of meshes that have to be tested against each other is whats perplexing me.
It can also be solved by extracting the exact mesh faces from the whole ellipsoid mesh. I find the problem in designating the exact indices of staklo mesh faces.
The section detail is showing the connection between the outside wood panel with glass panel (staklo = glass in croatian).

Let me know if this needs more clarification…


am1 (161.7 KB)
Without plugins I need to use some scripts…
Another way would be to create a small circle around the middle of each edge and intersect the mesh with it, obtaining 2 point, finding the 2 normals, making average, etc etc… but that is slower and can lead to some inaccuracy.


Do that.
In your context, with triangulated structures, it is indeed wiser to work with meshes, as is a lighter geometry to handle and you are 100% sure each face is just a triangle and many other small thing useful.
Joining many triangular surfaces could lead into having small edge errors, some face could be bent (nurbs surfaces lets so), etc etc…
Mesh are better. Join the faces, “Align Vertices” to remove inaccuracies, and also use the “Combine and Clean” component to remove duplicates (not needed with Weaverbird components).
In this phase, using meshes this way is much more reliable than having a triangular-faced polysurface.

Then, see how i first generated a global mesh and then worked always referring to it.

1 Like

First the general case of this: any mesh > any chain of faces [as windows] based on FF connectivity and a rproper rule is very easy via code - via Recursion in most of cases (but you said … blah, blah). That said the R Mesh Class provides directly 7 out of the 9 possible connectivity combos - vertices/edges/faces (but is easy to write code for the remaining 2)

Second the detail is wrong: you rely on structural silicone that (a) is tricky to apply, (b) is an aesthetics disaster, (c) works for a limited amout of time and (d) is unable to manage thermal cracks (meaning that the whole thing would leak over time - as many famous buildings these days do).

The solution for the latter is to mastermind torsion free beams (*) [say: from wood] that could compose stand alone triangular “modules” [ for dealing with planarity issues with easy] that (given some rational offset - construction tolerances and the likes) can been assembled on site via bolts (hidden or exposed).

(*) I.e. relaxing a sheet like mesh via K2. Do some search for that one in this (and maybe in the old/dead Forum) and have in mind that although Daniel (the K2 man) has provided solutions via native components (and compiled K2 tools) … well … in real life you’ll need code for that,

What a tortion free beam mesh relaxation is (green == planar up to tol):

What the tri-modules (spot the offsets - for obvious rational reasons) are:


Are you after the edge normals? (as bisectors of the adjacent face normals)
Here’s a little script I made a while back to demonstrate this. (31.9 KB)

See also this older thread:


Thanks Riccardo, that did the job!

Yes, the detail is uncomplete and simplified for ease of communication.

The solution you are proposing is best suited for bigger structures. The object here is a small mountain shelter, ellipsoidal shape with cca 4.5x3.5x3.2m brutto dimensions. Shell is made of laminated wood panels 5cm thick, with T profiled metal ring serving as a window casing. Whole structure is covered with Resitrix waterproofing membrane. The object scale is so small that eventual reparations of silicone connections on windows don’t pose too much problem.

You still need some sort of connecting “tissue” between glass panels on top of those modules? (silicone?)

Can you ellaborate a little bit? Why it can’t be done via K2? The initial idea I had was to use hex panels, but then we decided to go with triangles cause ease of production. I did the K2 relaxation on hex’s…


Well … for such an ultra mini thingy why bother with “adventurous” Topologies? Size always dictates a lot of things you know and a mini Size points to some extreme simplicity (kinda attempting to tune a Fiat 500 - a good car for what it is, mind). Think more of an Ariel Atom than a glitz 911 GT3.

Anyway … if I was you I’ll opt for stand alone things (opaque: double layered marine plywood [standard panels: 1200*2400 mm so you’ll need some Shape Packing for eliminating waste] with peripheral 30-40mm plywood “nerves” [mini beams], window: same peripheral “nerves” (the triangles in the pics above) with directly attached - flush to the top - Plexi/Glass panels [you can use safely structural Silicone for such small things]). That way you can skip a variable connector (per Node) that is not that easy to design (and has no meaning for that scale).

With regard code: well … in general (for any Topology) you’ll need a lot of checks for a rational solution. Most notably you’ll need an on-the-fly control of the Nodes in order to solve things like clash issues, weird/freaky small parts, difficult angles etc etc. But truth to be said: the more the Project is a thing or a certain size … the more all these make sense.

1 Like