<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Random Heights in ArcGIS CityEngine Questions</title>
    <link>https://community.esri.com/t5/arcgis-cityengine-questions/random-heights/m-p/163967#M2207</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Thomas, your code was really helpful to understand various ways to use functions.&lt;/P&gt;&lt;P&gt;I tried this code and works perfectly, but since my plots are getting divided base on the plot dimension say, 30*40, so I am not able to figure out how to incorporate this code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Basically I split my parcels in grids using split function and generate give 30% probability to cover 30% ground cover for buildings and then randomize heights&amp;nbsp;between max floors and min floors.&lt;/P&gt;&lt;P&gt;Since I am working with FAR concepts now I have total number of floors fixed. I hope we can incorporate your code in mine.&lt;/P&gt;&lt;P&gt;Here is my code&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;&lt;SPAN style="font-size: 11px;"&gt;getHeight(row_ind, nRows, col_ind, nCols) = GfHeight + nFloors(row_ind, nRows, col_ind, nCols)*UfHeight&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 11px;"&gt;nFloors(row_ind, nRows, col_ind, nCols) = &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 11px;"&gt; case Variation_Mode == "None" || (nRows*nCols) &amp;lt; 2 : Floor_Max &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 11px;"&gt; case Variation_Mode == "Increasing" : Floor_Min + (rint((Floor_Max-Floor_Min)*((row_ind*nCols+col_ind)/((nRows*nCols)-1))))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 11px;"&gt; case Variation_Mode == "Decreasing" : Floor_Min + rint((Floor_Max-Floor_Min)*(1-(row_ind*nCols+col_ind)/((nRows*nCols)-1)))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 11px;"&gt; case Variation_Mode == "Alternating" : Floor_Min + rint((Floor_Max-Floor_Min)*((row_ind*nCols+col_ind)%2))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 11px;"&gt; case Variation_Mode == "Plot_Increasing" : Floor_Min + (rint((Floor_Max-Floor_Min)*(col_ind/(nCols-1))))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 11px;"&gt; # case Variation_Mode == "Plot_Decreasing" : Floor_Min + (rint((Floor_Max-Floor_Min)*((1-(col_ind))/(nCols-1)))) ///// Not Working&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 11px;"&gt; case Variation_Mode == "Plot_Alternative" : Floor_Min + (rint((Floor_Max-Floor_Min)*(col_ind%2)))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 11px;"&gt; else : rint(rand(Floor_Min-0.49,Floor_Max+0.49))&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@StartRule&lt;BR /&gt; &lt;BR /&gt;Lot --&amp;gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;set(Plot_Area, geometry.area)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;report("Plot Area", Plot_Area)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;Lot2&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Lot2 --&amp;gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;split(x) { Width: Col(split.index, split.total)}*&lt;BR /&gt; &lt;BR /&gt;Col(col_ind, nCols) --&amp;gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;split(z) { Length: Cell(split.index, split.total, col_ind, nCols)}*&lt;BR /&gt; &lt;BR /&gt;Cell(row_ind, nRows, col_ind, nCols) --&amp;gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;print("total cels " + (nRows*nCols))&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;print("row_ind " + (row_ind*nCols+col_ind))&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;DevelopLot(row_ind, nRows, col_ind, nCols)&lt;BR /&gt; &lt;BR /&gt;DevelopLot(row_ind, nRows, col_ind, nCols) --&amp;gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;case p(BuildPer/100) : ExtrudeBuild(row_ind, nRows, col_ind, nCols) &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;case p(OpenSpacePer/100) : Openspace &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;case p(GreenspacePer/100) : Greenspace &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;else : Greenspace&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ExtrudeBuild(row_ind, nRows, col_ind, nCols) --&amp;gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;extrude(world.y, getHeight(row_ind, nRows, col_ind, nCols))&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;split(y){GfHeight : Done. | ~1 : UpperFloors}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;UpperFloors --&amp;gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;split (y){~UfHeight : Done.}*&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 13 Dec 2017 06:26:45 GMT</pubDate>
    <dc:creator>AbhishekSobbana1</dc:creator>
    <dc:date>2017-12-13T06:26:45Z</dc:date>
    <item>
      <title>Random Heights</title>
      <link>https://community.esri.com/t5/arcgis-cityengine-questions/random-heights/m-p/163965#M2205</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have split my parcel into different part and extruded building with 30% case, as shown in image&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;IMG class="image-1 jive-image" src="https://community.esri.com/legacyfs/online/390420_pastedImage_3.png" style="width: 260px; height: 213px;" /&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is there a way where I can randomize the height with constant number of floors. For example, I have total number of floors 30, and I want to&amp;nbsp;randomize the number of floors between&amp;nbsp;5(min floors) to 10(max floors) floors, In end the total number of floors should be 30. Similarly having control like first building lot should be with number of floors 10&amp;nbsp;and then decreasing with total number of floors 30.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 11 Dec 2017 07:06:44 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-cityengine-questions/random-heights/m-p/163965#M2205</guid>
      <dc:creator>AbhishekSobbana1</dc:creator>
      <dc:date>2017-12-11T07:06:44Z</dc:date>
    </item>
    <item>
      <title>Re: Random Heights</title>
      <link>https://community.esri.com/t5/arcgis-cityengine-questions/random-heights/m-p/163966#M2206</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you for this interesting question. If you want an exact number of floors, you need to influence the random floor number generation. Therefore you need to keep track of all floors generated. In a regular split operation this information is unavailable. The only way I achieved this, is by using a recursive tile generation.&lt;/P&gt;&lt;P&gt;&lt;IMG class="image-1 jive-image" src="https://community.esri.com/legacyfs/online/390592_pastedImage_1.png" style="width: auto; height: auto;" /&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&lt;CODE&gt;version &lt;SPAN class="string token"&gt;"2017.1"&lt;/SPAN&gt;

