How to Properly Align a Large Shape to Terrain in Esri City Engine?

10-16-2023 12:51 AM
New Contributor

Hello everyone,

I'm facing a challenge in Esri City Engine while modeling a PV installation on a large shape. I need this shape to adapt to the underlying terrain, potentially curving along its contours. I've experimented with different approaches but haven't achieved the desired outcome yet.

1. "Align Shapes to Terrain": Unfortunately, this option only adjusts the corner points of the shape to the terrain, neglecting the entire surface. This means that the shape does not adapt as desired or that parts of the area disappear within the terrain.


2. Subdividing the Shape into a Grid and Applying "Align to Shape": Here, I encountered the issue of the rule being applied to each sub-area. I've been unable to find a way to convert these subdivided shapes back into a single entity. According to Esri's documentation, the "Union" function only works with planar surfaces. This complicates modeling the surface as a whole. 


Does anyone here have experience with similar projects and could provide some guidance? Are there specific techniques or workflows that I might have overlooked?

I appreciate any assistance!

Best regards,


0 Kudos
1 Reply
Esri Contributor

Hi @TobiasPaul,

Regardin 1) It is currently not possible to query the terrain height in CGA. The only workaround for you case that I see, is to make it a two step process:

  1. Create a grid with the size of each cell equal to one PV element
  2. Convert Models to Shapes
  3. Assign a rule to the shapes which inserts one single PV elment
  4. Align Shapes to Terrain
  5. Align Terrain to Shapes

Regarding 2) Union Shapes is a boolean operation which does merge faces of shapes together if possible, it is basically the opposite of Substract Shapes. Have you tried the Combine Shapes command instead? This should give you one big shape containing each of your sub areas as a face, In CGA you then need to do a comp(f) first before you proceed with your parcel/building rule.

Hope this helps,


0 Kudos