I'm trying to create a plateau on a sloped shape, and for that, I was thinking about using the "Envelope" operation, it would be nice if the top of the plateau was horizontal and the edges were sloped inward.
First I tried the extrude(world.up.flatTop) but the problem is that the sides of the plateau is vertical and not sloped, after that, I looked at the envelope operation, and this works as long as the startshape is not generated from streets. I think this is because all the edges are facing a street and therefore is "street.front".
So I want to know if anybody has any idea of creating the plateau with sloped sites, Below is an image of my try with envelope, and the image to the right is exactly what I want, but unfortunately, it does not work when the shape is created from streets.
attr slopeAngleFront = 45
attr slopeAngleSide = 45
Lot --> envelope(world.up, 10, 0, slopeAngleFront, 0, 0,
0, slopeAngleSide, 0, slopeAngleSide) Terrain
Just spit balling ideas here, but do you get close to the results you want if you use a setback function, and then have the setbacks taper up/roof shed up to the middle portion you want to model? Then the setbacks become a method of controlling the slope at each point along the road.
For context, I had to do something similar for making ramps onto Raised Bike Lanes on a street shape, and this (with some comp/shape manipulation) worked for me.
That could work, at least for the front. but not for the sides as the angle which is used to create the roofshed is not the same all along the edge of the site, do to the upward slope of the startshape. I think the envelope would be a very nice way to do it, but as mentioned all the edges are named the same which is a problem. But I'm probably going to use a combination of the "Extrude(world.up.flatTop)", and the roofshed. But if you have any other ideas they will be highly appreciated
btw David, you streets rules are very very nice! Like the level of detail and effort you put into it
The taper() and roofShed() operations are good ideas. These functions or envelope() followed by a rotateScope() and a split or two might help you get what you want.
Or, you can convert the dynamic shapes (the lot created by the street network) to static shapes (Select lot -> Graph -> Convert to Static Shapes). Then, you can delete the object attribute called streetWidth in the Inspector (Inspector -> Object Attributes -> right click on streetWidth -> Delete). Deleting this attribute will remove the ability to define polygon edges as street.front, street.side, street.back, etc. Then, envelope() will use the object.xxx selectors instead. You can specify the object.front edge by selecting it -> Shapes -> Set First Edge. The disadvantage of doing this is that your shapes will not be associated with the street network anymore. So, if you change the street network, the static shapes won't change.