<?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: Sharing is Good for Everyone :) -- Spherical Terrains in ArcGIS CityEngine Questions</title>
    <link>https://community.esri.com/t5/arcgis-cityengine-questions/sharing-is-good-for-everyone/m-p/304052#M4195</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Original User: thyandrecardoso&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The CE documentation talks about terrain layer attributes and functions... Here is an example of a spherical terrain:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
attr SCALE = 1000
attr R = 500

attr elevation = 
&amp;nbsp; case sqrt( ( pow((u-0.5)*SCALE, 2) + pow((v-0.5)*SCALE, 2)) ) &amp;gt; R:
&amp;nbsp;&amp;nbsp; 0.0
&amp;nbsp; else:
&amp;nbsp;&amp;nbsp; case sqrt(R*R - (pow((u-0.5)*SCALE, 2) + pow((v-0.5)*SCALE, 2))) &amp;lt; 0:
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0
&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp; sqrt(R*R - (pow((u-0.5)*SCALE, 2) + pow((v-0.5)*SCALE, 2)))
&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 11 Dec 2021 14:34:11 GMT</pubDate>
    <dc:creator>Anonymous User</dc:creator>
    <dc:date>2021-12-11T14:34:11Z</dc:date>
    <item>
      <title>Sharing is Good for Everyone :)</title>
      <link>https://community.esri.com/t5/arcgis-cityengine-questions/sharing-is-good-for-everyone/m-p/304050#M4193</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Original User: thyandrecardoso&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Hey, I thought I might share some things here, in the sense that it might be useful to someone.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I've coded some functions to retrieve R, G and B values, given Hue Saturation and Lightness:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
hue2R(H, S, L)&amp;nbsp; =
 case S == 0.0:
&amp;nbsp; L
 else:
&amp;nbsp; hue2RGB( temp1(L, S), temp2(L, S), H + truncTo1000( 1.0/3.0 ) )
hue2G(H, S, L)&amp;nbsp; =
 case S == 0.0:
&amp;nbsp; L 
 else:
&amp;nbsp; hue2RGB( temp1(L, S), temp2(L, S), H)
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; 
hue2B(H, S, L)&amp;nbsp; =
 case S == 0.0:
&amp;nbsp; L
 else:
&amp;nbsp; hue2RGB( temp1(L, S), temp2(L, S), H - truncTo1000( 1.0 / 3.0 ) )


hue2RGB(v1, v2, vH ) =&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; //Function Hue_2_RGB
 case vH &amp;lt; 0.0:
&amp;nbsp; hue2RGB(v1, v2, truncTo1000(vH + 1.0))
&amp;nbsp;&amp;nbsp; 
 case vH &amp;gt; 1.0:
&amp;nbsp; hue2RGB(v1, v2, truncTo1000(vH - 1.0))
&amp;nbsp; 
 else:
&amp;nbsp; case truncTo1000(6.0 * vH) &amp;lt; 1.0:
&amp;nbsp;&amp;nbsp; ( truncTo1000(v1 + ( v2 - v1 )) * truncTo1000(6.0 * vH)&amp;nbsp; )
&amp;nbsp;&amp;nbsp; 
&amp;nbsp; case truncTo1000(2.0 * vH) &amp;lt; 1.0:
&amp;nbsp;&amp;nbsp; v2
&amp;nbsp;&amp;nbsp; 
&amp;nbsp; case truncTo1000(3.0 * vH) &amp;lt; 2.0:
&amp;nbsp;&amp;nbsp; ( (v1 + ( v2 - v1 )) * truncTo1000( ( 2.0 / 3.0 ) - vH) * 6.0 )
&amp;nbsp;&amp;nbsp; 
&amp;nbsp; else:
&amp;nbsp;&amp;nbsp; 0
&amp;nbsp;&amp;nbsp; 
temp2(l, sat) = 
 case l &amp;lt; 0.5:
&amp;nbsp; l * (1+sat)
 else:
&amp;nbsp; (l+sat) - (l*sat)
temp1(l, sat) = 
 (2.0 * l) - temp2(l, sat)

truncTo1000(val) = 
 truncTo(val, 1000)
 
truncTo100(val) = 
 truncTo(val, 100)
 
 
truncTo(val, order) = 
 ((rint(val * order)) / order)
