ST_FUNC開発日記

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

TypeScript

断面形状図に縮尺の表示

断面の図の描画はオートスケールにしている。建築士としては、図に縮尺がないのは気持ち悪いので、縮尺を表示してみたい。 といっても、モニターのppiが違ったら正しい値にはならないのであくまで目安。 DrawingDataクラスにscaleの数値があるのでこれを1/30…

断面性能の計算の残りを実装

他の断面性能計算を実装 現状A,mしか計算していなかったので、ほかの数値についても実装した。 結果がNaNのときは非表示 数値を入力する前は結果がNaNになってしまうので非表示にした。 断面の種類を切り替えたときの処理 断面形状を切り替えたときに前の数…

コンソールのエラーメッセージ対応

デバッグしようと思って開発者ツールを開いてみたらエラーメッセージが出ていたので対処する。 キーを持て Warning: Each child in a list should have a unique "key" というエラーが。そういえば、サンプルコードとかでもkeyという属性が設定されたりして…

断面形状の描画 その2

前回作った断面形状描画部分を拡張しやすいように修正していく。 LineData LineDataに関しては、x1,y1,x2,y2といちいち書いていくといまいちなので、点データをもたせて、それを結ぶ仕組みとした。 また、多角形のデータを1本1本持たせるのは面倒なので、点…

断面形状の描画 その1

