SolidWorks VBAの極意:社内標準テンプレートから「安全に」パーツを生成する技術
こんにちは。SolidWorksの自動化の世界へようこそ。
「マクロの記録」ボタンを押して生成されるコードは、いわば「初心者のための杖」です。しかし、真のエンジニアを目指すなら、その杖を捨て、SolidWorksの心臓部であるAPIと直接対話する術を身につけなければなりません。
今回は、自動化の第一歩にして最も重要な「カスタムテンプレートを用いたパーツ生成」の極意を伝授します。これさえマスターすれば、属人化しがちなパーツ作成作業を、一瞬で「標準化」されたデータに置き換えることができます。
—
1. なぜ「NewDocument」ではなく「NewDocumentEx」なのか?
初心者の方は`NewDocument`を使いがちですが、実務の現場では`NewDocumentEx`一択です。
理由はシンプル。`NewDocument`は「SolidWorksの現在の設定(デフォルト)」に強く依存します。もしユーザーが設定をいじっていたら?もしテンプレートのパスが変更されていたら?あなたのマクロは途端にエラーを吐き、あるいは誤った規格のパーツを量産することになります。
`NewDocumentEx`は、「どのテンプレートを使うか」をコード内で明示的に指定できるため、環境に依存しない堅牢な自動化が実現できるのです。
—
2. 実践コード:堅牢なパーツ生成テンプレート
以下のコードは、単にファイルを開くのではなく、パスの存在チェックを行い、万が一の異常時には適切に終了する「プロ仕様」の構成です。
Option Explicit
‘ メインプロシージャ
Sub CreatePartFromTemplate()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim templatePath As String
‘ 1. SolidWorksアプリケーションの接続
Set swApp = Application.SldWorks
‘ 2. 社内標準テンプレートのパス(環境に合わせて書き換えてください)
templatePath = “C:\CompanyStandards\Templates\MyStandardPart.prtdot”
‘ 3. ファイルパスの存在チェック(ここが重要!)
If Dir(templatePath) = “” Then
MsgBox “エラー:テンプレートが見つかりません。” & vbCrLf & templatePath, vbCritical
Exit Sub
End If
‘ 4. テンプレートを指定して新規作成
‘ NewDocumentEx(テンプレートパス, ユニット, 用紙サイズ, ユーザー定義)
‘ ユニットは swDwgTemplateCustom (0) を指定し、パスを優先させます
Set swModel = swApp.NewDocument(templatePath, 0, 0, 0)
‘ 5. 生成確認
If swModel Is Nothing Then
MsgBox “パーツの作成に失敗しました。”, vbExclamation
Exit Sub
End If
MsgBox “標準パーツの生成が完了しました!”, vbInformation
End Sub
—
3. このコードに込めた「エンジニアの知恵」
このコードには、現場で泣きを見ないための工夫が3つ詰まっています。
- パスの事前検証 (`Dir`関数):
プログラムが走ってから「ファイルがない」と怒られるのは格好悪いものです。実行前に`Dir`関数でパスが存在するかを確認するだけで、トラブル対応の時間は劇的に減ります。
- オブジェクトの生存確認 (`Is Nothing`):
APIが値を返したつもりでも、何らかの理由でパーツが生成されないことはあります。`Set swModel`した直後に、そのオブジェクトが実在するかを確認する習慣をつけてください。これがバグを未然に防ぐ「防波堤」になります。
- 絶対パスの指定:
「環境変数」や「相対パス」に頼ると、PCの買い替えや共有フォルダの構成変更でマクロが死にます。まずは絶対パスから始め、慣れてきたら`Environ`関数でユーザーごとのホームディレクトリを取得する手法へ発展させましょう。
—
4. 次のステップ:マクロを「武器」にするために
今回紹介したのは、いわば「パーツの種」を蒔く工程です。ここから先、皆さんがやるべきことは以下の通りです。
1. プロパティの自動書き込み:`swModel.AddCustomInfo3` を使って、図面枠に必要な図番や作成者を自動入力させる。
2. 初期フィーチャの生成:基準平面やスケッチの原点を整える処理を追加する。
ここをクリアすれば、あなたはもう「マクロの記録」に頼る初心者ではありません。SolidWorksを意のままに操る、自動化エンジニアの入り口に立っています。
もし途中で躓いたら、いつでも戻ってきてください。APIの深淵はまだまだ奥深いですから。それでは、素晴らしい自動化ライフを!