&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Which allows one to do things like the ones in the pictures attached!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;################################################&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;On the python side, some really small snippets that I personally find very usefull (please don't mind possible lack of naming conventions or whatever... I'm not a python programmer):&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
def getAttrFilterFunction(ce_instance, attr, value):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return lambda x: ce_instance.getAttribute(x, attr) == value
def getAttrContainingFilter(ce_instance, attr, value):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return lambda x: value in ce_instance.getAttribute(x, attr)
def getAttrExistsFilter(ce_instance, attr):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return lambda x: attr in ce_instance.getAttributeList(x)
 # determines if shape is sidewalk
def getSidewalkFilter(ce_instance):
&amp;nbsp;&amp;nbsp;&amp;nbsp; return lambda x: ce_instance.getUUID(x).__str__().endswith(":1") or ce_instance.getUUID(x).__str__().endswith(":2")
# determines if shape is street
def getStreetFilter(ce_instance):
&amp;nbsp;&amp;nbsp;&amp;nbsp; return lambda x: ce_instance.getUUID(x).__str__().endswith(":0")
&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;For example, with these you can use the python "filter" function:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
allShapes = ce.selection()

myStreetsFilter = getStreetFilter(ce)

onlyStreets = filter(myStreetsFilter, allShapes)
&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Hey, please share other useful snippets! And please warn me about bugs in the things I've posted &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Cheers!&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;André&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 14:34:06 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-cityengine-questions/sharing-is-good-for-everyone/m-p/304050#M4193</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2021-12-11T14:34:06Z</dc:date>
    </item>
    <item>
      <title>Re: Sharing is Good for Everyone :)</title>
      <link>https://community.esri.com/t5/arcgis-cityengine-questions/sharing-is-good-for-everyone/m-p/304051#M4194</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;On the archived forums of the former Procedural, there was already some things concerning colour definitions. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I went to &lt;/SPAN&gt;&lt;A href="http://www.imagemagick.org/script/color.php" rel="nofollow noopener noreferrer" target="_blank"&gt;http://www.imagemagick.org/script/color.php&lt;/A&gt;&lt;SPAN&gt; and copied all the colour names and hex values to a CGA rule file. Normally, on each project I include that file ("misc.cga" -- actually, I symlink it) and use it for various purposes. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Having named colours, helps a lot when you are coding a building facade or whatever. I go to the site, choose the colour I want, and just copy its name:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
import misc: "misc.cga"

Lot --&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; extrude(10)
&amp;nbsp;&amp;nbsp;&amp;nbsp; color(misc.RosyBrown1)
&amp;nbsp;&amp;nbsp;&amp;nbsp; Mass.
&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The color definitions are on the attached file.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Hope it helps!&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 14:34:08 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-cityengine-questions/sharing-is-good-for-everyone/m-p/304051#M4194</guid>
      <dc:creator>AndréCardoso</dc:creator>
      <dc:date>2021-12-11T14:34:08Z</dc:date>
    </item>
    <item>
      <title>Re: Sharing is Good for Everyone :) -- Spherical Terrains</title>
      <link>https://community.esri.com/t5/arcgis-cityengine-questions/sharing-is-good-for-everyone/m-p/304052#M4195</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Original User: thyandrecardoso&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The CE documentation talks about terrain layer attributes and functions... Here is an example of a spherical terrain:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
attr SCALE = 1000
attr R = 500

attr elevation = 
&amp;nbsp; case sqrt( ( pow((u-0.5)*SCALE, 2) + pow((v-0.5)*SCALE, 2)) ) &amp;gt; R:
&amp;nbsp;&amp;nbsp; 0.0
&amp;nbsp; else:
&amp;nbsp;&amp;nbsp; case sqrt(R*R - (pow((u-0.5)*SCALE, 2) + pow((v-0.5)*SCALE, 2))) &amp;lt; 0:
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0
&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp; sqrt(R*R - (pow((u-0.5)*SCALE, 2) + pow((v-0.5)*SCALE, 2)))
&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 14:34:11 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-cityengine-questions/sharing-is-good-for-everyone/m-p/304052#M4195</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2021-12-11T14:34:11Z</dc:date>
    </item>
    <item>
      <title>Re: Sharing is Good for Everyone :) -- Spherical Terrains</title>
      <link>https://community.esri.com/t5/arcgis-cityengine-questions/sharing-is-good-for-everyone/m-p/304053#M4196</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;The CE documentation talks about terrain layer attributes and functions... Here is an example of a spherical terrain:&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
attr SCALE = 1000
attr R = 500

attr elevation = 
&amp;nbsp; case sqrt( ( pow((u-0.5)*SCALE, 2) + pow((v-0.5)*SCALE, 2)) ) &amp;gt; R:
&amp;nbsp;&amp;nbsp; 0.0
&amp;nbsp; else:
&amp;nbsp;&amp;nbsp; case sqrt(R*R - (pow((u-0.5)*SCALE, 2) + pow((v-0.5)*SCALE, 2))) &amp;lt; 0:
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0
&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp; sqrt(R*R - (pow((u-0.5)*SCALE, 2) + pow((v-0.5)*SCALE, 2)))
&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Don't know if anyone noticed, but there's a bug &lt;span class="lia-unicode-emoji" title=":face_with_tongue:"&gt;😛&lt;/span&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;To get the half&amp;nbsp; sphere, we only need this:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
attr SCALE = 1000
attr R = 500

attr elevation = 
&amp;nbsp; case sqrt( ( pow((u-0.5)*SCALE, 2) + pow((v-0.5)*SCALE, 2)) ) &amp;gt; R:
&amp;nbsp;&amp;nbsp; 0.0
&amp;nbsp; else:
&amp;nbsp;&amp;nbsp; sqrt(R*R - (pow((u-0.5)*SCALE, 2) + pow((v-0.5)*SCALE, 2)))
&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;[ATTACH=CONFIG]13095[/ATTACH]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I think sqrt is always &amp;gt; 0... lol&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The erased part might be useful if you want just the top of a sphere, to make a slightly rounded terrain. For example:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[ATTACH=CONFIG]13094[/ATTACH]&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
attr SCALE = 1000
attr R = 1500

attr elevation = 
&amp;nbsp; case sqrt( ( pow((u-0.5)*SCALE, 2) + pow((v-0.5)*SCALE, 2)) ) &amp;gt; R:
&amp;nbsp;&amp;nbsp; 0.0
&amp;nbsp; else:
&amp;nbsp;&amp;nbsp; case sqrt(R*R - (pow((u-0.5)*SCALE, 2) + pow((v-0.5)*SCALE, 2))) - 1430 &amp;lt; 0:
&amp;nbsp;&amp;nbsp;&amp;nbsp; 0
&amp;nbsp;&amp;nbsp; else:
&amp;nbsp;&amp;nbsp;&amp;nbsp; (sqrt(R*R - (pow((u-0.5)*SCALE, 2) + pow((v-0.5)*SCALE, 2))) - 1430) + elevationDelta 
&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 14:34:15 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-cityengine-questions/sharing-is-good-for-everyone/m-p/304053#M4196</guid>
      <dc:creator>AndréCardoso</dc:creator>
      <dc:date>2021-12-11T14:34:15Z</dc:date>
    </item>
    <item>
      <title>Re: Sharing is Good for Everyone :) -- Python Filters</title>
      <link>https://community.esri.com/t5/arcgis-cityengine-questions/sharing-is-good-for-everyone/m-p/304054#M4197</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Original User: thyandrecardoso&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Revisiting the filters I posted previously, I just had the epiphany (rather late though lol ) that you can be less verbose than what I proposed earlier. &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;For example, with:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
def getAttrFilterFunction(ce_instance, attr, value):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return lambda x: ce_instance.getAttribute(x, attr) == value
&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;You can do:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
&amp;gt;&amp;gt;&amp;gt; myFilter = getAttrFilterFunction(ce, "customAttr", "fantasticShape")
&amp;gt;&amp;gt;&amp;gt; fantasticShapes = ce.getObjectsFrom(ce.scene, myFilter)
&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 14:34:18 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-cityengine-questions/sharing-is-good-for-everyone/m-p/304054#M4197</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2021-12-11T14:34:18Z</dc:date>
    </item>
    <item>
      <title>Re: Sharing is Good for Everyone :) -- Simple Stairway with level</title>
      <link>https://community.esri.com/t5/arcgis-cityengine-questions/sharing-is-good-for-everyone/m-p/304055#M4198</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hey, bellow are the rules to build a simple stairway from a rectangular base.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;It is very simple, and the results are nothing spectacular, but it might be interesting for some one out there &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The pictures show how we can parametrize the function call, and control the model through the inspector...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;[ATTACH=CONFIG]15682[/ATTACH]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[ATTACH=CONFIG]15683[/ATTACH]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[ATTACH=CONFIG]15684[/ATTACH]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[ATTACH=CONFIG]15685[/ATTACH]&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[ATTACH=CONFIG]15686[/ATTACH]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
const stairStepUnitRise = 0.17
const stairStepUnitRun = 0.28
@Hidden
attr currentScopeSx = 0

## dummy, calling rule bellow with some defaults
## the level has, by default, 45% of the lenght of the shape in x
StairwayWithLevel(topColor, frontColor, levelColor) --&amp;gt;
 StairwayWithLevel(topColor, frontColor, levelColor, 0, 0, 0)

