見出し画像

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

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

AutoCADの自動作図を目指して奮闘しています。
第4回では、線分とポリラインを描いていきます。

それでは スタートです。

4-1. 複雑な図形

前回は 単純な線分を描きましたが、今回は 少しだけ複雑な図形を扱います。

・線分(応用編)

まずは、エクセルに 以下のような図形と数値を書いてみましょう。
この図形を 自動作成します。

コードは こうなります。

    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 & " "

うーん 圧倒されてしまいそう。😥
でも 前回の基本編が理解できていれば できるはずです。

線分が6本必要なので、6行のコードになっています。
実行して 自動作図すると こうなります。

思い通りになりましたね。😊
エクセルの数値を変えて 再実行すると しっかり対応した図形が作図されます。

例えば こんな感じです。

相対座標を使うと 簡略化できることもありますので、使ってみましょう。

    Print #1, "line " & 0 & "," & 0 & " @" & Range("E10") & "," & 0 & " "
    Print #1, "line @" & 0 & "," & 0 & " @" & 0 & "," & Range("G6") & " "
    Print #1, "line @" & 0 & "," & 0 & " @" & -Range("F2") & "," & 0 & " "
    Print #1, "line @" & 0 & "," & 0 & " @" & 0 & "," & -Range("E4") & " "
    Print #1, "line @" & 0 & "," & 0 & " @" & -Range("D6") & "," & 0 & " "
    Print #1, "line @" & 0 & "," & 0 & " " & 0 & "," & 0 & " "

最初と最後は絶対座標、ほかは 相対座標(@)になっています。
かなり スッキリしましたね。

・ポリライン

同じ図形をポリラインで描いてみましょう。
コードはこうなります。

    Print #1, "pline " & 0 & "," & 0 & " " & Range("E10") & "," & 0 & " " & Range("E10") & "," & Range("G6") & " " & Range("D6") & "," & Range("G6") & " " & Range("D6") & "," & Range("B8") & " " & 0 & "," & Range("B8") & " c"

長いですが、改行せずに 1行で書いてくださいね。
実行して 自動作図すると…

ポリラインができました。😊

相対座標だと こうなります。

    Print #1, "pline " & 0 & "," & 0 & " @" & Range("E10") & "," & 0 & " @" & 0 & "," & Range("G6") & " @" & -Range("F2") & "," & 0 & " @" & 0 & "," & -Range("E4") & " @" & -Range("D6") & "," & 0 & " c"

4-2. 今回のまとめ

最後に 今回のまとめです。
今回は 線分とポリラインを それぞれ 絶対座標と相対座標で書きました。
どれも 使いどころが出てくると思いますので しっかりマスターしましょう。

Sub macro()

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

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

    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, "zoom e"
    Print #1, "filedia 1"
    Close #1

End Sub

今回はここまで。👍
次回は 今回描いた図形に 寸法を入れていきます。
お楽しみに。

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