ST_FUNC開発日記

建築構造設計Excelアドイン開発の記録

単位質量算定の追加

単位変換関数ができたので、あらためて単位質量を実装する。

前に紹介したページで英語名を見てみると・・・mass per metre。なんかそのまんまだな。

関数名にメートルと入るのは若干嫌な気もするが・・・、まあいいか。

単位質量は断面積に密度をかければよい。すなわち、H型断面には限らないので、SecSteelFunctionクラスを作り、そちらに単位質量算出の関数を作成する。

鉄骨の密度は7850kg/m3。定数はマジックナンバーにならないように。enum作ったときにconstant.tsを作ってあるのでそこに入れる。

sec/steel-function.ts

import { STEEL_DENSITY } from "../constant";
/**
 * 鉄骨断面に関する関数
 */
export class SecSteelFunction {
  /**
   * 単位質量
   * @param area 断面積
   * @returns 単位質量
   */
  static massPerMetre(area: number): number {
    return STEEL_DENSITY * area;
  }
}

非常にシンプル。前回話したように、一貫性のある単位を使わないと、こういう関数を作るたびに、係数は?と悩むことになる。

断面性能を算出するためにenum SectionPropertyTypeに単位質量を追加。

また、断面積に対して単位質量を出す関数ができたので、sec/build-h-function.tsのSecBuildHFunctionのswitchのところに、単位質量を算出するケースを追加。

      case SectionPropertyType.MassPerMetre:
        return SecSteelFunction.massPerMetre(
          SecBuildHFunction.buildHArea(a, b, t1, t2)
        );

あとはテストを追加。 BH-1200x400x19x25の単位質量は328.5225kg/m。

今回の修正

断面積に対する単位質量を求める関数を追加 · st-func/st-func-ts@773bdd8 · GitHub

また、アドイン側にも処理を追加する。

こちらは、toSectionPropertyTypeとunitOfSectionPropertyTypeに単位質量の処理を追加するだけなので簡単。

SecBuildH関数で単位質量の算定を追加 · st-func/st_func_addin@7704150 · GitHub

build+startで無事に動いた。

普段からこのぐらいスムーズに進むといいんだけどな。