【ごまかんぱちの挑戦】エクセルで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
今回はここまで。👍
次回は もっと役立ちそうなことをするかも。(まだ決めてない😥)
お楽しみに。
「役に立った!」「助かった!」と感じたらサポートいただけると嬉しいです。😊