Procedural Urban Design

A forum dedicated to the Draft, Arch and BIM workbenches development.
Forum rules
Be nice to others! Respect the FreeCAD code of conduct!
Post Reply
User avatar
dimitar
Posts: 229
Joined: Thu Jun 13, 2019 6:10 am
Contact:

Procedural Urban Design

Post by dimitar »

Hi,

I am exploring all kinds of urban design workflows for a project I am working on. Here is a go of procedural urban design with Freecad.
masterplan01.gif
masterplan01.gif (719.15 KiB) Viewed 2519 times
The current workflow is as follows:

  1. Create a sketch for the roads
  2. Create walls in BIM WB from roads sketch for main road areas with an 8m width
  3. Create another plain rectangular sketch and extrude thinly in Part WB.
  4. Create pavements from same roads sketch and use formula for 2 or 3m wider "wall" depth based on wall
  5. Boolean difference between extrusion and pavements to create extruded blocks
  6. Create a third "wall" from roads sketch with about 40m depth to represent the maximum bounds of the buildings and boolean intersect with building block to create building masses
  7. Use the rectangle sketch to create a thin extrusion 4m above ground, and make it an array with 3.5m height. These are the indicative floors.
  8. Use the rectangle sketch with the "wide walls" to boolean difference to show the remaining courtyard plots enclosed by the building mass
Procedural Urban Design.jpg
Procedural Urban Design.jpg (724.69 KiB) Viewed 2519 times
So far it's working well, although every once in a while, the walls from sketch create odd intersections.

I am interested in further developing this model in a few ways. I am aware that there may be some python scripting requirements to potentially make new tools. I am comfortable with that if someone can show me how to start and/or similar scripts or templates.
  1. How can I fillet the edges of the roads. It feels like it needs to somehow be a function of the walls tool. If not in the walls, is there a smart way to select fillet the edges that are less than a specific length so if the underlying roads sketch changes, the fillets always correctly updates, without topological issues.
  2. How can I go at picking the top faces within each plot in order to inset the top faces 2m inwards and extrude Roof Mezzanine levels?
  3. How can I measure the areas of the building floors that are topology independent
  4. I would like to to break down the buildings further by random height. For this, I would need to evaluate the points and tangents of the enclosing plot boundaries, and use the tangents to create lines inwards, then generate the lines, sketches, and extrusions.
paullee
Veteran
Posts: 5131
Joined: Wed May 04, 2016 3:58 pm

Re: Procedural Urban Design

Post by paullee »

That's interesting :) You are using ArchWall on Sketch to build the Road and Pavement right?
User avatar
dimitar
Posts: 229
Joined: Thu Jun 13, 2019 6:10 am
Contact:

Re: Procedural Urban Design

Post by dimitar »

paullee wrote: Sat Sep 11, 2021 2:57 pm That's interesting :) You are using ArchWall on Sketch to build the Road and Pavement right?
Yes. The wall seems to be the most robust way to go about turning a bunch of lines into something with thickness
paullee
Veteran
Posts: 5131
Joined: Wed May 04, 2016 3:58 pm

Re: Procedural Urban Design

Post by paullee »

dimitar wrote: Sat Sep 11, 2021 2:43 pm
  1. How can I fillet the edges of the roads. It feels like it needs to somehow be a function of the walls tool. If not in the walls, is there a smart way to select fillet the edges that are less than a specific length so if the underlying roads sketch changes, the fillets always correctly updates, without topological issues.
  2. How can I go at picking the top faces within each plot in order to inset the top faces 2m inwards and extrude Roof Mezzanine levels?
  3. How can I measure the areas of the building floors that are topology independent
  4. I would like to to break down the buildings further by random height. For this, I would need to evaluate the points and tangents of the enclosing plot boundaries, and use the tangents to create lines inwards, then generate the lines, sketches, and extrusions.
Seems no immediate solution to your problem :D
  1. That's seem same problem as Wall Junction Type, probably harder one for Wall tool at the moment. Hope some one has better ideas. :)
    (BTW, in a much earlier discussion, with @regis, use of an ArchStair - without steps - would result in something like a sideway / ramp also)
  2. That's doable with Part, you should already know, but with topologic naming issue. See next point.
  3. I have a feature to do that, testing only -
    - [Feature] Floor Area Calculation + Room Dimension
    - [Feature] Drawing Walls = Drawing Rooms Automatically
    In the meantime, you may try ArchSurvey
  4. May doing another Sketch, with LinkToExternalEdge to the 'base/master' Sketch. Otherwise, try ShapeBinder. All with topologic issue. In the ArchSketch implementation, I do lots of 'link to external edge' which survive topologic issue, but that feature is not exposed - hope @realthunder's branch already handle that
Your study is inspiring. Hope peoples have ways to solve your problem and share here :D
paullee
Veteran
Posts: 5131
Joined: Wed May 04, 2016 3:58 pm

Re: Procedural Urban Design

Post by paullee »

dimitar wrote: Sat Sep 11, 2021 3:09 pm Yes. The wall seems to be the most robust way to go about turning a bunch of lines into something with thickness
BTW, it can handle different thickness for each 'segment' at the moment, but the implementation is not friendly.

And there is some case an self-intersecting wire create some void, would like to solve that when there is a gap.
paullee
Veteran
Posts: 5131
Joined: Wed May 04, 2016 3:58 pm

Re: Procedural Urban Design

Post by paullee »

Out-of-curiosity, how similar thing can be done with slight different approach, done a quick test below.

Still, several features needs to be developed for such modelling :D


Test_ MLP_ Road & Block.FCStd
(205.17 KiB) Downloaded 65 times
Screenshot from 2021-09-12 00-16-33.png
Screenshot from 2021-09-12 00-16-33.png (229.67 KiB) Viewed 2402 times
baswein
Posts: 21
Joined: Mon Aug 26, 2019 4:26 pm

Re: Procedural Urban Design

Post by baswein »

Love this!
paullee
Veteran
Posts: 5131
Joined: Wed May 04, 2016 3:58 pm

Re: Procedural Urban Design

Post by paullee »

Adjusting the 'Master Sketch' as the Master Layout Plan, all Dependent Sketches update automatically to follow.

Using ArchWall to do the Blocks with central courtyard :)

Test_ MLP_ Road & Block_ 2.FCStd
(229.25 KiB) Downloaded 58 times
Screenshot from 2021-09-12 08-39-41.png
Screenshot from 2021-09-12 08-39-41.png (254.89 KiB) Viewed 2251 times
Screenshot from 2021-09-12 08-57-55.png
Screenshot from 2021-09-12 08-57-55.png (336.12 KiB) Viewed 2251 times
paullee
Veteran
Posts: 5131
Joined: Wed May 04, 2016 3:58 pm

Re: Procedural Urban Design

Post by paullee »

Can do a subtraction to model the step between pavement and carriageway.

But no easy method to do fillet at junctions. Anyone has better idea ? :D
(Other than implementing Wall Junction types)

Can always outline the whole pavement shape e.g. by Sketch, done in the Villa Savoye model, if the pavement shape is more irregular.

Test_ MLP_ Road & Block_ 3.FCStd
(274.47 KiB) Downloaded 62 times
Screenshot from 2021-09-12 11-25-22.png
Screenshot from 2021-09-12 11-25-22.png (350.43 KiB) Viewed 2208 times
Post Reply