【入門編】【SolidWorks VBA入門】テンプレートファイル内のカスタムプロパティを継承したパーツ新規作成コードの書き方 – SolidWorks VBA解析バイブル

スポンサーリンク

こんにちは。SolidWorksの世界へようこそ。
「マクロの記録」ボタンを押して、生成された長大なコードを眺めて溜息をついたことはありませんか?そのコードは、あなたの意図を汲み取っているようでいて、実は「ただの操作のトレース」に過ぎません。

現場で本当に求められるのは、「いつ、どのような状態でも、同じ品質のファイルを生成する堅牢な仕組み」です。

今日は、多くのエンジニアが最初の壁としてぶつかる「テンプレートの継承とプロパティ管理」をテーマに、SolidWorks VBAの深淵を少しだけ覗いてみましょう。ここをクリアすれば、あなたはもう「記録ボタンの奴隷」ではありません。

1. なぜ「テンプレート」をコードで指定すべきなのか

SolidWorksのデフォルト設定に頼り切っていると、環境が変わるたびにカスタムプロパティが欠落したり、単位系がインチになったりして痛い目を見ます。

VBAでパーツを新規作成する際、最も重要なのは `NewDocument` メソッド です。これを使うことで、社内規格が完璧にセットアップされたテンプレートを強制的に読み込ませることができます。

2. 【核心】パーツ新規作成のテンプレート継承コード

まずは、実務でそのまま使えるコードをご覧ください。このコードの肝は、パスを正確に取得し、エラーハンドリング(予期せぬ失敗への備え)を組み込んでいる点です。

Option Explicit

‘ 伝説のアーキテクトが贈る、堅牢なパーツ生成テンプレート
Sub CreateNewPartFromTemplate()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim templatePath As String

‘ SolidWorks本体への接続
Set swApp = Application.SldWorks

‘ 【重要】テンプレートファイルの絶対パス
‘ ※環境に合わせて書き換えてください
templatePath = “C:\ProgramData\SolidWorks\templates\Part_Standard.prtdot”

‘ テンプレートが存在するか確認(地味ですが最も重要なエラー回避策)
If Dir(templatePath) = “” Then
MsgBox “テンプレートが見つかりません!パスを確認してください。”, vbCritical
Exit Sub
End If

‘ テンプレートを指定して新規ドキュメントを作成
‘ swDocPART = 1 (パーツ), swDocASSEMBLY = 2 (アセンブリ), swDocDRAWING = 3 (図面)
Set swModel = swApp.NewDocument(templatePath, 0, 0, 0)

‘ 生成失敗のチェック
If swModel Is Nothing Then
MsgBox “パーツの作成に失敗しました。”, vbCritical
Exit Sub
End If

‘ カスタムプロパティへの値書き込み例
‘ ここで社内規格の図番などを自動入力する
Call swModel.AddCustomInfo3(“”, “図番”, swCustomInfoText, “DX-2024-001”)
Call swModel.AddCustomInfo3(“”, “材質”, swCustomInfoText, “SS400”)

MsgBox “パーツ生成完了!規格情報も埋め込みました。”, vbInformation
End Sub

3. コードの読み解き:ここが「プロ」の境界線

① `swApp.NewDocument` の秘密

`NewDocument` の引数は `(テンプレートパス, 0, 0, 0)` です。最後の3つのゼロは、ドキュメントのサイズや位置を指定するオプションですが、基本的には `0` を指定してデフォルト設定に委ねるのが最も安全です。

② `AddCustomInfo3` の恩恵

なぜ `AddCustomInfo` ではなく `AddCustomInfo3` なのか。それは、このメソッドがコンフィギュレーション単位でのプロパティ管理に完全対応しているからです。将来的に「設定ごとのプロパティ管理」が必要になったとき、このメソッドを知っているかどうかが運命を分けます。

③ エラーハンドリングの意識

`If swModel Is Nothing Then`。この一行があるだけで、プログラムの格が数段上がります。APIは時に無言で失敗します。その「無言の失敗」を検知し、ユーザーに伝えるのがエンジニアの誠意です。

4. 陥りやすい罠とアドバイス

  • パスの罠: `C:\ProgramData…` のような隠しフォルダにテンプレートを置く場合、PCによってアクセス権限が異なることがあります。常に「テンプレートパスは変数で管理し、いつでも修正可能にしておく」こと。
  • 「マクロの記録」の呪い: マクロの記録で生成される `swApp.NewDocument` は、しばしば「デフォルトのテンプレート」を勝手に指し示します。これでは環境依存のバグを生む原因になります。必ずフルパス指定を徹底してください。

最後に:自動化は「標準化」から始まる

テンプレートをコードで制御することは、単なる効率化ではありません。それは、「誰が作っても同じ品質のデータが生まれる仕組み」を構築することです。

ここをクリアしたあなたなら、次はフィーチャの自動生成や、EXCELから図番を一括流し込みするような、より高度な自動化の世界へ進めるはずです。

SolidWorks VBAは、あなたの手元にある最強の「設計の助手」です。大切に育ててあげてくださいね。また何か躓いたときは、いつでもここへ戻ってきてください。応援しています。

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