【入門編】【初心者向け】AutoCAD VBAで図面上の線分(Line)の始点・終点座標を取得し、距離を計算する – AutoCAD VBA解析バイブル

スポンサーリンク

AutoCAD VBAを掌握する:線分から座標を抜き出し、距離を計算する「計測の極意」

こんにちは。AutoCADの自動化という深淵な世界へようこそ。
「マクロの記録」ボタンを押し、生成されたコードの羅列に呆然とした経験はありませんか?

AutoCAD VBAをマスターするとは、「図面上のオブジェクトを、プログラムがどう認識しているか」という本質を理解することに他なりません。今日は、最も基本的でありながら、すべての自動化の礎となる「線分(Line)から情報を引き出す」という技術を伝授します。

これをクリアすれば、貴方はもう「ただのユーザー」ではなく、「CADを操るエンジニア」の入り口に立っています。

1. AutoCADにおける「線分」というオブジェクトを知る

AutoCADの図面は、ただの絵ではありません。数学的に定義された「オブジェクトの集合体」です。
線分(Line)には、必ず以下の情報が含まれています。

  • StartPoint(始点座標): X, Y, Zの3つの数値の配列
  • EndPoint(終点座標): X, Y, Zの3つの数値の配列

VBAで線分を扱う際、私たちはこの「配列」という箱から、XやYの数値を取り出す作業を行います。ここが最初の壁であり、かつ最大の快感ポイントです。

2. 座標取得と距離計算の実践コード

以下のコードをVBAエディタ(Alt + F11)に貼り付けてみてください。選択した線分の始点と終点を特定し、三平方の定理(ピタゴラスの定理)を用いて距離を算出します。

Sub MeasureLineDistance()
Dim objLine As AcadLine
Dim returnObj As Object
Dim basePnt As Variant

‘ 1. ユーザーに図面上の線分を一つ選んでもらう
On Error Resume Next ‘ ユーザーがキャンセルした場合のエラー回避
ThisDrawing.Utility.GetEntity returnObj, basePnt, “線分を選択してください: ”

‘ 選択したものが本当に線分かを確認(ここが堅牢なコードの第一歩です)
If TypeOf returnObj Is AcadLine Then
Set objLine = returnObj

‘ 2. 始点と終点の座標を取得(Variant型の配列として戻ってくる)
Dim startPnt As Variant
Dim endPnt As Variant
startPnt = objLine.startPoint
endPnt = objLine.endPoint

‘ 3. 距離の計算(三平方の定理:sqrt((x2-x1)^2 + (y2-y1)^2 + (z2-z1)^2))
Dim dx As Double, dy As Double, dz As Double
Dim distance As Double

dx = endPnt(0) – startPnt(0)
dy = endPnt(1) – startPnt(1)
dz = endPnt(2) – startPnt(2)

distance = Sqr(dx ^ 2 + dy ^ 2 + dz ^ 2)

‘ 4. 結果をメッセージボックスで表示
MsgBox “線分の距離は: ” & Format(distance, “0.000”) & ” です。”

Else
MsgBox “線分以外が選択されました。”
End If

On Error GoTo 0
End Sub

3. コードの「魂」を読み解く:なぜこう書くのか?

この短いコードには、現場で生き残るための知恵が詰まっています。

① `Variant` 型の扱い方

AutoCADの座標系は「3要素の配列(X, Y, Z)」で返ってきます。これをVBAで受け取るには `Variant` 型を使うのが最も安全です。`startPnt(0)` と書くことで、配列の最初の要素(つまりX座標)にアクセスできます。この「添字(0, 1, 2)」の概念に慣れることが、後の複雑な形状処理の鍵となります。

② `TypeOf` による型チェック

初心者が最も陥りやすい罠は、「線分以外(円や文字など)を選択してプログラムがクラッシュする」ことです。`TypeOf returnObj Is AcadLine` という一行を入れるだけで、貴方のプログラムは「予期せぬ入力」に対しても沈黙を守り、優雅にエラー処理を行えるようになります。

③ 現場における「単位」の意識

AutoCADの内部値は、基本的に「図面単位」です。この計算結果に縮尺や図面設定の単位がどう関わるのかを意識し始めると、貴方の視座は一段階上がります。

4. 次のステップへ:自動化を加速させるために

このコードを動かして「距離が出た!」と喜んだら、次は少しだけ欲張ってみてください。

  • 「距離だけでなく、中心点に文字を書くにはどうすればいいか?」
  • 「図面内のすべての線分をループ処理で一括計算するには?」

AutoCAD VBAは、あなたが「手作業で繰り返している苦痛」を「計算式という名の魔法」に変えるためのツールです。今回学んだ「オブジェクトの指定」と「情報の抽出」さえできれば、あとはそれをループさせるだけで、どんな複雑な作図作業も自動化可能です。

もし壁にぶつかったら、いつでもここに戻ってきてください。CADと対話する楽しさを知った貴方なら、必ず次のステージへ行けます。

さあ、次はどんな図面を自動化しましょうか?

タイトルとURLをコピーしました