見出し画像

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


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

AutoCADの自動作図を目指して奮闘しています。
今回は 縮尺のお話。


14-1. 縮尺に応じたいろいろ


図面の縮尺によって、設定すべき 寸法スタイルや文字高さが変わりますよね。(異尺度対応ではないとき。)
それに対応できるようにします。

これまでにも コードの中に コッソリ紛れていたこともあると思いますが、今回 これをテーマとして シッカリ扱っていきます。

それでは始まりです。👏👏


・ 文字高さ

今回 エクセルはこれだけです。
簡単ですね。😁

続いて ポリラインで適当に図形を描きます。
図形に意味はありませんので 何でもいいです。ポリラインでなくてもいいです。

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

'ポリライン
Print #1, "pline " & 0 & "," & 0 & " " & 1000 & "," & 0 & " " & 1300 & "," & 700 & " " & 300 & "," & 700 & " c"


適当な図形を描きました。

文字を足してみましょう。

セルD2の値を使って「縮尺 1:〇〇」と書いてみます。

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

'文字
Print #1, "text j BC " & 800 & "," & 750 & " " & 35 & " " & 0 & " " & "縮尺 1:" & Range("D2")


できました。
文字高さ35mmの文字で書きました。

この文字高さを 縮尺に応じて変化するようにします。
例えば 印刷したときに 5mmの高さにしたいときは、CAD上では 5mm×縮尺 の文字高さで書きます。
  (※) こうではない図面もあると思います。
      その場合は、適当な係数を掛けて調整しましょう。

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

'文字
Print #1, "text j BC " & 800 & "," & 750 & " " & 5 * Range("D2") & " " & 0 & " " & "縮尺 1:" & Range("D2")


今回 変化が地味ですね。

できました。
先ほどの「35」を「5 * Range("D2")」に変えるだけです。

これで 文字高さは完成です。😊



・ 寸法スタイル


続いて 寸法線を描いてみます。

'寸法線
Print #1, "dimlinear " & 0 & "," & 0 & " " & 1000 & "," & 0 & " h " & 0 & "," & -350        '水平
Print #1, "dimlinear " & 0 & "," & 0 & " " & 300 & "," & 700 & " v " & -350 & "," & 0       '垂直
Print #1, "dimaligned " & 1000 & "," & 0 & " " & 1300 & "," & 700 & " " & 1350 & "," & 0   '斜め


水平、垂直、斜め とそれぞれの方向の寸法線を書きました。
寸法線を書く際に 特に何も指定しないと、プログラム実行時に選ばれていた寸法スタイルで 寸法線を書きます。

ですので、寸法スタイルを指定してみましょう。

まずは CAD側に いくつか寸法スタイルを作成してみましょう。

「10」「30」「50」「100」という寸法スタイルを作成しました。
それぞれの中身はお任せします。

続いて エクセルも少し変えます。

これで存在しない寸法スタイル名を入力することはありません。😄

例えば、セルD2に「20」と入力して、その「20」という名前の寸法スタイルがなかった場合、うまくいきません。途中で止まってしまうことも。

そんな状況を防ぐために、リストで選択できるようにして 入力可能な値を制限しました。

コードはこちら。

Print #1, "dimstyle R " & Range("D2")    '寸法スタイルの指定

これだけです。
そして 結果はこちら。

うまく 想定通りの寸法スタイルになりました。😊

コードを簡単にするために、寸法スタイル名を「30」などとしていますが、実際は もっとちゃんとした名前をつけたいですよね。

例えば 寸法スタイル名が「Style30」という名前であれば、次のようなコードで対応できますので、割と自在に対応できます。

Print #1, "dimstyle R " & "Style" & Range("D2")    '寸法スタイルの指定

縮尺を入力するセルと 寸法スタイル名を入力するセルを 別々にすると もっと複雑な寸法スタイル名も エクセル上で表すことができるので より便利になりそうです。

例えば こんな感じ。


14-2. 今回のまとめ

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

縮尺に応じて 文字高さや寸法スタイルが変わってほしくて 実現に向けて頑張りました。

以下 今回のコードです。

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

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

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

'ポリライン
Print #1, "pline " & 0 & "," & 0 & " " & 1000 & "," & 0 & " " & 1300 & "," & 700 & " " & 300 & "," & 700 & " c"


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

'文字
Print #1, "text j BC " & 800 & "," & 750 & " " & 5 * Range("D2") & " " & 0 & " " & "縮尺 1:" & Range("D2")

'寸法線
Print #1, "dimstyle R " & Range("D2")    '寸法スタイルの指定

Print #1, "dimlinear " & 0 & "," & 0 & " " & 1000 & "," & 0 & " h " & 0 & "," & -350        '水平
Print #1, "dimlinear " & 0 & "," & 0 & " " & 300 & "," & 700 & " v " & -350 & "," & 0       '垂直
Print #1, "dimaligned " & 1000 & "," & 0 & " " & 1300 & "," & 700 & " " & 1350 & "," & 0    '斜め


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

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


今回はここまで。👍
次回もお楽しみに。😊

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