こんにちは。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は、あなたの手元にある最強の「設計の助手」です。大切に育ててあげてくださいね。また何か躓いたときは、いつでもここへ戻ってきてください。応援しています。
