Day4

鉄筋必要本数と断面検討ソフト作成

Topへ

Day3へ

Day5へ

はじめに

ソフト制作第2段として、鉄筋コンクリート製の単純梁に曲げモーメントとせん断力が働いた時の鉄筋径・必要本数と断面計算を行うソフトを作成したいと思います。
なぜ、第2段で鉄筋コンクリート関係を選んだかというと、おいさんが若かりし頃、土木屋さんといっても現場の人間だったので、 こういう計算ができず、ずっとコンプレックスがあり、おいさん以外にもそういう方が少なからずいるのではないかと思ったからです。
まずは、おさらいとして、曲げモーメントとせん断力の確認からしたいと思います。

Step1

曲げモーメントとせん断力

image

画像のように単純梁中央に集中荷重があるとします。
その場合の曲げモーメントとせん断力の式は以下のとおりとなります。

image

単純梁に働く集中荷重をP、梁の長さをℓとすると、せん断力はP/2で、最大曲げモーメントはPℓ/4になります。
今回の計算は、このせん断力と最大曲げモーメントに対して耐えることのできる鉄筋量とコンクリート強度の検討になります。

Step2

主鉄筋と配力筋

image

おいさんがまだ若かった頃、配筋図を見て、どれが主鉄筋でどれが配力筋かわかりませんでした。
当時は、配筋図のかぶり(主鉄筋に対して芯かぶりの寸法が書かれていた)や鉄筋径(径の大きい方)から主鉄筋を確認していました。
今回の単純梁では、画像のとおりコンクリート断面の4つの丸が主鉄筋になります。なので、これの必要本数を計算できるようにします。
配力筋は主鉄筋に直角方向に入りますが、配力筋の必要本数は計算で求めるというよりも、指針等で決められているようです。

Step2

計算式

image

画像のとおり断面の幅をb、天端から鉄筋までの距離をdとします。
xは断面の圧縮域と引張域の境(断面上部が圧縮域、下部が引張域)とします。
この画像の条件で、計算式は以下のとおりとなります。

image

計算式を示しています。(検索の結果、この式が散見されました。なのでこの式を使用することにしました。)
見てのとおり計算式は複雑ですが、結局、負荷された曲げモーメントとせん断力から発生するコンクリートの圧縮応力度σc、鉄筋の引張応力度σsおよびコンクリートの平均せん断応力度τmを求めることになります。
そして、その算出された値が、それぞれの材料が保持している許容応力度以下であればO.Kとなります。

Step3

画面構成

image

Visual Studioを起動し、「新しいプロジェクトの作成」を選択します。
前回と同様で、Windowsフォームアプリケーション(.NET Framework)」を選択し「次へ」ボタンを押します。

image

見た目の改善のため、今回新たに、グループボックスを使います。
ツールボックスから「GroupBox」を選択し、フォームにドラックアンドドロップします。

image

その他は、「三角せきによる流量計算」と同じツールを使用し、画像のとおりの構成としました。
テキストボックスとボタンには、それぞれの名前を併せて表示しています。

image

鉄筋径とコンクリートの基準強度は、コンボボックスというツールを使います。
ツールボックスから「ComboBox」を選択し、フォームにドラックアンドドロップします。
コンボボックスは、直接値を入力せずに選択するタイプになります。 Excelでいう「リスト」のイメージになります。

image

最終的な画面構成です。
おいさんなりの精一杯のレイアウトです。

Step4

ソースコードの入力

image

まず、テキストボックスに入力制限を行います。
プロパティでイベントボタン(雷マーク)を押して、その中から「KeyPress」をダブルクリックします。画像のとおりコードが書ける画面が出たら、textBox1とtextBox2でキーが押されたときの処理を入力します。
ここでは少数以下も入力できるように設定します。

image

textBox3からtextBox6については、整数のみ入力できるようにします。
ここで「//」がありますが、これを入力すると、以降の内容がプログラムに影響しないようになります。なので、コメントを入力できるようになります。
このコードも検索してコピペしました。なので、詳しい内容はわかりませんが、コメントのおかげで1~9しか入力できないことがうっすら理解できます。

image

