【入門編】【初心者向け】AutoCAD VBAで図面上のポリライン(Polyline)を作成し、幅や頂点を編集する基本 – AutoCAD VBA解析バイブル

スポンサーリンク

AutoCAD VBAの深淵へ:ポリラインを「自在に操る」ための極意

AutoCADの「マクロの記録」ボタンを押して満足していませんか? それはまだ、広大な大海原の入り口に立ったに過ぎません。

AutoCAD VBAをマスターするということは、「CADの中に住む小さな自分」をプログラミングするということです。今日は、図面作成の要である「ポリライン(Polyline)」を、コードで自由自在に操るための本質を伝授します。

1. ポリラインの正体を知る

AutoCADにおけるポリラインは、単なる線の集まりではありません。頂点(Vertex)というデータの配列を持ち、幅(Width)や閉合(Closed)といったプロパティを内包した「賢いオブジェクト」です。

VBAでこれを扱うには、`AddLightWeightPolyline` メソッドを使います。

基本のコード:ポリラインを描く

まずは、3点の頂点を持つポリラインを生成してみましょう。

Sub CreateSimplePolyline()
Dim polyObj As AcadLWPolyline
Dim points(0 To 5) As Double ‘ 3点分(X, Y)なので要素数は6

‘ 頂点の座標を定義 (0,0), (10,0), (10,10)
points(0) = 0: points(1) = 0
points(2) = 10: points(3) = 0
points(4) = 10: points(5) = 10

‘ モデル空間にポリラインを作成
Set polyObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)

‘ 閉じた図形にする(必要に応じて)
polyObj.Closed = True

‘ 更新を反映させる
polyObj.Update
End Sub

2. ポリラインを「編集」する:幅と頂点の魔術

ポリラインの醍醐味は、作成後にその形を変化させることにあります。

幅(Width)を変える

ポリラインには「始点幅」と「終点幅」が存在します。これらを変更することで、矢印のような図形も一瞬で描画可能です。

‘ 作成済みのpolyObjに対して適用
polyObj.ConstantWidth = 2.0 ‘ 線幅を2.0に設定

頂点を「追加・移動」する

ここが初心者が最もつまずくポイントです。`AddVertex` メソッドを使うのですが、「何番目の頂点の後に挿入するか」というインデックス(0から始まる番号)の管理が重要です。

Sub ModifyPolyline()
‘ (略:ポリラインの取得処理)

‘ 頂点を追加 (インデックス1の後に挿入)
Dim newPoint(0 To 1) As Double
newPoint(0) = 5: newPoint(1) = 5
polyObj.AddVertex 1, newPoint

‘ 頂点を移動 (0番目の頂点を移動)
Dim movePoint(0 To 1) As Double
movePoint(0) = -5: movePoint(1) = 0
polyObj.SetCoordinate 0, movePoint

polyObj.Update
End Sub

3. 初心者が必ずハマる「罠」と対策

プロフェッショナルへの道は、エラーとの対話です。以下の2点だけは覚えて帰ってください。

  • 罠1:「座標配列」の渡し方

VBAの `AddLightWeightPolyline` は「バリアント型(配列)」を要求します。上記のように `Double` 型の配列を作って渡すのが鉄則です。要素数を間違えると、容赦なく「型が一致しません」と怒られます。

  • 罠2:`.Update` を忘れる

コードを書いても図面が変化しない? それは更新メソッドを呼び忘れているからです。オブジェクトを操作した後は、必ず `polyObj.Update` を実行し、AutoCADの画面に再描画を命じましょう。

4. 最後に:なぜ「コード」で書くのか

「手動で描いたほうが早いのでは?」という疑問はもっともです。しかし、考えてみてください。
もし、1000枚の図面に対し、特定の条件でポリラインを修正しなければならないとしたら?

手作業なら数日かかる仕事も、VBAならわずか数秒です。これこそが、エンジニアが自動化ツールを作る最大の価値です。

今日学んだ `AddLightWeightPolyline` と `SetCoordinate` を使えば、複雑な図形生成のルーチンワークはすべてあなたの支配下に置けます。まずはこのコードをコピーして、ご自身の環境で「線が動く感動」を体感してください。

ここをクリアしたあなたなら、次は「ブロック属性の抽出」や「画層ごとの自動選別」など、さらなる高みへ到達できるはずです。応援しています!

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