# Roof on a O Shaped building?

2075
4
05-07-2014 12:35 PM
Occasional Contributor
I got a roof problem, and I can???t seem to find a solution on my own. If a building is shaped like an square with a garden in the middle
[] the roof will cover that garden, although its not a part of the building.

Is there a way to fix that?
Tags (3)
4 Replies
Frequent Contributor
Hi !

If you look closely at the topology that shapeO() creates (7 key, wireframe on shaded), you notice it's not yet producing actual holes, rather an open topology with an 'edge loop' that cuts the hole open. On this topology, roofs may fail in CE 2013.

Please stay tuned for CE 2014.0. Though, not all related issues will be solved with this release.

Sorry for the 'mixed' news ..

Ok ?

Matt
Occasional Contributor
I went back to my ArchMap and used the split polygon by line. Of course I wasn�??t that accurate when I did that, and my license ran out (forgot to borrow) so my crooked line would have to do by now. That will create two buildings, and if the slope have the same angel, I�??m sure they wouldn�??t notice the fix. Is this not possible with a rule file. Just make a split on the smallest place automatically, Im sorry I do not understand the split operation in the help file completely�?�[ATTACH=CONFIG]33679[/ATTACH]
Occasional Contributor
Ok so this would actually work for Copenehagen, except it doesn�??t.  But I think maybe that is because I suddenly forgot my math skills. What I need to do is to make every building with a shape area below 6000m2 and a MEAN_Z value below 21m to go thru the split functions. Everything building above 21m and 6000 m2 should make a flatroof.

* Author:  KennethL
*/

version "2013.1"

@Location(-12,-117)
const MEAN_Z = 10
@Location(-12,-181)
attr taghaeldning = rand (15,25)
@Location(-13,-245)
const Shape_Area = 10
@Location(-8,-315)
const Test = 0.0
@Location(1974,-520)
X(h)-->
s('1,'h,'1)comp(f) { top : roof | side : facade}
@Location(527,-183)
Extrude --> extrude(world.y, MEAN_Z) Formel
@Location(845,-200)
Formel --> case MEAN_Z < 21 && Shape_Area < 6000 : splitter
else : Roofflat
@Location(1543,323)
Roofflat --> comp(f) { top : flatroof | side : facade} Shape
@Location(2600,17)
roof --> roofGable(22.5) Shape

@Location(1602,-533)
splitter --> split(z){ 20 : X(1) |  ~50 : Y(1)}

@Location(1991,-132)
Y(h)-->
s('1,'h,'1) comp(f) { top : roof | side : facade}
@Location(2125,408)
flatroof --> roofGable(1) Shape
@Location(579,-287)
Occasional Contributor
Ok so in the theory my rule would work, when I fixed my error 😉 but Copenhagen is a little to complex to create a rule like that. So I went back to my ArcMap and and cuted all my O shape building polygones. It took me 10 minutes, and now my roofs are like I would like em to.