label39、label44、label48およびlabel52は、計算結果の判定用(O.KかOUT)に用意しています。
ソフト起動時には、このラベルは表示しないようにします。
フォーム自体をダブルクリックします。そうすると、「 private void Form1_Load(object sender, EventArgs e)」の表示が現れ、以降にコードが書けるようになります。
ここに書く内容は、ソフト起動時のイベントになりますので、ここにラベルを非表示にするコードを書きます。
表示に関するプロパティは「Visible」になりますので、これを表示しないということで「false」にします。

image

次はコンボボックスの初期設定をします。
comboBox1を選択し、そのプロパティから「Items」を選択します。

image

画像に示す画面が表示されます。
そこに、鉄筋径「D13~D32」まで入力し、OKボタンを押します。

image

実行して確認すると、画像のとおりソフト起動時にcomboBox1は、鉄筋径を選択できるようになります。

image

同様に、comboBox2についても項目を入力します。ここでは、コンクリート強度を入力します。

image

次にボタンが押された場合の処理を書きます。
ボタンを直接ダブルクリックします。これで、今度はボタンがクリックした時の処理を書ける画面が表示されます。
まずは、textBox1~6とcomboBox1、2に何も入力されずにボタンをクリックされたときの処理をします。
画像のとおり、どれか1つでも空白があればという意味の条件式を書いています。
そのときの実行内容はメッセージボックスを表示させることにしています。
最後に「return」というコードでクリックイベントを抜けるようにしています。

image

上のif文の「return」を避けて無事通過したら、次の行を実行していきます。
ここで新しい構文を使いますので、先にその説明をします。
ここで紹介する構文は「switch文」です。
switch文はif文と同じ命令内容ですが、条件が多い場合に使用します。
内容は画像のとおりですが、必ず「break」をそれぞれにいれます。
これがないと、選ばれたケース以降の処理内容を実行してしまいます。

image

実際のswitch文になります。
ここでは、変数rebarAreaを宣言し、次に鉄筋径のコンボボックスで選択された値を変数selectedItemの宣言と同時に格納しています。
そして、selectedItemに格納されたいる値に対してswitch文を適用し、変数rebarAreaにそれに対応する鉄筋面積を格納しています。

image

同様に、変数rebarPerimeterを宣言し、それに鉄筋の周長を格納します。

image

画像は、フォームの右にある計算結果の鉄筋量Asからjまでの処理を一気に書いた内容です。
特に慣れないのが、文字扱いに変換したり、数字扱いに変換したりする作業です。

image

画像は、フォームの右にある計算結果のコンクリートの圧縮応力度から付着力の計算を書いた内容です。
曲げモーメント値の取得で、1000000倍しているのは、kN・mからN・mmに単位換算するためにしています。
同様に、せん断力値の取得で、1000倍しているのは、kNからNに単位換算するためにしています。
また、これまで説明していなかった付着力の計算式ですが、付着力=S/(U*j*d)になります。

image

画像は、まず、許容応力を格納する変数を宣言しています。ここで、鉄筋の許容引張応力度はコンクリート強度に関係なく一定の ため、変数を設けていません。
次に、コンクリート条件入力の設計基準強度のコンボボックスで選択された値を変数selectedItem1の宣言と同時に格納しています。
後は、switch文でコンクリート強度で変わる許容応力を各変数に格納します。

image

続いて、判定用のラベルを再表示させます。

image

いよいよ「計算実行ボタン」のコードも大詰めです。
ここで、やっとこれまで求めてきた応力度等が許容以下か確認します。
確認方法はif文になります。許容以下ならば青字で「OK」、許容を超えれば赤字で「OUT」と表示するようにしました。

image

コードの入力がおわりましたので、開始ボタンを押して実行してみました。
うまく計算結果が表示されています。ただ、テキストボックスの数字の表示を右寄せに変更したいのと、実行時に画面真ん中にフォーム が表示されるようにしたい。

Step5

調整

image

テキストボックスの表示を右寄せにします。
プロパティの「TextAlign」を「right]にます。

image

フォームサイズを固定します。
プロパティの「FormBorderStyle」を「FixedSingle]にします。

image

起動時に画面の位置をスクリーンの真ん中にします。
プロパティの「StartPosition」を「CenterScreen」にします。 以上に完了です。