Please use the attached DGN or GCT files as reference for this short tutorial. These are for GenerativeComponents V8i SELECTseries 6 Update 1 (v.08.11.09.436).
renovatedTowerByReplication.dgn https://communities.bentley.com/cfs-file/__key/communityserver-wikis-components-files/00-00-00-00-28/renovatedTowerByReplication.gct
As point of departure we used a script "TowerByReplication" (transactions 1 through 7).
The Graph reveals that half the nodes are Slider nodes controlling what the result looks like. The basic circular arrangement of points (point01) is copied as point02 based on the replicated coordinateSystem01, which is a cylindrical coordinate system. Even though the copied point rings are rotated based on the overall "rotation", they are still very much straight copies of the first point ring, just moved up vertically (and rotated); therefore, this parametric model generates a cylindrical point grid. Polygon.ByPointGrid polygon01 uses that point grid to form the envelope of a cylindrical tower:
While this may be a sufficiently interesting result in some urban context, it is relatively easy to construct an alternative solution with a more dynamic silhouette.
In transaction 8 a LawCurve is added. As Independent variable input, an Expression is used "Series(0, numFloors, 1)", which means that the independent variable counts up the floors from zero to the total number of floors in increments of one.
In transaction 9 we place a CoordinateSystem.ByUniversalTransform, coordinateSystem02, parallel to the coordinateSystem01 of the cylindrical tower, using for ZTranslation the same expression "Series(0, numFloors * floorHeight, floorHeight)" used in coordinateSystem01. For ZRotation we use the same expression used in the Theta input of coordinateSystem01, "SeriesByCount(0, rotation, numFloors + 1)". For XScale and YScale we use the Dependent variable output generated by the law curve. Depending on the manipulation of the curve, the dependent variable, which is a list of values with one entry for each floor as provided by the independent variable input, changes its values, thus changing the scale of several floors and, consequently, the shape of the tower which we still need to construct.
In transaction 10 we add point03 analogously to point02 for the cylindrical tower. However, for point03 we use coordinateSystem02, and it becomes immediately obvious that the alternative tower will be a bit more dynamic than the cylindrical tower.
This becomes more obvious when adding polygon02 in transaction 11:
The remaining transactions hide the envelope of the cylindrical tower, add polygon03 as "floor plates" and change the law curve to change the alternative towers silhouette.