&lt;SPAN class="keyword token"&gt;const&lt;/SPAN&gt; floorHeight &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;3&lt;/SPAN&gt;

&lt;SPAN class="keyword token"&gt;const&lt;/SPAN&gt; minFloors &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;5&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;const&lt;/SPAN&gt; maxFloors &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;10&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;const&lt;/SPAN&gt; totalFloors &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;30&lt;/SPAN&gt;

attr floors &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;
attr floorsRemaining &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; totalFloors

&lt;SPAN class="keyword token"&gt;const&lt;/SPAN&gt; parcelsX &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;4&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;const&lt;/SPAN&gt; parcelsZ &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;5&lt;/SPAN&gt;
attr parcelsRemaining &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; parcelsX &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt; parcelsZ

&lt;SPAN class="comment token"&gt;// const probabiltity = totalFloors / (parcelsX * parcelsZ * (minFloors+maxFloors)/2)&lt;/SPAN&gt;
&lt;SPAN class="keyword token"&gt;const&lt;/SPAN&gt; probabiltity &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0.3&lt;/SPAN&gt;

getFloorHeight &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="keyword token"&gt;case&lt;/SPAN&gt; parcelsRemaining &lt;SPAN class="operator token"&gt;==&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; floorsRemaining
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="keyword token"&gt;case&lt;/SPAN&gt; floorsRemaining&lt;SPAN class="operator token"&gt;/&lt;/SPAN&gt;parcelsRemaining &lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; maxFloors&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;min&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;maxFloors&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; floorsRemaining&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;minFloors&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="keyword token"&gt;case&lt;/SPAN&gt; floorsRemaining &lt;SPAN class="operator token"&gt;&amp;lt;=&lt;/SPAN&gt; maxFloors&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;float&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;p&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;probabiltity&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt; floorsRemaining
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="keyword token"&gt;else&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="keyword token"&gt;float&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;p&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;probabiltity&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;floor&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;rand&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;minFloors&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;min&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;maxFloors&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; floorsRemaining&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;minFloors&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;

Lot &lt;SPAN class="operator token"&gt;--&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="token function"&gt;s&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;scope&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;sx&lt;SPAN class="operator token"&gt;/&lt;/SPAN&gt;parcelsX&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;scope&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;sz&lt;SPAN class="operator token"&gt;/&lt;/SPAN&gt;parcelsZ&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="token function"&gt;SplitXZ&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;

&lt;SPAN class="token function"&gt;SplitXZ&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;i&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;j&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;--&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="keyword token"&gt;case&lt;/SPAN&gt; i&lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;parcelsX&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="token function"&gt;set&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;parcelsRemaining&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; parcelsRemaining&lt;SPAN class="number token"&gt;-1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="token function"&gt;set&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;floors&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; getFloorHeight&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="token function"&gt;set&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;floorsRemaining&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; floorsRemaining &lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt; floors&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Floors
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="token function"&gt;t&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;scope&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;sx&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="token function"&gt;SplitXZ&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;i&lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;j&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="keyword token"&gt;else&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="keyword token"&gt;case&lt;/SPAN&gt; j&lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt;parcelsZ&lt;SPAN class="number token"&gt;-1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="token function"&gt;t&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;-&lt;/SPAN&gt;scope&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;sx&lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;parcelsX&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;scope&lt;SPAN class="punctuation token"&gt;.&lt;/SPAN&gt;sz&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="token function"&gt;SplitXZ&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;j&lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="keyword token"&gt;else&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; NIL

Floors &lt;SPAN class="operator token"&gt;--&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="token function"&gt;extrude&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;floors&lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;floorHeight&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="token function"&gt;report&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="string token"&gt;"floors."&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;str&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;floors&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="token function"&gt;split&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;y&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;floorHeight&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; Color&lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt;

Color &lt;SPAN class="operator token"&gt;--&lt;/SPAN&gt;&lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="keyword token"&gt;case&lt;/SPAN&gt; floors &lt;SPAN class="operator token"&gt;&amp;gt;&lt;/SPAN&gt; maxFloors&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;color&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="keyword token"&gt;case&lt;/SPAN&gt; floors &lt;SPAN class="operator token"&gt;&amp;lt;&lt;/SPAN&gt; minFloors&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;color&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="keyword token"&gt;else&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;:&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;color&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;1&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 08:35:36 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-cityengine-questions/random-heights/m-p/163966#M2206</guid>
      <dc:creator>ThomasFuchs</dc:creator>
      <dc:date>2021-12-11T08:35:36Z</dc:date>
    </item>
    <item>
      <title>Re: Random Heights</title>
      <link>https://community.esri.com/t5/arcgis-cityengine-questions/random-heights/m-p/163967#M2207</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Thomas, your code was really helpful to understand various ways to use functions.&lt;/P&gt;&lt;P&gt;I tried this code and works perfectly, but since my plots are getting divided base on the plot dimension say, 30*40, so I am not able to figure out how to incorporate this code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Basically I split my parcels in grids using split function and generate give 30% probability to cover 30% ground cover for buildings and then randomize heights&amp;nbsp;between max floors and min floors.&lt;/P&gt;&lt;P&gt;Since I am working with FAR concepts now I have total number of floors fixed. I hope we can incorporate your code in mine.&lt;/P&gt;&lt;P&gt;Here is my code&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;&lt;SPAN style="font-size: 11px;"&gt;getHeight(row_ind, nRows, col_ind, nCols) = GfHeight + nFloors(row_ind, nRows, col_ind, nCols)*UfHeight&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 11px;"&gt;nFloors(row_ind, nRows, col_ind, nCols) = &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 11px;"&gt; case Variation_Mode == "None" || (nRows*nCols) &amp;lt; 2 : Floor_Max &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 11px;"&gt; case Variation_Mode == "Increasing" : Floor_Min + (rint((Floor_Max-Floor_Min)*((row_ind*nCols+col_ind)/((nRows*nCols)-1))))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 11px;"&gt; case Variation_Mode == "Decreasing" : Floor_Min + rint((Floor_Max-Floor_Min)*(1-(row_ind*nCols+col_ind)/((nRows*nCols)-1)))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 11px;"&gt; case Variation_Mode == "Alternating" : Floor_Min + rint((Floor_Max-Floor_Min)*((row_ind*nCols+col_ind)%2))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 11px;"&gt; case Variation_Mode == "Plot_Increasing" : Floor_Min + (rint((Floor_Max-Floor_Min)*(col_ind/(nCols-1))))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 11px;"&gt; # case Variation_Mode == "Plot_Decreasing" : Floor_Min + (rint((Floor_Max-Floor_Min)*((1-(col_ind))/(nCols-1)))) ///// Not Working&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 11px;"&gt; case Variation_Mode == "Plot_Alternative" : Floor_Min + (rint((Floor_Max-Floor_Min)*(col_ind%2)))&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-size: 11px;"&gt; else : rint(rand(Floor_Min-0.49,Floor_Max+0.49))&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;@StartRule&lt;BR /&gt; &lt;BR /&gt;Lot --&amp;gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;set(Plot_Area, geometry.area)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;report("Plot Area", Plot_Area)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;Lot2&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Lot2 --&amp;gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;split(x) { Width: Col(split.index, split.total)}*&lt;BR /&gt; &lt;BR /&gt;Col(col_ind, nCols) --&amp;gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;split(z) { Length: Cell(split.index, split.total, col_ind, nCols)}*&lt;BR /&gt; &lt;BR /&gt;Cell(row_ind, nRows, col_ind, nCols) --&amp;gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;print("total cels " + (nRows*nCols))&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;print("row_ind " + (row_ind*nCols+col_ind))&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;DevelopLot(row_ind, nRows, col_ind, nCols)&lt;BR /&gt; &lt;BR /&gt;DevelopLot(row_ind, nRows, col_ind, nCols) --&amp;gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;case p(BuildPer/100) : ExtrudeBuild(row_ind, nRows, col_ind, nCols) &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;case p(OpenSpacePer/100) : Openspace &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;case p(GreenspacePer/100) : Greenspace &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;else : Greenspace&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ExtrudeBuild(row_ind, nRows, col_ind, nCols) --&amp;gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;extrude(world.y, getHeight(row_ind, nRows, col_ind, nCols))&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;split(y){GfHeight : Done. | ~1 : UpperFloors}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;UpperFloors --&amp;gt;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;split (y){~UfHeight : Done.}*&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 13 Dec 2017 06:26:45 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-cityengine-questions/random-heights/m-p/163967#M2207</guid>
      <dc:creator>AbhishekSobbana1</dc:creator>
      <dc:date>2017-12-13T06:26:45Z</dc:date>
    </item>
  </channel>
</rss>

