【入門編】【図面ビューの動的配置】CreateDrawViewAt4を用いたマルチ構成部品に対する最適ビューレイアウト自動化 – SolidWorks VBA解析バイブル

スポンサーリンク

こんにちは!SolidWorksの自動化の世界へようこそ。
マクロの記録ボタンを押して生成されたコードを眺めて、「これ、別の型番のモデルに変えた途端に動かなくなるぞ……」と頭を抱えた経験はありませんか?

図面作成のたびに、ビューの配置をマウスでドラッグして整える作業。あれ、実はエンジニアの貴重な時間を猛烈に奪う無駄な工数です。
今回は、3Dモデルから2D図面を起こす際に、正面図・側面図・等角投影図をミリ単位の座標指定で自動かつ整然と配置するための極意を伝授します。

ここをクリアすれば、あなたも単なる「マクロ記録の複写機」から、現場を救う「自動化エンジニア」への第一歩を完全に踏み出せますよ。しっかりとついてきてくださいね!

1. なぜ「CreateDrawViewAt4」なのか?

マクロの記録を行うと、図面ビューを配置するメソッドとして `CreateModelViewAt3` や `CreateDrawViewFromModelView3` といった古いAPIが吐き出されることが多いです。

しかし、これらは「どのモデルの、どの向きを、どこに置くか」の制御が非常に曖昧で、ビューのスケールやシート上の正確な位置座標(X, Y)をダイレクトにコントロールするには向いていません。

そこで登場するのが、現代のSolidWorks APIにおける隠れた名メソッド、`CreateDrawViewAt4` です。

`CreateDrawViewAt4` の本質

このメソッドを使うと、「図面シート上の絶対座標(X, Y)を指定して、一発でビューを生成・配置」することができます。
複数の構成部品(コンフィギュレーション)を持つアセンブリやパーツであっても、「どのコンフィギュレーションのビューを作るか」を引数で完全に制御できるため、マルチ構成の図面自動化において最強の武器となります。

2. 実践:マルチ構成対応・ビュー自動レイアウトマクロ

百聞は一見に如かず。まずは、現場でそのままコピペして使える実用コードを公開します。
このコードは、アクティブな3Dモデル(部品またはアセンブリ)を読み込み、指定したコンフィギュレーションの「正面図」「上面図」「等角投影図(アイソメ図)」を、A4(またはA3)の図面シート上に美しいレイアウトで自動配置するマクロです。

‘ ==============================================================================
‘ 【SolidWorks VBA 実践講座】
‘ CreateDrawViewAt4 を用いたマルチ構成部品の最適ビューレイアウト自動化
‘ ==============================================================================
Sub Main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDraw As SldWorks.DrawingDoc
Dim modelPath As String
Dim configName As String

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

‘ 1. 実行時バリデーション(3Dモデルが開かれているか?)
If swModel Is Nothing Then
MsgBox “3Dモデルを開いた状態でマクロを実行してください。”, vbCritical, “エラー”
Exit Sub
End If

If swModel.GetType = swDocDRAWING Then
MsgBox “図面ドキュメントではなく、3Dモデル(部品/アセンブリ)から実行してください。”, vbCritical, “エラー”
Exit Sub
End If

modelPath = swModel.GetPathName

‘ ※ここに処理対象のコンフィギュレーション名を指定(マルチ構成対応の核心)
configName = “Default” ‘ 必要に応じて “Type-A” や “Large” などに変更してください

‘ 2. 新規図面ドキュメントの作成(標準テンプレートを使用)
‘ ※環境にあわせてテンプレートパス(A3, A4等)を書き換えてください
Dim templatePath As String
templatePath = swApp.GetUserPreferenceStringValue(swUserPreferenceStringValue_e.swDefaultTemplateDrawing)

Set swDraw = swApp.NewDocument(templatePath, swDwgPaperA3size, 0.42, 0.297)
If swDraw Is Nothing Then
MsgBox “図面ドキュメントの作成に失敗しました。”, vbCritical, “エラー”
Exit Sub
End If

‘ 3. 描画のブラックボックス化(画面描画を停止して処理速度を極限まで上げるプロの技)
swApp.Visible = False

Dim viewFront As SldWorks.View
Dim viewTop As SldWorks.View
Dim viewIso As SldWorks.View

On Error GoTo ErrorHandler

