Translate

2018/01/12

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

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

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

テーマは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)

0 件のコメント:

コメントを投稿