はじめに
Step1
地獄のExcel出力
ついにこの作業が来てしまいました。しかし避けるわけにはいかないので頑張るしかないです。
では早速、フォームデザインです。
画像のとおりメニューバーに追加することにし、名前を「eOutputM」に変更しました。
次にエクセルの機能を使えるようにします。
ソリューションエクスプローラーの参照上で右クリックし「参照の追加」を選択します。
「COM」を選択し、「Micorosoft Excel --- Object Library」を選択し「OK」ボタンを押します。
設定の追加が完了したら、Form1のコードの初めに下記内容を追加します。
「using Excel = Microsoft.Office.Interop.Excel;」
これで、エクセルの操作が可能になります。
フォームのメニューバーのファイル・エクセル出力をダブルクリックします。
そうすると、コードが書ける画面になりますので、画像のとおりエクセルに出力するコードを入力します。
コードは、
Excel.Application excelApp = new Excel.Application();
Excel.Workbooks excelBooks = excelApp.Workbooks;
Excel.Workbook excelBook = excelBooks.Add();
Excel.Worksheet sheet = excelBook.Worksheets["sheet1"];
excelApp.Visible = true;
になります。おまじないです。
予期せぬエラーが発生してもソフトが強制終了しないように処理します。
「try~catch」文をあらかじめ書いておきます。
ここからは、エクセル出力のコードを記載します。
地獄のロードの始まりです。
続きになります。
すでに前回のトラウマが襲ってきています。
かなりスピードが減退しております。
面倒くさい!!!
いや----!!
ぜんぜん先が見えません。
・・・
・・・・
・・・・・・
先が見えてきました。あと少し。
もうちょい。
ゴー------ル!!!
ということでエクセル出力はここまでになります。
Step2
CAD図の出力
今回は、新たな試みとして、CAD図の出力に挑もうと思います。
具体的にはDXFファイルの作成をしていこうと思います。
まずはDXFファイルの中身を知る必要があります。
ということで、今回はフリーソフトのjwcadを使用し、進めていきますので、ソフトのインストールを行います。
jwcadで検索すると、画像のホームページにたどり着きますので、ダウンロードを選択します。
画像の赤線部分の「jwcad_net」を今回はインストールしようと思います。
「jwcad_net」を選択すると「ダウンロード」フォルダにインストール用の実行ファイルがダウンロードされます。
これをダブルクリックしてインストールします。後の作業割愛します。
インストールが完了したら、実際にDXFファイルを一度作成していこうと思います
jwcadを起動させます。
jwcadが開いたら、1本適当に線を引いてみます。この状態でDXF形式で保存しようと思います。
メニューバーの「ファイル」の中の「DXF形式で保存」を選択します。
後は、名前を付けて保存するだけになります。名前はとりあえず「test.dxf」にしました。
保存したDXFファイルをメモ帳などのテキストエディタで開きます。
おいさんの場合はサクラエディタというソフトを使用しています。
開くと文字が画像のように表示されます。
最後尾まで移動させると、なんと1180行あります。
しかし、この中で線の描く命令文は、画像の赤の範囲だけのようです。
なので、他の文はそのまま引用し、画像の赤部分のみを設定していけば良いようです。
中身の内容確認をしていこうと思いますが、まずこの中の数字の意味を知る必要があります。
これについては、
グループコード
に掲載されていますので、一度確認してみてください。
このグループコードに照らし合わせて確認すると、線を引く内容は画像のとおりになるようです。
とにかく、ルールとしては、グループコードの番号を指定したあとに、その内容を指定する形式のようで、2行で1セットのようです。
次は、2本以上の線がある場合の確認をしてみます。
これをテキストエディタで確認してみます。
そうすると、座標の違う3つのグループが出来ていました。
次に文字の確認をします。今回は、大きさが異なる2つの文字を確認します。
テキストエディタで表示すると画像のとおりになります。
文字サイズは40番で表されるようです。
最後に寸法線の確認をしてみます。
新たにポイントという図形タイプがありますが、あとは線と文字の組み合わせで構成されています。
なので図形タイプで寸法という種類はないことがわかります。
メニューバーの「ファイル」に「DXF出力」を追加します。
名前を「dxfOutM」に変更します。
ダブルクリックしコードの画面を表示させます。
まずは、テキストエディタで見た恐ろしく長い「ENTITIES」までのコードを変数に格納していきます。
ここは、気合いの作業になります・・・・
画像は最後の格納作業になります。
変数はすでに、1160個になります。
テストで、線を1つ描くコードも追加します。
先程のつづきに、画像のとおり変数を追加していきます。
これから、ファイルの保存作業をていきます。
そのコード入力作業を楽にするため「Form1」の上部に「using System.IO;」を追記します。
今回は、保存先を決めるのにセーブダイアログを使用します。
なので、まずセーブダイアログをインスタンスします。
その下に、ダイアログの条件を設定します。
ファイル名とパスが決定している場合、「result == DialogResult.OK」内に移ります。
その中で、「StreamWriter」を使用し、データを保存していきます。
データ数が多いので、繰り返し文を使い1行ごと書き込むコードにしています。
この段階で実行してみます。今回はデスクトップ上に保存することにしました。
画像のとおり、「dxf」ファイルが無事作成されました。
できた「dxf」ファイルをjw_cadで実行してみます。
無事、線が描けていることが確認できました。
確認が出来たので、実際のブロック積擁壁の描画コードを作成していこうと思います。
まず、同じコードを何回も書かなくて済むように、準備として、線、文字及びマークの関数を作ろうと思います。
最初は、線描画関数を作成していきます。
その前に、変数を二つ宣言します。宣言する変数は、dxfファイルの現時点までで使用されている行数を格納する変数と
dxfファイルの保存先のパスとファイル名を格納する変数になります。
それでは、線描画関数を作成していきます。
まず、関数名ですが、ここはシンプルに「lineDrawing」にしました。
また、この関数の引数は、各端点のXY座標と現時点でのdxfファイルで使用されている行数とdxf
ファイルの保存先のパスとファイル名になります。
また、この関数をint型にしている理由は、この関数で使用した行数を含んだ値を戻り値として返したいためにこの型にしました。
関数の中身は、画像のとおりで、この関数内で直接dxfファイルにデータを保存する作業をすることにしました。
一度、この関数を使用するための流れを確認するため、「DXF出力」コードを変更していきます。
まず、「dxfDat[1160]」以下を消します。
次に、ファイルダイアログコマンド内で、「sFilename」に保存先のパスとファイル名を格納します。
これで、別の関数内でもこのパスとファイル名を使用することができます。
先程消した「dxfDat[1160]」以降の分を再設定します。
線描画の部分は関数を使用し、最後の4行は追加で最後に保存することにします。
以上で、コードの変更が完了となり、同様に線描画をするコードになりました。
これに、その他の描画関数を追加していきます。
ここでは、文字描画をする関数を作成します。
内容は、線描画とほぼ同じになります。
最後にマークを描画する関数を作成します。
他の関数と内容はほぼ同じになります。
関数がすべて揃いましたので、本格的に擁壁描画のコードを書いていきます。
書いていく場所は、「DXF出力」の線描画関数の箇所になります。
ただし、まだ画像の青のプロット箇所の座標計算ができていません。
なので、先にその計算をしていきます。
追加座標を格納する変数を宣言します。
宣言場所はいつもの所になります。
躯体座標をmm単位に変更したいので、新しく躯体座標格納用の変数も宣言します。
と、ここで、一つ変数に格納をしていない躯体寸法を発見してしまいました。
なので、先のその処理をします。
格納していなかった変数は天端コンクリート厚の「topConH5」でした。
「Form2」に移動し、画像のコードを付け加えます。
「Form1」の「DXF出力」に戻ります。
躯体座標をmm単位に変更し、新しい変数に格納します。
また、これまで躯体の左下端は座標(0,0)でしたが、基礎の左下端を(0,0)にしたいので
100移動させることにしました。
ここでは追加座標を計算し、変数に格納します。
座標の再設定が完了しましたので、線描画関数を使用し、作図するコードを入力します。
コードは画像のとおりとなります。
この時点で、dxfファイルを確認してみます。
jwcadで開くと、無事作図されていることが確認できました。
作図が出来たので、これに引き出し線と文字を追加していきます。
まずは、引き出し線の座標を格納する変数を宣言します。
宣言した変数に、計算した座標値を格納します。
引き出し線なので、適当に座標値を決めております。
自作の関数を使用して、dxfデータを作成していきます。
今回は、線描画関数だけではなく、マーク描画関数と文字描画関数も使用します。
コードの続きになります。
引き出し線と文字のコードが完成したので、実際にjwcadで開いてみます。
画像のとおり、うまく描画出来ていると思います。
後は寸法線になるのですが、かなりしんどそうなのでやめることにしました。すみません。
Step3
数量計算書の出力
数量計算書をエクセルで出力できるようにしたいと思います。
数量は他の擁壁工と比較できるようにしたいので、20m当たりで算出したいと思います。
では、フォームデザインを行います。
メニューバーの「ファイル」に「数量計算書出力」を追加します。
名前を「quantityOutM」に変更します。
フォームのメニューバーのファイル・数量計算書出力をダブルクリックします。
コードが書ける画面になりますので、画像のとおりエクセルに出力するコードを入力します。
コードは、いつもの
Excel.Application excelApp = new Excel.Application();
Excel.Workbooks excelBooks = excelApp.Workbooks;
Excel.Workbook excelBook = excelBooks.Add();
Excel.Worksheet sheet = excelBook.Worksheets["sheet1"];
excelApp.Visible = true;
になります。
ここでも、予期せぬエラーが発生してもソフトが強制終了しないように処理しておきます。
「try~catch」文を書いておきます。
ここからは、エクセル出力のコードを記載します。
まずは、ページ全体のレイアウトを作成していくことにしました。
画像は、セルの結合→文字入力→罫線表示の順で処理しています。
罫線処理の続きです。
まだ途中です。
罫線処理の続きです。
これで最後になります。
一度実行してみます。
数量計算書のレイアウトの完成になります。
ここからは計算内容を表示するコードを入力していきます。
画像は、ブロック積自体の数量計算を表示するコードになります。
ここでは胴込コンクリートの数量計算表示のコードを入力していきますが、ブロックの種類によりコンクリート量は変わります。
なので、標準的な控35cmのみ数量計算表示をするようにし、その他はブランクにするようにします。
標準的な数量は、
参考資料
より0.22m3/m2を使用することにします。
画像は、胴込コンクリートの数量計算を表示するコードになります。
続いて裏込コンクリートの数量計算を表示するコードに移ります。
裏込コンクリートの断面積の計算は面倒なので座標法で求めることにします。
具体的には、以前使用した「 CoordinateMethod」クラスで面積を求めるようにします。
ただし、その前に座標を改めて計算しておく必要があります。計算は「DXF出力」と同様の計算を
します。
裏込めコンクリートの数量計算のコードになります。
天端めコンクリートの数量計算のコードになります。
基礎コンクリートの数量計算のコードになります。
裏込材の数量計算のコードになります。
擁壁工指針によると水抜きパイプは、2~3m2に1箇所の割合で設けることが望ましいとされている。
なので、今回は、3m2ごとに水抜きパイプを設ける計算としています。
画像がそのコードになります。
吸出防止材の数量計算のコードになります。
水抜きパイプの設置箇所数により求まる数量になります。
伸縮目地の数量計算のコードになります。
擁壁工指針によると、無筋コンクリート構造の場合、10m以下の間隔で設けることとされています。
なので、今回は10mごとに設ける計算としています。
基礎砕石の数量計算のコードになります。
数量計算のコードはすべて完了したので、出来映えを確認してみます。
あっさりしていますが、しっかり数量が表示されています。
Step4
ツールストリップ
「Form1」のデザイン画面に戻り、フォーム上部によく見る小さなアイコンを作成しようと思います。
ツールボックスの「toolStrip」を選択し、フォーム上にドラックアンドドロップします。
「Button」を選択します。
ボタン表示に変わりましたので、そのプロパティの「image」を変更します。
アイコン画像はフリー素材をWebページで探して使用しています。
作成したボタンにコードを入力します。
コードは、すでに作成されているコードを転用するだけなので、その関数を指定すれば終了になります。
画像は例として「計算実行」を転用する場合のコードになります。
Step5
実行ファイルの作成
実行ファイル化(exe化)をしていきます。その前に、アイコンの設定をします。
画面右上のソリューションエクスプローラー内にある「ProPerties」を開きます。
その中の「アイコンとマニフェスト」に自分で作成したアイコン画像を指定します。
これをしておかないと、実行ファイルアイコンが表示されません。
画面中央上部にある部分を「Release」に変えます。
それから、メニューバーのビルドから「ブロック積擁壁のリビルド」を選択します。
これで、実行ファイル化が行われます。
作成された実行ファイルは、リビルド後に自動作成されている「binフォルダ」内の「Releaseフォルダ」内にあります。
以上ですべての作業が終了になります。かなり時間がかかり疲れました・・・
ブロック積擁壁の計算ソフト作成の続きです。
今回は、重量式擁壁にはなかった新機能を搭載しようと思います。
ただ、その前に乗り越えなければならない壁が・・・