数値を入力しただけだと地味なので、断面形状を描画できるようにしたい。 さっそくChatGPTに相談してみる。 reactのフロントエンドアプリを作っており、図形を描画したい旨をいろいろ聞いてみたら、下記のようなコードを提案された。 import React, { useSta…

計算結果が一歩遅れるのの解消

数値を更新したらすぐ結果が反映させる仕様にしたが、よく見ると表示結果が1つ前の計算結果だった。 細かい仕組みはしっかり認識していないが、レンダリングと数値更新のタイミングの問題らしい? CharGPTに相談したら、ボタンで計算させましょうとか、タイ…

WEBアプリの断面性能計算部分の整理

これまでに出てきた技術を見ながら、拡張しやすいように改良してく。 断面形状タイプのenumを作成 断面形状の切り替えに文字列リテラルのユニオンを使っていたが、 モードの数が増えてくるとユニオンをいちいち書くのが面倒なので、enum型を使うことにした。…

WEBアプリで他の断面性能も計算する仕組みを作る

ファイル名の修正他 とりあえずCalculatorのままだといまいちなので、ファイル名やコンポーネント名などを修正 断面性能計算のクラス名を修正 · st-func/st-func-web@d164fcd · GitHub ほかの断面性能 現在断面積の結果しか表示されないが、ほかの断面性能も…

断面性能の座標軸の変更

最近のReactの話からちょっと変わるが、断面性能関数の設計方針で 強軸、弱軸をX,Yとするか、Y,Zとするか。 前者は断面をXY平面と見たもの。後者は、線材をイメージして材軸方向をXとしたもの。 今回はStbAnaSectionに準じて、強軸をY、弱軸をZとすることに…

Reactの中身の検証

前回作った記事では、ChatGPTの結果を何も考えずにそれっぽく修正しただけなので、実際に何をしているのか検索しながら見ている。 importの{}の有無 impoerするときに{}があったりなかったりするのは何だろう? 【JavaScript/TypeScript】import/export from…

WEBアプリに断面性能計算機能を追加

まずは、作ったst-func-tsをインストールする。 $ npm install ..\st-func-ts st-func-tsをインストール · st-func/st-func-web@d71db70 · GitHub さて、数字の和と積を求めるだけのCalculatorを断面積を求めるように書き換えてみる。 各コードの細かい意味…

Reactのテスト

サンプルプログラムをst-func用に書き換えていく。 まず、Home.tsxにタイトルと説明を記載。 import React from "react"; const Home: React.FC = () => { return ( <div> <h1>st-func-web</h1> <p>建築構造設計に用いる簡単な計算をするアプリケーションです。</p> </div> ); }; export…

ウェブアプリのデプロイ

さて、テストアプリケーションができたので、実際にサーバーに設置して動くかどうか試してみる。 $ npm start で実行すると、ローカルのhttpサーバーが立ち上がり、http://localhost:3000/でアプリにアクセスされる。 これはテスト用のものなので、ビルドす…

Reactサンプルプログラムの作成

色々調べながら作ってもいいのだが、ChartGPTさんがいることだし、さくっとサンプルのアプリケーションを作ってもらおう。 断面性能を計算するアプリケーションをイメージして以下のようなアプリケーションを作ってもらう。 Reactを利用して、簡単な計算を実…

metaデータにhelpurlの追加

前に関数を作ったときはまだドキュメントのHPを用意していなかったが、作成したので 前回はスルーしたhelpurlメタデータを追加する。 learn.microsoft.com シンプルにhelpurlというタグを入力するだけ。 /** * 組立角形鋼管の断面性能。 * @customfunction s…

TypeDocによるドキュメントの作成

アドインのほうは丁寧に書きたいため手動ででドキュメントを作成したが、 ライブラリの関数については、自動生成してみてもいいかと思うので、下記ページを見ながら自動生成を試みる。 qiita.com まず、TypeDocのインストール。 ライブラリに含める必要はな…

配列を使った断面性能関数のテストの追加

前回secBuildBox関数を配列対応にしたが、1x1のテストしかやらずに配列対応のテストを作っていなかったので、 それを実装する。 とりあえず、縦に並べた場合と横に並べた場合をforループで作ってみる。値は前回作った確認用の配列を流用。 test("SecBuildBox…

鉄骨断面基底クラスの設定

断面の数が増えてくると、共通の処理が増えてくる。 例えば、断面によらない単位質量、断面二次半径の算出やアドインでの出力単位の処理など。 これらで共通部分の処理は共通に書くことができるように、鉄骨断面の基底クラスを作成し、 SecBuildHやSecBuildB…

断面係数と断面二次半径の追加

H形鋼の断面性能で、曲げの検討に重要な断面係数と、圧縮の検討に重要な断面二次半径を追加する。 それぞれの英語名は前に見たページを参考に。 断面係数はI/(H/2)とかでもよかったが、直接計算させた。 断面二次半径はで計算する。こちらは、ほかの断面にも…

単位質量算定の追加

単位変換関数ができたので、あらためて単位質量を実装する。 前に紹介したページで英語名を見てみると・・・mass per metre。なんかそのまんまだな。 関数名にメートルと入るのは若干嫌な気もするが・・・、まあいいか。 単位質量は断面積に密度をかければよ…

メソッド名の修正

コードを見返していて2点気づいたので修正。 typescriptのメソッドはキャメルケースが標準っぽいけどスネークケースで書いてしまっていたので、キャメルケースに修正(最近python書いてたから癖で書いちゃったのかな?) 単位変換のときに長ったらしく書きた…

単位変換関数の作成

前回話したように単位を変換する必要があるため、単位変換の関数を作成する。 ExcelにはConvert関数があるし、ほかにもライブラリはいろいろありそうだが、できるだけブラックボックスを減らすという方針なので、単位変換も自作する。 (個人的には自分で作…

単位についての考え方

今作ってきたsecBuildH関数は、単位がmm関係しか出てこなかったので、話題にしてこなかったが、単位をどうするかという問題がある。 構造設計は荷重や鉄骨量との戦いなので、断面性能関数には当然単位質量を出力したくなる。 単位質量は単位は通常kg/mを使う…

Enumを使った場合分け

現状、断面性能のタイプの場合分けはアドイン側のコードで行っているが、アドイン側はできるだけExcel処理に専念してもらい、数値計算についてはライブラリ側で行いたい。 そこで場合分けについてもライブラリへ移行することを考える。 アドインでは、人が入…

ユニットテストの実施

前回ミスで計算結果が間違うようになってしまった。計算ツールでこういうことがあると致命的なので、ユニットテストを導入する。 (この話に持っていくためにあえてミスしたように見えるが、純粋なミスだったりする) TypeScript npm testで検索して上に出て…

構造計算部分のライブラリ化 その1

これまでの実装では、アドインのソースコードの中に実際の断面性能の計算関数を入れていたが、 Excelの処理と構造計算部分は分離したほうがいいような気がする。 (まあ、TypeScript用のライブラリを他で使いまわすとは思わないけど・・・) テストとかもパ…

VsCode拡張のインストール。

VsCodeの日本語化を忘れていた。 また、ソースコードのチェックと整形の設定をする。 なんかvscodeの右下にPrettier入れない?みたいな通知も出てくるし。 まずは日本語化 Visual Studio Codeで日本語化する方法[Windows] #VisualStudioCode - Qiita 検索し…

組立H形鋼の断面性能

まずビルドHの断面性能を表示する関数を作成してみる。 typescriptはswitch文が使えるようなので、型の文字列で分岐させる。 switchって便利でついつい使ってしまうので(C#のswitch式とか結構好き)、Python書くときはちょっとめんどくさく感じてしまう。 …

配列を返す関数のテスト

ドキュメントを読んでいるとこんな記事が カスタム関数から複数の結果を返す - Office Add-ins | Microsoft Learn そういえば、Excelは2020年あたりからスピルが使えるようになったんだった。 動的配列数式とスピル配列の動作 - Microsoft サポート スピルに…

オリジナル関数の作成テスト

クイックスタートがうまくいったので、チュートリアルの次の手順へ行ってみようとしたが、 いきなりWeb からデータを要求みたいな関数になった。 最初は基本の関数だけでいいので、こっちのチュートリアルを続ける必要はないかな。 関数については概要のとこ…