【入門編】【SolidWorks VBA入門】PartDoc.NewDocumentExを用いた社内標準テンプレート(.prtdot)からの安全なパーツ生成 – SolidWorks VBA解析バイブル

スポンサーリンク

SolidWorks VBAの真髄:社内標準テンプレートから「安全」にパーツを立ち上げる極意

こんにちは。SolidWorksの自動化の世界へようこそ。
「マクロの記録」ボタンを押して、生成されたコードの羅列に絶望したことはありませんか?実は、あれは「自動化の入り口」ではなく「作業の残骸」に過ぎません。

世界最高峰の自動化を目指すなら、まずは「SolidWorksの脳内(API)」を正しく叩くことから始めましょう。今回は、どんな環境でも揺るがない「社内標準テンプレートを用いたパーツ生成」の極意を伝授します。

—

なぜ「デフォルト」に頼ってはいけないのか?

初心者の方がまず陥る罠は、`SldWorks.NewDocument` を使って「デフォルトの設定」で開こうとすることです。
しかし、現場で求められるのは「特定のプロパティ情報(材質、カスタムプロパティ、図面枠等)が完璧に設定された社内標準テンプレート」での立ち上げです。

これを怠ると、後工程の図面作成やBOM管理でデータがバラバラになり、自動化が「負債」に変わります。今日から、その甘えを捨てましょう。

—

必須コード:確実なパーツ生成の作法

以下のコードは、私の現場でも標準的に使っている「テンプレート指定によるパーツ生成」のテンプレートです。まずはこれをそのまま動かしてみてください。

Option Explicit

‘ SolidWorksの全APIの頂点に立つオブジェクト
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2

Sub CreatePartFromTemplate()
‘ 1. SolidWorksをキャプチャ(既に起動しているSWを制御)
Set swApp = Application.SldWorks

‘ 2. テンプレートのフルパスを指定
‘ ※環境に合わせて書き換えてください(ネットワークドライブ上でもOK)
Dim templatePath As String
templatePath = “C:\SolidWorks_Standard\Templates\社内標準_パーツ.prtdot”

‘ 3. エラーハンドリング:テンプレートが存在するか確認
If Dir(templatePath) = “” Then
MsgBox “テンプレートが見つかりません: ” & templatePath, vbCritical
Exit Sub
End If

‘ 4. 新規ドキュメント生成(NewDocumentExの活用)
‘ 引数: テンプレートパス, 用紙サイズ(0は無視), 幅, 高さ
Set swModel = swApp.NewDocument(templatePath, 0, 0, 0)

‘ 5. 生成確認
If swModel Is Nothing Then
MsgBox “ドキュメントの生成に失敗しました。”, vbExclamation
Else
Debug.Print “成功: ” & swModel.GetTitle & ” が作成されました。”
End If
End Sub

—

コードの心臓部を読み解く

このコードには、ただ動くだけではない「エンジニアの矜持」が詰まっています。

  • `Option Explicit` の徹底: これを忘れるのは、羅針盤なしで航海に出るようなものです。変数のスペルミスによる「原因不明のバグ」を未然に防ぐ生命線です。
  • `Dir(templatePath)` による存在確認: `NewDocument` を投げてから「ファイルがない」と怒られるよりも、プログラムが始まる前に検知する。これが「堅牢なプログラム」と「素人のコード」の分岐点です。
  • `swModel` の重要性: `NewDocument` が返すのは「ドキュメントそのもの」です。この変数を保持しておくことで、生成直後に「カスタムプロパティを埋める」「材質を適用する」といった次のステップへシームレスに繋げられます。

—

陥りやすい罠と解決策

Q1. 「NewDocumentEx」と「NewDocument」はどう違うの?

実は、現在推奨されているのは `NewDocument` です。`NewDocumentEx` は古いAPIとの互換性のために残されています。最新の環境では、シンプルに `NewDocument` を使いましょう。

Q2. なぜかテンプレートが読み込まれない時は?

SolidWorksの「システムオプション」→「ファイルの場所」でテンプレートフォルダが正しく登録されているか確認してください。また、パスに日本語が含まれる場合、コード上のパス記述が正しいか(バックスラッシュの重複など)を疑うのが鉄則です。

—

次のステップへ

ここをクリアしたあなたは、もう「マクロの記録」ボタンを押す必要はありません。
次は、「生成したパーツに対して、自動でスケッチを描き、押し出しフィーチャを生成する」という領域へ踏み出しましょう。

SolidWorks VBAは、あなたの手足となり、数百時間の単純作業を一瞬で終わらせる魔法です。まずはこの「確実な立ち上げ」をマスターし、自動化エンジニアとしての第一歩を刻んでください。

何か詰まったら、いつでも聞いてください。壁を壊すためのヒントを教えますよ。

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