import glob import os import sys from pathlib import Path import csv from hub.imports.geometry_factory import GeometryFactory from hub.imports.construction_factory import ConstructionFactory from hub.imports.usage_factory import UsageFactory from hub.exports.exports_factory import ExportsFactory from hub.exports.energy_building_exports_factory import EnergyBuildingsExportsFactory from hub.helpers.dictionaries import Dictionaries sys.path.append('./') try: file_path = (Path(__file__).parent.parent / 'input_files' / 'selected_building_5755.geojson') out_path = (Path(__file__).parent.parent / 'out_files') files = glob.glob(f'{out_path}/*') for file in files: if file != '.gitignore': os.remove(file) print('[simulation start]') city = GeometryFactory('geojson', path=file_path, height_field='heightmax', year_of_construction_field='ANNEE_CONS', function_field='CODE_UTILI', function_to_hub=Dictionaries().montreal_function_to_hub_function).city print(f'city created from {file_path}') ConstructionFactory('nrcan', city).enrich() print('enrich constructions... done') UsageFactory('nrcan', city).enrich() print('enrich usage... done') area = 0 volume = 0 for building in city.buildings: volume = building.volume for ground in building.grounds: area += ground.perimeter_polygon.area print('exporting:') _idf = EnergyBuildingsExportsFactory('idf', city, out_path).export() print(' idf exported...') _idf.run() csv_file = str((out_path / f'{city.name}_out.csv').resolve()) eso_file = str((out_path / f'{city.name}_out.eso').resolve()) idf_file = str((out_path / f'{city.name}.idf').resolve()) obj_file = str((out_path / f'{city.name}.obj').resolve()) with open((out_path / f'{city.name}_out.csv').resolve()) as f: reader = csv.reader(f, delimiter=',') for row in reader: if ':00:00' in row[0]: print(f'row: {row[0]}, {row[8]}, {row[9]}') print(f'info: {idf_file}, {csv_file}, {eso_file}, {area}, {volume}, {obj_file}') print('[simulation end]') except Exception as ex: print(ex) print('error: ', ex) print('[simulation abort]') sys.stdout.flush()