<?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: Gable/Hip Overhang and Testing against overlaps in ArcGIS CityEngine Questions</title>
    <link>https://community.esri.com/t5/arcgis-cityengine-questions/gable-hip-overhang-and-testing-against-overlaps/m-p/584002#M7894</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;So ...&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;This does &lt;/SPAN&gt;&lt;STRONG&gt;not &lt;/STRONG&gt;&lt;SPAN&gt;seem totally possible with the engine, my rough starting point for those interested:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;#insure direction of Gable is aligned&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;doCreateGableRoof --&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case scope.sx &amp;gt; scope.sy :&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; roofGable(InternalRoofAngle,InternalRoofOverhang, InternalRoofOverhang, false, 1)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; doCreateGableRoofSideRemove(isCorner )&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; roofGable(InternalRoofAngle, InternalRoofOverhang, InternalRoofOverhang, false, 0)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; doCreateGableRoofSideRemove(isCorner )&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;#get the side section out of a gable roof&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;doCreateGableRoofSide --&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; comp(f) {top=doCreateGableRoofTest | bottom:NIL | side:col.PINK }&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;#see if the roof top section has more than 2 faces if so different case (ie:not possible with engine..lots of hacking needed)&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;doCreateGableRoofVolumeTest--&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; case&amp;nbsp; geometry.nFaces() &amp;gt; 2:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-style:italic;"&gt;col.RED&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; else: #this should be triangle overhang&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; split(x) { InternalRoofOverhang: doSplitTestExtrude &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; | ~1: col.ORANGE #middle section,will need another split for long edge&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; | InternalRoofOverhang:doSplitTestExtrude&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;#extrude &lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;doSplitTestExtrude--&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; extrude(world.y, -RoofThickness)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; doCreateTouch&lt;/SPAN&gt;&lt;BR /&gt;&lt;STRONG&gt;&lt;BR /&gt;#test overlap if it overlaps NIL out and clean up edge&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;doCreateTouch()--&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case overlaps(inter): #overlap so cap end&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; split(x) { RoofThickness/2:col.GREEN| ~1:NIL }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; else : # all good so cap end&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; split(x) {&amp;nbsp; ~1:col.ORANGE |RoofThickness/2:col.GREEN}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;my lesson so far is the programming language needs further development to be considered a complete procedural modeling tool.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 22 Mar 2014 23:00:27 GMT</pubDate>
    <dc:creator>curtedmonds</dc:creator>
    <dc:date>2014-03-22T23:00:27Z</dc:date>
    <item>
      <title>Gable/Hip Overhang and Testing against overlaps</title>
      <link>https://community.esri.com/t5/arcgis-cityengine-questions/gable-hip-overhang-and-testing-against-overlaps/m-p/584001#M7893</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi All, &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The problem I face is I would like to create a roof with volume (not just a flat poly but with height extrusion) and overhang.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Then test this overhang (on a gable or hip roof) and remove if it touches another building or roof section.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#1 The complications with this is the roof section overhang (side next to removed one) should adjust accordingly.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#2 The volumes are not just rectangles ..includes T and U based volumes&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#3 extrusions should be on whole roof as single poly to avoid internal and unwanted polys.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;things stopping me further:&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#direction great for rectangles but not for other shapes&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;doCreateGableRoof(isCorner ) --&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case scope.sx &amp;gt; scope.sy :&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; roofGable(InternalRoofAngle,InternalRoofOverhang, InternalRoofOverhang, false, 1)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; doCreateGableRoofSideRemove(isCorner )&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; roofGable(InternalRoofAngle, InternalRoofOverhang, InternalRoofOverhang, false, 0)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; doCreateGableRoofSideRemove(isCorner )&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#test seem to fail when U and T shapes and other unknown volumes &amp;gt; 8 vertex&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#tests have to be volumes so I have to cut roof at overlap section&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#orientation unknown&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#sides don't know if a touch has happened to side next to itself&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#false test , one needs to know which is the long section (gable) so a split can be created at length ends to test &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;and a few others I can remember...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;some ideas:&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;#just move roof up and find way to create overhang after the roof is created (dont know options for this) extrude down to create illusion of roof volume&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#slice and dice everything on extruded volume (poly count = &lt;span class="lia-unicode-emoji" title=":disappointed_face:"&gt;😞&lt;/span&gt;&amp;nbsp; )&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#give up...&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#find hidden function that does this&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;any ideas welcome&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;c&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 17 Mar 2014 17:47:21 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-cityengine-questions/gable-hip-overhang-and-testing-against-overlaps/m-p/584001#M7893</guid>
      <dc:creator>curtedmonds</dc:creator>
      <dc:date>2014-03-17T17:47:21Z</dc:date>
    </item>
    <item>
      <title>Re: Gable/Hip Overhang and Testing against overlaps</title>
      <link>https://community.esri.com/t5/arcgis-cityengine-questions/gable-hip-overhang-and-testing-against-overlaps/m-p/584002#M7894</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;So ...&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;This does &lt;/SPAN&gt;&lt;STRONG&gt;not &lt;/STRONG&gt;&lt;SPAN&gt;seem totally possible with the engine, my rough starting point for those interested:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;#insure direction of Gable is aligned&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;doCreateGableRoof --&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; case scope.sx &amp;gt; scope.sy :&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; roofGable(InternalRoofAngle,InternalRoofOverhang, InternalRoofOverhang, false, 1)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; doCreateGableRoofSideRemove(isCorner )&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; roofGable(InternalRoofAngle, InternalRoofOverhang, InternalRoofOverhang, false, 0)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; doCreateGableRoofSideRemove(isCorner )&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;#get the side section out of a gable roof&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;doCreateGableRoofSide --&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; comp(f) {top=doCreateGableRoofTest | bottom:NIL | side:col.PINK }&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;#see if the roof top section has more than 2 faces if so different case (ie:not possible with engine..lots of hacking needed)&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;doCreateGableRoofVolumeTest--&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; case&amp;nbsp; geometry.nFaces() &amp;gt; 2:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-style:italic;"&gt;col.RED&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; else: #this should be triangle overhang&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; split(x) { InternalRoofOverhang: doSplitTestExtrude &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; | ~1: col.ORANGE #middle section,will need another split for long edge&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; | InternalRoofOverhang:doSplitTestExtrude&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;#extrude &lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;doSplitTestExtrude--&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; extrude(world.y, -RoofThickness)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp; doCreateTouch&lt;/SPAN&gt;&lt;BR /&gt;&lt;STRONG&gt;&lt;BR /&gt;#test overlap if it overlaps NIL out and clean up edge&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;doCreateTouch()--&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;case overlaps(inter): #overlap so cap end&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; split(x) { RoofThickness/2:col.GREEN| ~1:NIL }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; else : # all good so cap end&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; split(x) {&amp;nbsp; ~1:col.ORANGE |RoofThickness/2:col.GREEN}&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;my lesson so far is the programming language needs further development to be considered a complete procedural modeling tool.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 22 Mar 2014 23:00:27 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-cityengine-questions/gable-hip-overhang-and-testing-against-overlaps/m-p/584002#M7894</guid>
      <dc:creator>curtedmonds</dc:creator>
      <dc:date>2014-03-22T23:00:27Z</dc:date>
    </item>
    <item>
      <title>Re: Gable/Hip Overhang and Testing against overlaps</title>
      <link>https://community.esri.com/t5/arcgis-cityengine-questions/gable-hip-overhang-and-testing-against-overlaps/m-p/584003#M7895</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;With persistence comes reward...sort of&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Cant do it the logical way but....the trick seems to be use edges to "simulate" the overhang and special case the Triangle section&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;eg:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#section off side of cable ie:Triangle&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;doSeperateEdgesAndTriangle(isCorner) --&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; comp(e) {ridge: i("builtin:cube")&amp;nbsp; s('1, RoofThickness, RoofThickness)&amp;nbsp; center(yz) doGableTopSectionRidge &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; | hip:&amp;nbsp; i("builtin:cube")&amp;nbsp; s('1, RoofThickness, RoofThickness)&amp;nbsp; center(yz) doGableTopSectionHip &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; | eave: i("builtin:cube")&amp;nbsp; s('1, RoofThickness, RoofThickness)&amp;nbsp; center(yz) doGableTopSectionEave &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; comp(f) {top=doGableTopSection(isCorner ) | bottom:NIL | side:alignScopeToAxes(y) doGableTriangleSectionAndEdge(isCorner ) }#=doCreateGableRoofTest2 }&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#the Triangle section special case example&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;doGableTriangleSectionAndEdge(isCorner )--&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; doGableTriangleSection&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; comp(e) {&amp;nbsp; 3:NIL | 1:&amp;nbsp; doGableTriangleSectionEdge(isCorner ,1) | 2:&amp;nbsp; doGableTriangleSectionEdge(isCorner ,2)&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&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&gt;&lt;BR /&gt;&lt;SPAN&gt;hope this helps others, has caused be many late nights and loose hair...again&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 25 Mar 2014 17:37:43 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-cityengine-questions/gable-hip-overhang-and-testing-against-overlaps/m-p/584003#M7895</guid>
      <dc:creator>curtedmonds</dc:creator>
      <dc:date>2014-03-25T17:37:43Z</dc:date>
    </item>
    <item>
      <title>Re: Gable/Hip Overhang and Testing against overlaps</title>
      <link>https://community.esri.com/t5/arcgis-cityengine-questions/gable-hip-overhang-and-testing-against-overlaps/m-p/584004#M7896</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanks for the insights ! ( in-sigh-ts ) &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 26 Mar 2014 14:21:59 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-cityengine-questions/gable-hip-overhang-and-testing-against-overlaps/m-p/584004#M7896</guid>
      <dc:creator>MatthiasBuehler1</dc:creator>
      <dc:date>2014-03-26T14:21:59Z</dc:date>
    </item>
  </channel>
</rss>

