Simplifying Script _ Calculating Vault Intersections & Subtractions

Good Afternoon Forum,

I have built a script (quite clunky!) in which a set number of points form columns, then spring up to form vaults/funnels, which are then joined to form a canopy structure. The canopy structure has a number of attractor points pulling it higher at some of its edges.

The inputs which I have set up (and would like to keep) are as follows:

  • A origin of columns (in model space)
  • B diameter of columns (number)
  • C spring point of vault (number)
  • D diameter of funnel top (number)
  • E height of funnel top (number)
  • F position of attractor (in model space)
  • G height of attractor pull (number)
  • H position of hole centres (in model space)
  • J diameter of holes in canopy (number)

There are two issues I am having with refining the canopy structure design, which are shortfalls of the clunky script:

  • 1 - the method of creating the canopy outline around the funnel tops errors if the vaults/funnels overlap & so relies upon flat surface between funnels
  • 2 - the method of subtracting holes also errors often if the holes are large or intersect with the canopy boundary

Is there anyone who might be able to advise how to simplify the script, and also achieve solutions to the two main issues:

  • 1 - help resolve intersections between funnels/vaults smoothly
  • 2 - help resolve subtraction of holes that are larger and may intersect with boundary

If anything is unclear, please let me know. Any assistance with this would be greatly appreciated.

Best wishes,

296_3D_Q_230620.3dm (19.8 MB) (47.9 KB)

I would strongly advise the following approach:

  1. Define a flat BrepFace where holes are the base of the columns.
  2. Triangulate (using something the likes of MeshMachine or Delauney [ but that’s a bit tricky]).
  3. Use K2 to relax the flat Mesh where clothed edges must have a different spring force value than the naked ones (exactly as we do in tensile membranes). More complex ways for that (variable spring forces “near” the column base) … well … these require code so forget it.
  4. Use a unary force (neg gravity so to speak) in order to inflate the Mesh “up” (pos Z).
  5. All naked vertices related with the holes are your anchors.
  6. As an option mastermind some plastic Anchor policy for the naked vertices that are not holes.

I could provide an entry level demo on all that … but using solely C# (not a single native component on sight) meaning … the obvious.

See this as well (not a vault … but more or less “similar”).

And this (“kinda” a vault)

Hey Peter,

Thanks for your response and suggestions, however setting the actual origin, diameter and spring point of the ‘columns’ (A, B, C above) as they vault/funnel is important for the form - which I think I would lose if using only forces to stretch the mesh ?


In ganeral the form (any form) can been “shaped” into a million Topologies … as far you can control Forces/Plastic Anchors/Other Goals/etc : that’s why I said that a more elaborated take on that is - for a start - variable spring Force values … kinda using the center of column (at Z = 0) as some sort of attractor. That is very easy to achieve via code (and I guess via components as well).

In any case a Mesh (that said I hate meshes) is the thing to do/deform because at the end … well … you should do something realistic with your abstract envelope… like a classic W truss or standalone torsion free modules or whatever

That said I have stuff for what you want … but is strictly internal (and is not vault like because I hate “classic” vaults: pathetic to the max):

But If I was you: K2 is the way to go (plus by altering values you can have ultra freaky/kitsch aesthetics [ a big plus these days]).

See another concept on that (easy to get the gist)