Hello,
I have 2 questions and hope someone can help me.
Can anyone help me how to write parapet wall in my roofType.cga? I extrude the building, give it a separate attribute for height and defined 3 different roof types : gable, hip, and flat. Now I want to add parapet wall to the flat roofs. As an example the building attached has flat roof with parapet wall.
Also is it possible to make curb extension for streets after creating them? I used the complete street Rule from Esri Library for street creation. I also read David Wasserman's guide on street rules where he suggested to use extra nodes to make curb extension. But I haven't done it at the beginning and am wondering if there is any way to edit/modify the street to create curb extension.
Thank you!
Solved! Go to Solution.
Here Aida,
Step 1: Set up street into desired design.
Step 2: Select the segment that will get a curb extension. Hit Control+C, and copy the segment layer.
Step 3: WHILE the segment is selected, hit the edit button to drag its end nodes away from the connecting streets.
Step 4: Delete the old segment.
Step 5: Draw two new connecting segments to the intersections from before.
Step 6: Edit rule and shape attributes to get desired street curb extension. At the very least you must reduce the streetWidth shape attributes by the same the amount you increase the sidewalk width attributes.
Hope this helps.
David
Hey Aida,
On the rule portion can you share the CGA rule in question? For flat roofs, I usually comp the top shape, then do a setback to create a "roof edge" that I can further manipulate. So once you make that edit, you could make something similar with a setback that you then split so that you can create alternating extrusions up. Similar to the Interweaved Repeat split in the documentation page here.
As far as curb extensions, the guide I wrote is the best advice I have for curb extensions. If you add those nodes to the streets, you just have to alternate changes in Street and Sidewalk Width parameters to create the effect of the curb extension.
I hope this helps.
David
Hello David,
Thank you very much for your reply.
As for the curb extension, is there any way to add nodes to the current street? I make the curb extension for a new street but cannot add nodes and make extension to a street which has already been created.
As for the parapet wall, I was able to create the parapet wall with the help of Ben Leslie :
I have difficulty in understanding python scripting but seems the rule works:
FlatRoof -->
comp (f) {all : Roof}roofTexture
offset(-parapetTickness, border)
comp(f) {inside : RoofSurface | border : Battlement}
roofTexture-->
texture("Facade/rooftexture/roof.jpg")
setupProjection (0, scope.xy, 3,3)
projectUV (0)
RoofSurface -->
t(0,0,-parapetHeight)
comp(f) {top : NIL | bottom : RoofFloor | all : Battlement}
Battlement -->
split(x){~0.4:Merlon|{0.8:Crenel.|~0.7:Merlon}*|~0.8:Crenel.|~0.5:Merlon}
Merlon-->
t(0, 0, -0.5)
extrude(1)
color ("#eb937b")
RoofFloor -->
extrude (-2)
setupProjection(2, scope.xy, '1, '1)
projectUV(2)
Hey Aida,
So this is something I have been playing around with. Ideally, GIS data would be imported and then segmented based on using functions like segment along line or splitting at a buffers end to create the points where sidewalk width/street width would change. When I need to do it manually what I usually do is pull the nodes of a copy of the segment* connecting to other streets away the distance I want to be, then I draw new segments (starting at the middle street to allow the main street to inherit its attributes) to connect to the rest of the network. Let me know if this helps or if I should make a picture example.
The roof code looks good to me! Glad you got a working solution. 😃 Also, just keep in mind that that CityEngine uses CGA, which is pretty different from python and might be a source of confusion.
David
Edited: I forgot to mention I make a copy of the "curb extension" segment. Then reconnect the copy. If you don't copy it, the nodes will move the connecting streets.
Hi David,
It would be great if you could upload a picture example.
thanks a lot
Here Aida,
Step 1: Set up street into desired design.
Step 2: Select the segment that will get a curb extension. Hit Control+C, and copy the segment layer.
Step 3: WHILE the segment is selected, hit the edit button to drag its end nodes away from the connecting streets.
Step 4: Delete the old segment.
Step 5: Draw two new connecting segments to the intersections from before.
Step 6: Edit rule and shape attributes to get desired street curb extension. At the very least you must reduce the streetWidth shape attributes by the same the amount you increase the sidewalk width attributes.
Hope this helps.
David
Dear David,
Thank you very much for your time. i really appreciate your help.
There is only one issue with my street networks that i wish you can help me again. All the nodes seems to be connected to neighbor streets and as I want to do step 3 the whole street network moves.
not sure if this would help : I unchecked all the options in street creation setting including: re-use settings from neighbors, apply graph cleanup, etc. nodes are still connected to adjacent streets.
Hey Aida,
You need to copy the street segment (select one segment) before you edit the nodes (because then it is a copy of the street segment that is not connected to the other streets).
When you copy the segment you want to make a curb extension, you must edit it immediately after it is copied, otherwise it gets hard to select the copy over the old segment.
I would suggest keeping the network on visually, it helps with selections.
David
it works, thank you very much David for your help!