Skip to content

improve generate_geometry_from_hvac - #178

Open
alexandrecuer wants to merge 11 commits into
mainfrom
improve_geometry
Open

improve generate_geometry_from_hvac#178
alexandrecuer wants to merge 11 commits into
mainfrom
improve_geometry

Conversation

@alexandrecuer

@alexandrecuer alexandrecuer commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

main additions :

  • create walls with different heights using the heights key. When defining heights, the user must also define the roofs, otherwise the roof will be a horizontal plane
  • define a ceiling/roof which is not a simple translation of the floor and use list blocks when defining the ceiling
  • delete a wall between two adjacent zones (remove_wall key)
  • introduce air_boundary to start using ZoneCrossMixing

specify a default construction for a zone

And define some custom walls

constructions:
  default: townhouse_basement
  roofs:
    4: air_boundary

improve reusable blocks

introduce use_blocks_vars: 1

address numeric variables (d0 to d8, z0, h0 to h4) in the blocks section, that can be used in zone subsections (floors, roofs, walls, elements) without the need of adding an anchor

use_blocks_vars: 1
walls:
  - ["d0", 0, *ss2_alt]
  - ["d0", "d3+d4+d5", *ss2_alt]
  - ["-d1-d2",  "d3+d4+d5", *ss2_alt]
  - ["-d1-d2",  0, *ss2_alt]

for list blocks :

use_blocks_vars: 1
floors: [ss1_floor]
roofs: [annexe, cour_drouet, car_path, caves, rdc_cage]
walls: [ss1_floor]

single vasistas & triangular surface

add a single vasistas on a triangular surface (portion of a roof) using vertices numbers

vasistas:
  1: [3, 1.2, 1.3, 2]
  4:
    base_start: 0
    base_end: 2
    apex: 1
    width: 1.2
    height: 1
    sill_height: 1

enhance the way to dispatch apertures

2 methods :

  1. use a apertures, doors and/orvasistas key

The value is a dict :

  • key = wall number,
  • value = list [nb_apertures, width, height, sill_height]

You may also add a construction type as the last (string) element of the list

doors:
  1: [1, 2, 2.5, 0, window_pvc]
  2: [1, 1, 2.5, 0, window_pvc]
apertures:
  4: [1, 1.3, 1.5, 1]
  5: [1, 1.3, 1.5, 1]
  9: [1, 1.3, 1.5, 1]
  1. use a numbers key
    value = list [number of apertures for each wall - 0 if no aperture].

Other non mandatory keys : widths, heights, sill_heights, constructions (none if no custom construction), types (aperture or door). You may also use singular if all elements are the same, for example width: 4 or construction: townhouse_basement

The same configuration expressed with the second method is far more verbose

apertures:
  numbers: [0, 1, 1, 0, 1, 1, 0, 0, 0, 1]
  widths: [0, 2, 1, 0, 1.3, 1.3, 0, 0, 0, 1.3]
  heights: [0, 2.5, 2.5, 0, 1.5, 1.5, 0, 0, 0, 1.5]
  sill_heights: [0, 0, 0, 0, 1, 1, 0, 0, 0, 1]
  constructions:
    - none
    - window_pvc
    - window_pvc
  types:
    - none
    - door
    - door
    - none
    - aperture
    - aperture
    - none
    - none
    - none
    - aperture

- ability to create walls with different heigths with the heights key
- ability to define a ceiling which is not a simple translation of the floor and to user blocks strings when defining the ceiling
- ability to delete a wall between two adjacent zones (remove_wall key)
- ability to use some variables of the blocks section in zone subsections (floors, roofs, walls, elements)

@alexandrecuer alexandrecuer left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

implement vasistas should be nice as roofs can be complex things now

- implement vasistas
- dont use polyface in generate_geometry_from_yaml.py : no interest except complicating things
- use dict and not list for walls as list is not rich enough. dict permits to manage walls removed by the user in the yaml
- structure materials more nicely withs consts and default thickness that can be customized through yaml
- ability to mix different wall constructions on a same room/zone
replace and extend the previous remove_wall
so you can specify construction through dict and not only list
wall_points.extend(resolve(BLOCKS[x]))
if isinstance(x, list):
wall_points = [*wall_points, x]
wall_points = [*wall_points, x[0:3]]

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use extend...

Comment thread generate_geometry_from_yaml.py Outdated

@alexandrecuer alexandrecuer left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also update the related readme

Comment thread conf_geometry/bardoux.yml
walls:
- [0, 0, *r4_alt, recent_light_renovation]
- [3, 0, *r4_alt, recent_light_renovation]
- ["3+7", 0, *r4_alt, recent_light_renovation]

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Explain in README

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant