PythonでBuiファイルを操作する
年末年始にPythonをあれこれ試してみました。Type169で使えるようになったというのもありますが、他にも使い道がないかと思ったわけです。
とはいえ、そもそもPythonの文法もよく分かっていないので、勉強がてらちょっとしたプログラム書いてみました。
Buiファイルの解析ライブラリ
テーマはBuiファイル(.b18)の解析ライブラリ。解析ライブラリというと大げさですが、Buiファイルを読み込んで、Layerの厚みを変更するぐらいのプログラムを想定して試作してみました。
Buiファイルはテキスト形式でシンプルな構造です。プログラムからは比較的扱いやすい内容になっています。厚みの変更は、ひとまずLayer(材料物性)とConstruction(壁体構成)のデータが扱えれば事足りそうです。
Pythonと格闘すること数日。なんとかそれっぽく動くライブラリ(パッケージ)が出来上がりました。Buiファイルの保存にも対応したので、Layerの厚みを更新して、保存、計算に利用するような使い方ができそうです。(大量に計算を回すときに使えそう)
#coding:utf-8
"""
Buiファイルを読み込んで、EXT_WALLの断熱材の厚みを変更して保存する
load a Bui file, update the thickness of the insulation material in EXT_WALL and save it.
"""
from b18 import BuiFile
if __name__ == '__main__':
bui = BuiFile('Building.b18') # Search 'EXT_WALL'
wall = next( (con for con in bui.constructions if con.name=='EXT_WALL') ,None)
if(wall != None):
wall.thickness[2] = 0.2 #Thickness for 'DAEMA'
bui.save('copy_Building.b18')
実際に変更前後のBuiファイルを比べてみるとこんな感じ。ちゃんと厚みが変更されています。
処理前のファイル
CONSTRUCTION EXT_WALL
LAYERS = PUTZ KST DAEMA HOLZ
THICKNESS= 0.015 0.175 0.167 0.02
ABS-FRONT= 0.4 : ABS-BACK= 0.5
処理後のファイル
CONSTRUCTION EXT_WALL
LAYERS = PUTZ KST DAEMA HOLZ
THICKNESS= 0.015 0.175 0.2 0.02
ABS-FRONT= 0.4 : ABS-BACK= 0.5
これにTRNSYSの実行処理を加えたら壁の構成を変えながらパラメトリックスタディができそうです。
しかし、たまに新しい言語を覚えるのは楽しいですね。この新しい道具を手に入れると、やれることが広がる感じが好きです。
2020/07/17 サンプルを追加しました。ダウンロードはこちららから。
Example of accessing b18 with python
動作環境
以下の環境で動作を確認しています。
Windows10 Pro(64bit)
Python:Anaconda 5.0.1(Python 3.6/64bit) https://www.anaconda.com/download/
TRNSYS18.00.0016(64bit)
Hi,
Could you tell me pls if you developed b18 package and if it is possible, could you share this package for me pls?
Thanks a lot.
Best regards,
Long
Long,
Unfortunately, I’ve only developed the part I described in the post.
I can provide you with these scripts if you need them.
Best regards,
Yuichi
Hi Yuichi,
Thanks a lot for your reply. I you could share me the scripts, it would be great. I really appreciate that.
You could send me by email: long.le-van@outlook.com or upload on your page as I saw that you uploaded type169 on your page and give me the link.
Thanks again!
Long
Long,
I’ve uploaded the scripts so you can try it out.
Best,
Yuichi
https://www.kankyoukei.com/download/example-of-accessing-b18-with-python
Many thanks Yuichi!
Best,
Long