StairwayWithLevel(topColor, frontColor, levelColor, levelDim, centerDim, displacement) --&amp;gt;
 set(currentScopeSx, scope.sx)
 ## first, divide into level and two stair flight of stairs
 split(x){
&amp;nbsp; (0.45 * scope.sx) + levelDim: 
&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StairwayLevel(levelColor, currentScopeSx*0.45+ levelDim, currentScopeSx) |
&amp;nbsp; ~1: 
&amp;nbsp;&amp;nbsp; split(z){
&amp;nbsp;&amp;nbsp;&amp;nbsp; ~1 + displacement: 
&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t(0, ((rint((currentScopeSx-(currentScopeSx*0.45+ levelDim)) / stairStepUnitRun)) - 1)*stairStepUnitRise, 0) 
&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StairFlight(topColor, frontColor) |
&amp;nbsp;&amp;nbsp;&amp;nbsp; centerDim: 
&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NIL|
&amp;nbsp;&amp;nbsp;&amp;nbsp; ~1: 
&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rotateScope(0, 180, 0) 
&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StairFlight(topColor, frontColor)
&amp;nbsp;&amp;nbsp; }
 }

StairwayLevel(levelColor, length, total) --&amp;gt;
 t(0, ((rint((total-length) / stairStepUnitRun)) - 1)*stairStepUnitRise, 0)
 s('1, stairStepUnitRise, '1)
 i("builtin:cube")
 comp(f){
&amp;nbsp; top: 
&amp;nbsp;&amp;nbsp; color(levelColor)
&amp;nbsp;&amp;nbsp; set(material.specular.r, 0) 
&amp;nbsp;&amp;nbsp; set(material.specular.g, 0) 
&amp;nbsp;&amp;nbsp; set(material.specular.b, 0)
&amp;nbsp;&amp;nbsp; set(material.shininess, 0)
&amp;nbsp;&amp;nbsp; set(material.opacity, 1)
&amp;nbsp;&amp;nbsp; SetMaterial("stairwaylevel")|
&amp;nbsp; all:
&amp;nbsp;&amp;nbsp; SetMaterial("stairwaylevel")
&amp;nbsp;&amp;nbsp; 
 }

StairFlight(topColor, frontColor) --&amp;gt;
 split(x){
&amp;nbsp; ~stairStepUnitRun: 
&amp;nbsp;&amp;nbsp; t(0, (split.index)*stairStepUnitRise, 0)
&amp;nbsp;&amp;nbsp; StairwayStep(topColor, frontColor)
&amp;nbsp; |
&amp;nbsp; {
&amp;nbsp;&amp;nbsp; stairStepUnitRun: 
&amp;nbsp;&amp;nbsp;&amp;nbsp; t(0, (split.index)*stairStepUnitRise, 0)
&amp;nbsp;&amp;nbsp;&amp;nbsp; StairwayStep(topColor, frontColor)
&amp;nbsp; }*&amp;nbsp; 
 }

StairwayStep(topColor, frontColor) --&amp;gt;
 s('1, stairStepUnitRise, '1)
 i("builtin:cube")
 comp(f){
&amp;nbsp; top: 
&amp;nbsp;&amp;nbsp; color(topColor)
&amp;nbsp;&amp;nbsp; set(material.specular.r, 0) 
&amp;nbsp;&amp;nbsp; set(material.specular.g, 0) 
&amp;nbsp;&amp;nbsp; set(material.specular.b, 0)
&amp;nbsp;&amp;nbsp; set(material.shininess, 0)
&amp;nbsp;&amp;nbsp; set(material.opacity, 1)
&amp;nbsp;&amp;nbsp; SetMaterial("stairwaystep")|
&amp;nbsp; all:
&amp;nbsp;&amp;nbsp; color(frontColor)
&amp;nbsp;&amp;nbsp; set(material.specular.r, 0) 
&amp;nbsp;&amp;nbsp; set(material.specular.g, 0) 
&amp;nbsp;&amp;nbsp; set(material.specular.b, 0)
&amp;nbsp;&amp;nbsp; set(material.shininess, 0)
&amp;nbsp;&amp;nbsp; set(material.opacity, 1)
&amp;nbsp;&amp;nbsp; SetMaterial("stairwaystep")
&amp;nbsp;&amp;nbsp; 
 }

SetMaterial(name) --&amp;gt;
 set(material.name, name)
 TerminalMaterial.
