Divided Surface by Intersection

Massing Test_R16_2


I am trying to divide a surface selected from the face of a mass by reference planes. The form is made up of a series of triangular planes which do not respond well to quadrilateral division (like quad grid by face) due to the fact that 3 and 5 sided figures are produced and the overhanging panel issue. My thought was that I could create a series of ref planes and intersect them with the divided surface. Then I’m still faced with the issue of how to let Dynamo know how to populate the 3,4 and 5 sided panels with different adaptive components. I’ve been banging my head against this all day but can’t figure out what the approach would be as well as how the nodes that should do this work?

What I want to do is:

  1. Select face (or faces)

  2. Select a list of reference planes

  3. Intersect the two lists and create a divided surface.

  4. Populate divided surface with curtain panels (either curtain pattern or adaptive component)


1 Like

Haven’t studied your files, but seems like referring to this discussion might help



Vikram, thank you so much for your reply, this is exactly what I was looking for. I tried running your code block on my triangular surface, which produced errors that a noob like me doesn’t really understand. I also downloaded your package Testing waters and ran it against the surface and the output nodes came up empty.

What am I doing wrong?!

Massing Test_R16_2


Divided Surface

1 Like

…and to complicate matters. I’ve run the <em style=“font-weight: 300;”>Surface.DivideByIsolineGrid node on two different triangular surfaces. When the surface is generated within Dynamo the solution works, when selected from a mass face it produces empty lists…


Surface from Mass Face + Dynamo

Divided Surface_fromMassFace Divided Surface_fromPoints

1 Like

Try this, works with the surface you’d selected in the attached file…

File: divideSurface20160506.dyn



Also realized that the version of Surface.DivideByIsolineGrid in the Testing Waters package was a little outdated.

A version updated on Dec 4, 2015 on searching for Surface.DivideByIsolineGrid in the package manager should work well.

Otherwise download the package again (I just updated it).

Apologies for the confusion on account of the duplicate nodes.








Vikram, this is a pretty amazing code block, and I’m going to apologize ahead of time for all the questions.

I’ve applied the code to all 4 surfaces of an elevation with a very basic AC and noticed a few inconsistencies.

  1. On the top plane the horizontals are skewed out of plane slightly (highlighted in yellow). The other 3 faces have perfectly plumb and level verticals and horizontals.

  2. The output of the 3,4 and 5 sided Vertices is not consistent on all surfaces. Surface 1 was correct. For Surface 2 and 3 “Vertices 4” gave lists of 5 vertices and “Vertices 5” gave lists of 4 vertices.

What would i need to modify in the block to modify the isoline location by distance rather than range. For example, setting the isoline division on the Bounding Box to be a certain panel division both horizontally and vertically and then projecting those lines to the angled planes so in elevation the dimensions are consistent. Also being able to control start point and offset of the isolines would be useful so one can align between panels.

Again, thank you for all your help.


Massing Test_2

Divided Surface_byDistanceandOffset

1 Like

Here is an altered file should resolve the second issue you’ve mentioned above.

The first issue, I haven’t yet looked at.

File: divideSurface20160508.dyn



Massing Test_R16

Hi Vikram,

I’m still struggling with this definition. I’ve tried recreating your code block in node form which performs the following operations:

  1. Select multiple surfaces

  2. Create Bounding box around set of surfaces, explode bounding box and select face that will define grid

  3. Divide boundbox face by isolines, extrude isolines, and intersect with original surface geometry

  4. Split original surfaces to get 3, 4, and 5 sided surfaces…then I’ll need to collect points to drive adaptive components

And this is where I get totally hung up! As you know Dynamo will the split the surface into a long list of sublists each with two surfaces and I haven’t found a solution.

The reason I am attempting to rebuild your code block is because eventually I will need to divide these surfaces by dimension and not a set of isolines, also the grid needs to be continuous from surface to surface. Can you nudge me in the right direction?

Thank you


1 Like

If this what you were trying to achieve, hope the comments and cryptic variable names explain the process adequately.

You should be able to take this forward and group the subdivided surfaces by the number of vertices.

Revit: Massing-Test_20160514.rvt

File: DivideSurfaces-20160514.dyn