Trouble generating buildings with real-life footprint shapes

2783
2
09-23-2014 08:49 AM
LR
by
Occasional Contributor III

Hi.

I went through the examples and while they work fine on their own, I can't really apply the procedures when I have to work with real-life building shapes. Principles like front and side facades become quite useless when most of the buildings I'm dealing with look like they do in the image below.

problemcase.png

What would be the most elegant and time saving solution to model this building? Is there a way to see the facade count of every building? My current solution is to use the comp.index in a rule, like this:

Building--> comp(f){side: facade(comp.index)  | top: Roof}

case facadeIndex == 0: Wall0

case facadeIndex == 1: Wall1

...

case facadeIndex == 20: Wall20

else..

What this basically does is blindly checking for up to 20 walls and applying a rule. Every "Wall?" is a rule that applies a texture with a number on it. I then locate the highest number visually and going from there I construct/apply rule blocks, reusing them where possible. Surely there must be a better way than this?

Another problem are splits. Height is fine, as I can use the value from the attribute table I already used for the extrusion to calculate accurate splits. However, I'm obviously lacking that attribute for length for every wall. I thought CE could tell me the measurements (like for the selected wall below) but I can't seem to find them anywhere. How can I access them, if at all? I know I can use tildes in splits to at least fill a facade with a variable width split completely, but I'd like to be more accurate with the vertical splitting.

splitprob.png

Finally, I'm plagued by roofs. Irregular shapes like the one above screw up even simple roof geometry. As you can see from the aerial image, it's two buildings joined together. The footprint is one shape. I tried to eyeball a split hoping to find a solution but it didn't help. The walls aren't perfect 45° angles either. The best solution would be a split from the corners along the line I marked in the image, would that be possible? Yes I know I could edit the shapes in ArcMap, but I'd like to avoid tampering with the base data if possible.

Any help is welcome, even random ideas

0 Kudos
2 Replies
MatthiasBuehler
Occasional Contributor III

Hey !

Facades:

Best is to use comp(f) {all:  ..}, then check scope.sx to check the dimension of each facade 'panel'. if it's bigger than e.g. 2 meters: facade, .

Get the point ?

Roofs:

use convexify() and innerRect.. that's fastest. not all issues will be solvable ..

Have fun !

Matt

Matthias Buehler

Head of 3D Technologies

twitter: @MattB3D

----------------------------------

Garsdale Design Limited
matthias.buehler@garsdaledesign.co.uk

www.garsdaledesign.co.uk

0 Kudos
LR
by
Occasional Contributor III

Thanks.

So I convexify to get the major shapes and then fix the leftovers manually? This one for example I figured I could extend across the whole side, raise the roof and intersect it with the right building. Is it possible to "reverse" the process somehow? I wanted to leave the left building whole and segment off the right building's edge.

small_bit.png

I created a relatively simple house (no proper roof yet!) and have a bunch more to do, but I'm not sure if I'm doing it in the optimal way. Before I waste tons of time, could someone look at the script and give me some feedback? — [Java] simple_house - Pastebin.com

It looks like this. The back is just repeating groups of windows. The splits were created manually. It would be pretty nice if there was a tool to create splits like in the facade wizard.

simple_house.png

0 Kudos