Solar Panels based on panel size (Regular surface)

Hello Everyone,

I am a newbie in the world of Dynamo and need your assistance to go further in my exploration of creating solar panels on a regular rectangular sloped surface. I am trying to create a set of grid points based on the size of solar panels (flexible) , so that I can go ahead and turn them into a set of quads. Until now I am able to divide the surface in the ‘U’ direction as intended, However I want to reverse the order of points that have been created based on a boolean value. I am planning to use the same approach even in the ‘V’ direction to create the set of points. It would be really helpful if anybody can help me go further or have a better solution than this approach. The aim further:

  1. To create the solar panels using quad points.
  2. Find the possible collision with other revit objects (Link files, IFC files) and not to place panels in those areas or display the panels colliding in another colour.
  3. By using the centroid of each polygon created, place the solar panels in the Revit model.

Thanks in advance. It would be of great help.


Instead of quad points you should look into a single surface being arrayed by coordinate systems. Surface.CoordiantSystemAtParameter should get you started there. Then use a Geometry.Transform node to push your uniformly sized rectangles/surfaces around the limits of the surface. These can then be tested for containment inside the extents of the surface, as well as against other objects.

1 Like

@JacobSmall Thank you for your response. With your expertise, I wanted to know if there is a way that we can tweak a little bit to get the required results. I am currently able to produce the panels on the surface. The method which I have used is to select a surface and two edges with which I am able to determine the point of intersection of the two edges (Primary and one of the secondary edges). However, I am not able to drive the laying of panels from the point of intersection of edges. The idea is to only count the full panels. If this doesn’t work then will try to go ahead with your idea. Thank you again.


1 Like

Can’t read your graph, post the image created by zooming in on a node so the name is clearly legible and use the “export canvas as image” function in the top right (looks like either a camera or says ‘export’, depending on your build). That will catch all nodes on the canvas, even if you can’t see them once zoomed.

From my experience though, you’re going to have a much easier time with coordinate system propagation, and then culling the intersecting units from the list. Look into drawing a curve 2x as long as the surface’s diagonal by a given rotation, placed with the center at some UV location. Then offset that curve by your row spacing on the + and - direction to fill the diagonal of the surface, trim the curves by the surface, and start to propogate coordinate systems by the panel width.