見出し画像

【ごまかんぱちの挑戦】エクセルでAutoCADの自動作図(その10)

こんにちは。ごまかんぱちです。🐟

AutoCADの自動作図を目指して奮闘しています。
ついに 第10回に到達してしまいました。

色々な題材を扱って どこかで 何かしらで 引っ掛かってもらえたら と思います。

10-1. 鉄筋を曲げよう


こんな 曲げ鉄筋 ありますよね。ないかな?
今回の題材は 鉄筋の加工図です。

・・・ 円と円弧を扱うために ムリヤリやってます。
大丈夫。きっと役に立つはず!

始まりと終わりが直線で、複数個の半円が連なる形の鉄筋です。
エクセルで このように描きます。

まずは、単純に1つの円弧を描いてみましょう。
コードはこうなります。

Print #1, "arc c " & 0 & "," & -Range("G7") / 2 & " " & 0 & "," & 0 & " " & 0 & "," & -Range("G7")

そして 実行結果はこう。

円弧(半円)が できました。😊

円弧のコードの解説です。

では、本番です。
エクセル上に描いたような形の図形を描きます。

コードは こうなります。

Print #1, "line " & Range("E2") & "," & 0 & " " & 0 & "," & 0 & " "

Print #1, "arc c " & 0 & "," & -Range("G7") / 2 & " " & 0 & "," & 0 & " " & 0 & "," & -Range("G7")
Print #1, "arc c " & 0 & "," & -Range("G7") - Range("G7") / 2 & " " & 0 & "," & -Range("G7") * 2 & " " & 0 & "," & -Range("G7")
 
Print #1, "line " & 0 & "," & -Range("G7") * 2 & " " & -Range("B9") & "," & -Range("G7") * 2 & " "

1行目と4行目が 上下の直線、2行目と3行目が円弧2つを表しています。

実行結果はこう。

順調です。😊

続いて 半円がいくつ続いても 対応できるようにしましょう。

まず、セルI7に個数を入力できるようにします。

続いて コードです。
 ・for文で 半円を連ねる。
 ・if文で 奇数番目と偶数番目を場合分けして 半円の向きを整える。
という方針で書きます。

'◆外形
Print #1, "clayer Layer1"       '画層の指定


Print #1, "line " & Range("E2") & "," & 0 & " " & 0 & "," & 0 & " "

For i = 1 To Range("I7")
    If i Mod 2 = 1 Then         '上から奇数番目の半円
        Print #1, "arc c " & 0 & "," & -(i - 0.5) * Range("G7") & " " & 0 & "," & -(i - 1) * Range("G7") & " " & 0 & "," & -i * Range("G7")
    Else                        '上から偶数番目の半円
        Print #1, "arc c " & 0 & "," & -(i - 0.5) * Range("G7") & " " & 0 & "," & -i * Range("G7") & " " & 0 & "," & -(i - 1) * Range("G7")
    End If
Next

If Range("I7") Mod 2 = 1 Then   '半円の数が奇数のとき
    Print #1, "line " & 0 & "," & -Range("I7") * Range("G7") & " " & Range("B9") & "," & -Range("I7") * Range("G7") & " "
Else                            '半円の数が偶数のとき
    Print #1, "line " & 0 & "," & -Range("I7") * Range("G7") & " " & -Range("B9") & "," & -Range("I7") * Range("G7") & " "
End If


できました。😊
個数を変えてみて、奇数個 偶数個 どちらの場合でも 正しく動くことを確認しましょう。

個数を100個とかにして 遊んでみたり。

うねうねうねうね

続いて 鉄筋長を算出してみましょう。
鉄筋長は、
 ・最初の直線
 ・半円の長さ × 個数
 ・最後の直線
の合計で決まります。

'鉄筋長
Length1 = Range("E2") + 3.14 * Range("G7") / 2 * Range("I7") + Range("B9")

Print #1, "clayer Layer2"       '画層の指定

Print #1, "text j M " & 0 & "," & -Range("I7") * Range("G7") - 100 & " " & 35 & " " & 0 & " " & "S1"
Print #1, "text j ML " & 75 & "," & -Range("I7") * Range("G7") - 100 & " " & 35 & " " & 0 & " " & "D" & Range("I10") & "×" & Length1 & " [mm]"

Print #1, "circle " & 0 & "," & -Range("I7") * Range("G7") - 100 & " " & 35

コードはこうなります。
半円の長さを求めるために 円周率πが必要なのですが、VBAでは、πの表現が何やら面倒なので、一旦「3.14」で計算しています。
πについての詳しい話は 後ほど。

実行結果はこちら。

できました。😊
立派な 鉄筋加工図です。

適当に決めた 鉄筋記号「S1」を 丸で囲むために、円を使いました。
円の解説です。

これで 円と円弧が登場しましたので、今回の目的は達成されました。😁


あと少し やることがあります。

・VBAにおけるπを考える
・鉄筋の重量を算出して表示する
・鉄筋径を考慮した図を描く

まだまだ 頑張ります。
ぜひ 続きも読んでください。


10-2. アドバンス


さあ、もう一段階 進んでいきます。

・VBAにおけるπを考える

エクセルであれば、セルに「=PI()」と入力すれば πになるのですが、VBAには そんな関数は用意されていないのです。イジワルですね。

ここから先は

7,269字 / 5画像

¥ 300

「役に立った!」「助かった!」と感じたらサポートいただけると嬉しいです。😊