【入門編】【図面自動化の第一歩】DrawViewFromModelFileNameでモデルから図面ビューを自動配置する – SolidWorks VBA解析バイブル

スポンサーリンク

SolidWorks VBAを掌握せよ:図面自動化の第一歩『DrawViewFromModelFileName』の極意

こんにちは。SolidWorks APIの世界へようこそ。
「マクロの記録」ボタンを押して、生成されたコードの長さに絶望したことはありませんか?実は、あのコードは「ユーザーの操作をそのままなぞっただけの、非常に非効率な代物」であることがほとんどです。

真の自動化エンジニアへの道は、「SolidWorksが何を考え、どうオブジェクトを管理しているか」を理解することから始まります。今回は、最も実用的で、かつ最も奥が深い「3Dモデルから図面ビューを自動配置する」技術について解説しましょう。

1. SolidWorks APIの「階層構造」を脳に焼き付ける

まず、オブジェクトの親子関係を理解してください。SolidWorks APIは、以下のような神殿のような構造をしています。

  • SldWorks (ルートオブジェクト): 全ての始まり。SolidWorksそのものです。
  • ModelDoc2: 部品(Part)、アセンブリ(Assembly)、図面(Drawing)の「親」。全てのドキュメントはこの型を継承しています。
  • DrawingDoc: ModelDoc2の図面特化版。ビュー配置の司令塔です。

「マクロの記録」では、この階層を無視して「アクティブなドキュメント」という曖昧な表現に頼りますが、プロのコードは違います。「どのオブジェクトが、どのメソッドを所有しているか」を明確に記述するのです。

2. 実践:DrawViewFromModelFileNameによる自動配置

図面作成の自動化で最も重要なのは、`CreateDrawViewFromModelView` ではなく、シンプルにモデルファイル名を指定してビューを呼び出す `DrawViewFromModelFileName` です。

以下のコードをコピーして、VBAエディタ(Alt+F11)に貼り付けてみてください。

Option Explicit

Sub AutoCreateDrawingView()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDraw As SldWorks.DrawingDoc
Dim modelPath As String
Dim view As SldWorks.View

‘ 1. SldWorksインスタンスを取得
Set swApp = Application.SldWorks

‘ 2. アクティブなモデル(部品/アセンブリ)を取得
Set swModel = swApp.ActiveDoc
If swModel Is Nothing Then MsgBox “モデルを開いてください”: Exit Sub

modelPath = swModel.GetPathName

‘ 3. 新規図面ドキュメントを作成
Set swDraw = swApp.NewDocument(“C:\ProgramData\SolidWorks\…\Drawing.drwdot”, 0, 0, 0)

‘ 4. モデルから図面ビューを配置 (正面図)
‘ 引数: ファイルパス, ビュー名, X座標, Y座標, 縮尺
Set view = swDraw.CreateDrawViewFromModelFileName(modelPath, “正面”, 0.1, 0.1, 0.5)

‘ 5. アイソメ図も追加してみる
Set view = swDraw.CreateDrawViewFromModelFileName(modelPath, “等角投影”, 0.3, 0.2, 0.5)

MsgBox “図面ビューの配置が完了しました。”
End Sub

3. ここがプロの視点:陥りやすい罠と対策

このコードを動かす際、初心者が必ずぶつかる壁が2つあります。

① 「モデルが保存されていない」エラー

`GetPathName` は、ディスク上にファイルが保存されていないと空文字を返します。自動化の際は、必ず `If swModel.GetPathName = “” Then` で保存チェックを入れるのが、現場での常識です。

② 座標系の罠(ミリメートル vs メートル)

SolidWorksのAPI内部では、長さの単位は常に「メートル(m)」で処理されます。
コード内の `0.1` は「100mm」を意味します。ここを間違えると、ビューが図面枠の遥か彼方に飛んでいってしまいます。座標指定には常に細心の注意を払ってください。

4. 次のステップへ

`DrawViewFromModelFileName` をマスターしたあなたは、もう「手作業で図面枠にドラッグ&ドロップする」という単純作業から解放されました。

次のステップは、「図面枠(SheetFormat)のテンプレートを動的に変更する」ことや、「配置したビューに対して自動で寸法(AutoDimension)を打つ」ことです。

SolidWorks APIは広大ですが、オブジェクトの親子関係さえ見失わなければ、どんな複雑な操作も必ず自動化できます。まずはこのコードを自由に書き換えて、自分なりの「自動化ツール」の種を育ててみてください。

プログラミングは、魔法ではありません。あなたの思考を、SolidWorksという巨大なシステムに正しく伝えるための「言語」です。自信を持って、コードを書き進めていきましょう!

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