‘ ————————————————————————–
‘ 4. 各ビューの動的配置 (CreateDrawViewAt4 の真骨頂)
‘ 引数: (モデルパス, コンフィギュレーション名, X座標[m], Y座標[m], ズーム, 向き etc…)
‘ ————————————————————————–

‘ 【正面図】を シート中心よりやや左下 (X: 0.12m, Y: 0.12m) に配置
Set viewFront = swDraw.CreateDrawViewAt4(modelPath, configName, 0.12, 0.12, 0, _
swStandardViewType_e.swViewType_Front, 0, “”)

‘ 【上面図】を 正面図の真上 (X: 0.12m, Y: 0.22m) に配置
Set viewTop = swDraw.CreateDrawViewAt4(modelPath, configName, 0.12, 0.22, 0, _
swStandardViewType_e.swViewType_Top, 0, “”)

‘ 【等角投影図(アイソメ)】を 右側 (X: 0.30m, Y: 0.20m) に配置
Set viewIso = swDraw.CreateDrawViewAt4(modelPath, configName, 0.30, 0.20, 0, _
swStandardViewType_e.swViewType_Isometric, 0, “”)

‘ 5. 後処理・クリーンアップ
swApp.Visible = True
swModel.WindowRedraw

MsgBox “図面ビューの自動レイアウトが完了しました!”, vbInformation, “完了”
Exit Sub

ErrorHandler:
swApp.Visible = True
MsgBox “予期せぬエラーが発生しました: ” & Err.Description, vbCritical, “致命的エラー”
End Sub

3. コードのキモを徹底解説!ここが分かれば怖くない

初心者から一歩抜け出すために、上記のコードで絶対に押さえておくべきポイントを3つ解説します。

① 単位系はすべて「メートル(m)」で行う

SolidWorks APIの内部データは、ドキュメントの設定(mm単位など)に関わらず、基本的に「メートル(m)」で計算されます。
コード内の `0.12` は 120mm を意味します。ここを勘違いして `120` と指定すると、図面からはるか彼方の宇宙空間にビューが配置されてしまい、「画面が真っ白になった!」とパニックになるので注意してください。

② コンフィギュレーション名の動的バインド

マルチ構成部品を扱う際、あらかじめ3D側で対象のコンフィギュレーションに切り替えてから図面を開くのは素人のやり方です。
`CreateDrawViewAt4` の第2引数に `configName`(例: `”Type-A”` など)を直接渡すことで、3Dモデルを開いたままの状態であっても、指定した特定の構成のビューだけを正確に抜き出して図面に貼ることができます。

③ `swApp.Visible = False` による爆速化

SolidWorks VBAで最も嫌われるのが、画面がパタパタと切り替わり、マウスカーソルが砂時計になる「重い処理」です。
処理の冒頭で `swApp.Visible = False`(画面描画の凍結)を行い、全てのビュー配置が終わったあとに `True` に戻すことで、人間の目では追えないほどの超高速処理を実現できます。これは現場で即座に使えるプロのテクニックです。

4. 陥りがちな罠とエラー回避の知見

実務でこのマクロを運用し始めると、いくつかの「罠」に直面します。先輩エンジニアからのアドバイスとして先回りしてシェアしておきますね。

  • 罠1: 「ファイルパスが見つからない」エラー
  • 新規保存していない(まだ名前をつけてディスクに保存されていない)3Dモデルに対してこのマクロを実行すると、`modelPath` が空文字になりエラーになります。必ず一度保存したモデルから実行するバリデーション(チェック機構)を入れましょう。
  • 罠2: ビューが重なり合う
  • 座標(X, Y)の指定値が近すぎると、正面図とアイソメ図が重なって図面がグチャグチャになります。シートサイズ(A3なら 0.42m × 0.297m)を意識し、余白を考慮した座標設計を行ってください。

まとめ

今回は `CreateDrawViewAt4` を用いた、マルチ構成対応の図面ビュー自動レイアウト手法を解説しました。

マクロの記録に頼るフェーズを卒業し、APIの引数を自在に操って狙った座標にビューを配置できるようになると、図面作成にかかっていた膨大な時間が「数秒のクリック作業」に変わります。

ここをクリアしたあなたなら、もうSolidWorks VBAの基本はバッチリです!
ぜひ自分の設計環境に合わせてコードをカスタマイズし、日々の業務をスマートに自動化してみてくださいね。それでは、次回の高度なAPI解説もお楽しみに!

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