【入門編】【図面注記の自動化】Noteオブジェクト操作で図枠の表題欄や材質情報を一括書き換え – SolidWorks VBA解析バイブル

スポンサーリンク

【図面注記の自動化】SolidWorks VBAで表題欄を「一瞬」で書き換える極意

こんにちは。設計自動化の世界へようこそ。

「図面を修正するたびに、表題欄の材質や図番を一つずつダブルクリックして書き換える……」。そんな退屈でミスを誘発する作業に、もう時間を費やす必要はありません。

今日は、SolidWorks VBAを使って「図面の注記をプログラムで一括制御する」という、自動化の第一歩を伝授します。「マクロの記録」ボタンを押して生成された、冗長で意味不明なコードから卒業し、プロの設計エンジニアが使う「疎結合で堅牢なコード」を書きましょう。

1. SolidWorks APIの「地図」を頭に入れる

まず、SolidWorksを操作する上で絶対に外せない「オブジェクトモデル」の基本を押さえてください。

  • SldWorksオブジェクト: SolidWorksアプリケーションそのもの。神様です。
  • ModelDoc2オブジェクト: 現在開いている図面ファイルそのもの。
  • View/Noteオブジェクト: 図面内の「ビュー」や「注記」という部品。

今回操作するのは、この中の `Note` オブジェクト です。注記は単なる文字列ではなく、位置やフォント、そして「カスタムプロパティとリンクしているか」という複雑な情報を持っています。ここを理解するのが、自動化の近道です。

2. 実践:表題欄の注記を書き換えるコード

以下のコードは、アクティブな図面ドキュメントから「特定の名前(注記名)」を探し出し、その内容を強制的に書き換える汎用的なスクリプトです。

Option Explicit

Sub UpdateDrawingNotes()
‘ 1. オブジェクトの宣言
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDraw As SldWorks.DrawingDoc
Dim swView As SldWorks.View
Dim swNote As SldWorks.Note

‘ 2. SolidWorksに接続
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

‘ 図面が開かれているか確認
If swModel Is Nothing Or swModel.GetType <> swDocDRAWING Then
MsgBox “図面ファイルを開いてから実行してください。”, vbCritical
Exit Sub
End If

Set swDraw = swModel

‘ 3. 図面内の全ビューを巡回して注記を探す
Set swView = swDraw.GetFirstView ‘ シートそのもの(View1)を取得

Do While Not swView Is Nothing
Set swNote = swView.GetFirstNote

Do While Not swNote Is Nothing
‘ 注記の名前で判定(※後述する注記名の付け方が重要)
If swNote.GetName = “PART_MATERIAL” Then
‘ 注記の内容を書き換え
swNote.SetText “SUS304-BA”
Debug.Print “更新完了: ” & swNote.GetName
End If

Set swNote = swNote.GetNext
Loop

Set swView = swView.GetNextView
Loop

‘ 4. 画面再描画
swModel.EditRebuild3
MsgBox “図面情報の更新が完了しました!”
End Sub

3. ここが重要!「マクロの記録」では到達できない領域

このコードを動かすために、一つだけ覚えておいてほしいことがあります。それは、「注記に名前を付けること」です。

SolidWorksの図面上で注記を右クリックし、「プロパティ」を開くと、一番上に「名前」を入力する欄があります。ここを空欄のままにしておくと、マクロは「どれが材質で、どれが図番か」を判別できません。

  • POINT: 図枠テンプレートの段階で、各注記に `PART_NAME` や `DRAWING_NO` といった名前を付けておきましょう。これが、自動化エンジニアとしての「設計思想」です。

4. 陥りやすいエラーとその対策

初心者が必ずぶつかる壁が2つあります。

1. 「オブジェクト変数またはWithブロック変数が設定されていません」:

  • 原因:`swModel` を取得する前に操作しようとしているか、図面以外のファイルが開かれています。常に `If swModel Is Nothing Then` でガードを固めましょう。

2. 注記が書き換わらない:

  • 原因:その注記が「カスタムプロパティ($PRP:”Material” など)」とリンクしている場合、`SetText` で上書きするとリンクが切れることがあります。
  • 対策:値そのものを変えるのではなく、`swModel.AddCustomInfo3` でカスタムプロパティの値を更新する設計にするのが、より高度でスマートな手法です。

最後に:自動化は「設計の質」を上げるためにある

コードをコピペして動かすのは、あくまで「入り口」です。
本当に大切なのは、この自動化によって浮いた時間を、「もっと良い設計をするための思考」に充てることです。

「ここがうまく動かない」「もう少し応用したい」という悩みが出てきたら、それはあなたがプロのエンジニアへと成長している証拠です。いつでもまた、この場所に戻ってきてください。

さあ、あなたの図面ライフを、圧倒的に効率化しましょう。応援しています!

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