見出し画像

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

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

AutoCADの自動作図を目指して奮闘しています。
第5回は 寸法線。それでは スタートです。

5-1. 図形に寸法を入れる

前回描いた図形に寸法を入れていきます。

こんな図形でしたね。
エクセルに入力した値によって各辺の長さは変わりますので、辺の長さの違いは気にしなくていいです。

・寸法線(水平)

    Print #1, "dimlinear " & 0 & "," & 0 & " " & Range("E10") & "," & 0 & " h " & 0 & "," & -35

このように描いて実行、自動作図すると…

横方向の寸法線ができました。😊
以下 詳しい解説です。

横方向の寸法線、残り2つも作成します。

    Print #1, "dimlinear " & Range("D6") & "," & Range("G6") & " " & Range("E10") & "," & Range("G6") & " h " & 0 & "," & Range("G6") + 35
    Print #1, "dimlinear " & 0 & "," & Range("B8") & " " & Range("D6") & "," & Range("G6") & " h " & 0 & "," & Range("G6") + 35

結果は こうなります。
順調ですね。😊

・寸法線(垂直)

続いて 縦方向です。

    Print #1, "dimlinear " & 0 & "," & Range("B8") & " " & Range("D6") & "," & Range("G6") & " v " & -35 & "," & 0
    Print #1, "dimlinear " & 0 & "," & 0 & " " & 0 & "," & Range("B8") & " v " & -35 & "," & 0
    Print #1, "dimlinear " & Range("E10") & "," & 0 & " " & Range("E10") & "," & Range("G6") & " v " & Range("E10") + 35 & "," & 0

注意点としては、先ほど「h」(水平寸法)としていたところを 「v」(垂直寸法)とすることです。

縦方向もできましたね。😊

5-2. 見映えをよくする

一応 これで完成なのですが、少し気になることがありますよね。
そう、画層と寸法スタイルです。

・画層

現状、スクリプトファイルを実行する時点で 選択されている画層で描かれます。
これを 画層指定して 描くようにします。
まずは、AutoCAD側で画層を新規作成しましょう。

線種や線の太さは何でもいいです。画層の名前は一致させてください。

「Layer1」「Layer2」という画層を作りました。
「Layer1」を外形線に、「Layer2」を寸法線に使用します。

今後に備えて 中心線「Layer0」も作りました。
今回は使いませんが 一応。

それでは、VBA側で画層指定をしていきます。

Print #1, "clayer Layer1"


Print #1, "clayer Layer2"

これだけです。
これを 線分や寸法線の記述の前に 書くだけです。
実行すると…

おー 完璧です! 😊
VBAで指定した画層名が CADの方にないと 実行中に止まってしまいますので ご注意を。

・寸法スタイル

続いて 寸法スタイルの指定です。

画層と同様、何も指定しないと現状の寸法スタイルで描かれます。
VBAで寸法スタイルを指定しましょう。
やることは 画層指定のときと同じです。
まずは、AutoCAD側で寸法スタイルを新規作成します。

内容は何でもいいので 自由に設定してください。

「Style1」という 寸法スタイルを作りました。

Print #1, "dimstyle R Style1"

コードはこうなります。
これを実行すると…

できました。😊
見た目の変化は微妙ですが、しっかり指定の寸法スタイルで描かれています。

5-3. 今回のまとめ

それでは 今回のまとめです。

画層を指定して 外形線を描く、
画層と寸法スタイルを指定して 寸法線を描く、
という手順で描きました。
割と想像しやすいですね。😊

Sub macro()

    Sakuzu = ThisWorkbook.Path & "\CAD_file.scr"
    Open Sakuzu For Output As #1
    Print #1, "osnap non"

    '********↑前処理↑********

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

    '外形
    Print #1, "line " & 0 & "," & 0 & " " & Range("E10") & "," & 0 & " "
    Print #1, "line " & Range("E10") & "," & 0 & " " & Range("E10") & "," & Range("G6") & " "
    Print #1, "line " & Range("E10") & "," & Range("G6") & " " & Range("D6") & "," & Range("G6") & " "
    Print #1, "line " & Range("D6") & "," & Range("G6") & " " & Range("D6") & "," & Range("B8") & " "
    Print #1, "line " & Range("D6") & "," & Range("B8") & " " & 0 & "," & Range("B8") & " "
    Print #1, "line " & 0 & "," & Range("B8") & " " & 0 & "," & 0 & " "


    Print #1, "clayer Layer2"       '画層の指定
    Print #1, "dimstyle R Style1"   '寸法スタイルの指定

    '寸法線(横方向)
    Print #1, "dimlinear " & 0 & "," & 0 & " " & Range("E10") & "," & 0 & " h " & 0 & "," & -35
    Print #1, "dimlinear " & Range("D6") & "," & Range("G6") & " " & Range("E10") & "," & Range("G6") & " h " & 0 & "," & Range("G6") + 35
    Print #1, "dimlinear " & 0 & "," & Range("B8") & " " & Range("D6") & "," & Range("G6") & " h " & 0 & "," & Range("G6") + 35

    '寸法線(縦方向)
    Print #1, "dimlinear " & 0 & "," & Range("B8") & " " & Range("D6") & "," & Range("G6") & " v " & -35 & "," & 0
    Print #1, "dimlinear " & 0 & "," & 0 & " " & 0 & "," & Range("B8") & " v " & -35 & "," & 0
    Print #1, "dimlinear " & Range("E10") & "," & 0 & " " & Range("E10") & "," & Range("G6") & " v " & Range("E10") + 35 & "," & 0

    '********↓後処理↓********

    Print #1, "zoom e"
    Print #1, "filedia 1"
    Close #1

End Sub

今回はここまで。👍
次回は もっと役立ちそうなことをするかも。(まだ決めてない😥)
お楽しみに。

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