&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 14:34:21 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-cityengine-questions/sharing-is-good-for-everyone/m-p/304055#M4198</guid>
      <dc:creator>AndréCardoso</dc:creator>
      <dc:date>2021-12-11T14:34:21Z</dc:date>
    </item>
    <item>
      <title>Taking Screenshots, rotating camera, looping through attrs values, making movies :)</title>
      <link>https://community.esri.com/t5/arcgis-cityengine-questions/sharing-is-good-for-everyone/m-p/304056#M4199</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Original User: thyandrecardoso&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In order to get some quick and dirty animations from some of my projects I've written some python code to do (part of) the things stated in this post's title. Namely, rotating the camera around a previously selected object, framing a selected object, changing the values of shapes attrs, regenerating the shape's model and taking a snapshot.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;This code is attached, and I've done a small (and ugly) video of this working, using the "Candler" building, from the tutorial 09:&lt;/SPAN&gt;&lt;BR /&gt;&lt;A href="http://www.youtube.com/watch?v=8lsAGXzygjU"&gt;http://www.youtube.com/watch?v=8lsAGXzygjU&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Beware, everything inside is &lt;/SPAN&gt;&lt;STRONG&gt;crappy&lt;/STRONG&gt;&lt;SPAN&gt; code &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;So, I would be very grateful if someone decided to &lt;/SPAN&gt;&lt;STRONG&gt;enhance and correct the code inside, and share it back&lt;/STRONG&gt;&lt;SPAN&gt;. Mainly the functionality for "iterateThroughAttrValues" function, which has many problems.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 20 Oct 2012 22:11:59 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-cityengine-questions/sharing-is-good-for-everyone/m-p/304056#M4199</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2012-10-20T22:11:59Z</dc:date>
    </item>
    <item>
      <title>Re: Sharing is Good for Everyone :)</title>
      <link>https://community.esri.com/t5/arcgis-cityengine-questions/sharing-is-good-for-everyone/m-p/304057#M4200</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Original User: matthiasbuehler&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Hey Andre !&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Cool work !&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Why's the model changing to black each second step ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Cheers !&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Matt&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 23 Oct 2012 11:14:53 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-cityengine-questions/sharing-is-good-for-everyone/m-p/304057#M4200</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2012-10-23T11:14:53Z</dc:date>
    </item>
    <item>
      <title>Re: Sharing is Good for Everyone :)</title>
      <link>https://community.esri.com/t5/arcgis-cityengine-questions/sharing-is-good-for-everyone/m-p/304058#M4201</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;On the script entry, one of the attr definitions says:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
'/ce/rule/wallC': {
&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;&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; 0: 0, 
&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;&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; 1: ["#FFFFFF", "#000000", "#FFFFFF", "#000000", "#FFFFFF", "#000000", "#FFFFFF", "#000000", "#FFFFFF", "#000000", "#FFFFFF", "#000000", "#FFFFFF", "#000000", "#FFFFFF", "#000000", "#FFFFFF", "#000000", "#FFFFFF", "#000000", "#FFFFFF", "#000000", "#FFFFFF", "#000000", "#FFFFFF"]
&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;&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;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The code is just going through that list of colors (white, black, white, black), for the "wallC" attr... &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;There were more interesting things to do, but I just wanted to share the code and I don't have much time to do these things :rolleyes:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Ultimately, what I've shared may not have direct utilization by others on this community, but it might spark some ideas... hope it does &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Hey Andre !&lt;BR /&gt;&lt;BR /&gt;Cool work !&lt;BR /&gt;&lt;BR /&gt;Why's the model changing to black each second step ?&lt;BR /&gt;&lt;BR /&gt;Cheers !&lt;BR /&gt;&lt;BR /&gt;Matt&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 14:34:25 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-cityengine-questions/sharing-is-good-for-everyone/m-p/304058#M4201</guid>
      <dc:creator>AndréCardoso</dc:creator>
      <dc:date>2021-12-11T14:34:25Z</dc:date>
    </item>
    <item>
      <title>Re: Sharing is Good for Everyone :)</title>
      <link>https://community.esri.com/t5/arcgis-cityengine-questions/sharing-is-good-for-everyone/m-p/304059#M4202</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Original User: matthiasbuehler&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I see.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;No, that's cool. As long it's designed.. &lt;span class="lia-unicode-emoji" title=":winking_face:"&gt;😉&lt;/span&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for sharing !!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;matt&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 23 Oct 2012 11:54:55 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-cityengine-questions/sharing-is-good-for-everyone/m-p/304059#M4202</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2012-10-23T11:54:55Z</dc:date>
    </item>
  </channel>
</rss>

