![見出し画像](https://assets.st-note.com/production/uploads/images/150589482/rectangle_large_type_2_231a70b3ebb634e16277ab92b2da9172.png?width=1200)
【ごまかんぱちの挑戦】エクセルでAutoCADの自動作図(その4)
こんにちは。ごまかんぱちです。🐟
AutoCADの自動作図を目指して奮闘しています。
第4回では、線分とポリラインを描いていきます。
それでは スタートです。
4-1. 複雑な図形
前回は 単純な線分を描きましたが、今回は 少しだけ複雑な図形を扱います。
・線分(応用編)
まずは、エクセルに 以下のような図形と数値を書いてみましょう。
この図形を 自動作成します。
![](https://assets.st-note.com/img/1721498425359-HbFyt9xkTi.png?width=1200)
コードは こうなります。
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行のコードになっています。
実行して 自動作図すると こうなります。
![](https://assets.st-note.com/img/1721500695727-m8WdVAp6NF.png)
思い通りになりましたね。😊
エクセルの数値を変えて 再実行すると しっかり対応した図形が作図されます。
![](https://assets.st-note.com/img/1721501005681-1NfcGsTIGO.png)
相対座標を使うと 簡略化できることもありますので、使ってみましょう。
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行で書いてくださいね。
実行して 自動作図すると…
![](https://assets.st-note.com/img/1721504660842-z5ShFVB85s.png?width=1200)
ポリラインができました。😊
相対座標だと こうなります。
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
今回はここまで。👍
次回は 今回描いた図形に 寸法を入れていきます。
お楽しみに。
いいなと思ったら応援しよう!
![ごまかんぱち](https://assets.st-note.com/production/uploads/images/150488286/profile_3399e231a3adf3e9e3b0e67f714b882c.png?width=600&crop=1:1,smart)