PythonでBuiファイルを操作する

年末年始にPythonをあれこれ試してみました。Type169で使えるようになったというのもありますが、他にも使い道がないかと思ったわけです。

とはいえ、そもそもPythonの文法もよく分かっていないので、勉強がてらちょっとしたプログラム書いてみました。

Python勉強中...
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の実行処理を加えたら壁の構成を変えながらパラメトリックスタディができそうです。

しかし、たまに新しい言語を覚えるのは楽しいですね。この新しい道具を手に入れると、やれることが広がる感じが好きです。

動作環境

以下の環境で動作を確認しています。

Windows10 Pro(64bit)
Python:Anaconda 5.0.1(Python 3.6/64bit) https://www.anaconda.com/download/
TRNSYS18.00.0016(64bit)

Pocket

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です