Grasshopper

algorithmic modeling for Rhino

Hi all,

There is probably a super trivial way of doing this, but I've tried my best and just can't figure it out.

I have applied a Weaverbird Frame transformation to a base mesh, which gives me a subdivided mesh of quads with (triangular or quad) holes at their centres. 

I want to create a new mesh that "fills in" the areas of those holes. So if the Weaverbird frame mesh are "window frames," I want to create the "glazing panels" that sit within them.

Simplified, given three mesh quads (A, B, C) that connect at the corners, how can I select the closed curve defined by those of their edges that share a vertex. and turn this into a new mesh (D)? (See ugly illustration attached.)

I've looked through a lot of posts about culling duplicate vertices, but I want to do the opposite: retain and use those duplicates. Anyone?

Thank you so much in advance!

Views: 1614

Attachments:

Replies to This Discussion

Adding the Rhino file for the example if someone wants to give it a go. Cheers.

Attachments:

Thanks Tom, that's sort of what I'm after - but as you say, the difficulty is to find the vertices/indices in the first place.

The component CullDupPoints removes duplicate points - maybe one way would be to make two lists of vertices, throw CullDupPoints at one of them, then compare the lists to find the duplicated vertices, and then add a face between those points. But I'm not good enough with lists yet to figure out how to do it, or indeed if that's the best way forward.

I do have the mid points of each face of the base mesh, so that approach sounds promising too.

Hm...

Well ...

Not sure if I'm 100% off-topic but you need to have a window AND a frame mesh on some mesh right? Like this? (blue = poly-carbonate/glass, black = steel/wood/aluminum).

If so there's a WB thingy that does this (see attached: using MeshMachine for the demo stuff).

If not finding inner loops (kinda the inner loops on BrepFaces) on meshes requires coding using classic mesh connectivity trees (vertices to vertices etc etc) and Lists intersections.

Attachments:

Peter, thank you so much - that's it! Truly grateful you took the time to point that out to me.

Weaverbird's Mesh Window. Kudos to you, and to Giulio for writing such an ace component in the first place. 

[Exhales and reaches for napkins to wipe wall-banged forehead]

So ... if you have holes to fill use Tom/Anders stuff. If not call Giulio.

BTW: If you like inflated stuff (Allianz Arena and other ugly things like this) give the attached a spin.

BTW: That said the window thingy is easy to do with code. Works with a "similar" way to the one used in the C# (right after the WB window) that makes the surfaces out of tri/quad meshes.

PS: An engineer always needs generous reserves of napkins (and espresso/cigars).

Attachments:

Indeed

Here's a simple RhinoCommon/GHPython solution using naked edges for identifying and subsequently filling mesh face holes (tris and quads) that might help:


Note that for more "exotic" holes, such as the one I've circled in red, you'll need to further define special cases that you want to resolve (for instance, you could also close holes that have more than four edges by triangulating the closed polyline that forms the hole, and then adding each of these triangles to the mesh face list).

Hope that helps a bit :)

Forget to upload the file, there you go..

Attachments:

RSS

About

Translate

Search

Photos

  • Add Photos
  • View All

Videos

  • Add Videos
  • View All

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service