【実務・中級編】【初心者向け】新規アセンブリに既定のテンプレートを確実に適用して起動時の単位系・プロパティ揺れを防ぐVBA初期化術 – SolidWorks VBA解析バイブル

スポンサーリンク

SolidWorks APIの「正解」:アセンブリ新規作成で“揺れ”を根絶する初期化術

SolidWorksのアセンブリ自動化における最大の敵は、プログラムのバグではなく「環境の曖昧さ」です。

「アセンブリを作ったはずが、なぜか単位系がインチになっている」「カスタムプロパティが空で、PDMと連携できない」。これらは全て、開発者が『SolidWorksのデフォルト設定』に依存してしまった結果起きる悲劇です。

今日は、伝説的な自動化エンジニアとして、「社内標準を強制し、どんな環境でも一貫したアセンブリを生成する」ための極限の初期化メソッドを伝授します。

—

1. なぜ `NewDocument` をそのまま使ってはいけないのか

多くの初心者が陥る罠は、引数を曖昧にしたままアセンブリを作成することです。

‘ 【アンチパターン】これでは環境依存の罠にハマる
Set swModel = swApp.NewDocument(defaultTemplate, 0, 0, 0)

この書き方の何が問題か? `defaultTemplate` という変数は、各ユーザーの SolidWorks のシステムオプションに依存します。担当者Aはテンプレートをカスタマイズしており、担当者Bはデフォルトのまま……これでは、作成されるアセンブリの単位系、レイヤー設定、カスタムプロパティの雛形がバラバラになります。

真のエンジニアは、テンプレートパスを「ハードコード」するか、「設定ファイルから読み込む」ことで、実行環境を完全に管理下におきます。

—

2. 実務で耐えうる堅牢なアセンブリ初期化コード

以下は、私が大規模開発プロジェクトで採用している「テンプレート強制適用型」の初期化関数です。

Option Explicit

‘ SolidWorksの定数定義(必要に応じて参照設定)
‘ 実務では型名にプレフィックスを付けるのが鉄則です

Public Sub CreateStandardAssembly()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim templatePath As String

Set swApp = Application.SldWorks

‘ 1. テンプレートパスを明示的に指定
‘ ネットワーク上の共有フォルダを指定することで、全PCでルールを統一する
templatePath = “C:\CompanyStandard\Templates\Standard_Assembly.asmdot”

‘ 2. ファイルの存在確認は必須(エラーハンドリングの基本)
If Dir(templatePath) = “” Then
MsgBox “テンプレートファイルが見つかりません: ” & templatePath, vbCritical
Exit Sub
End If

‘ 3. アセンブリの新規作成
Set swModel = swApp.NewDocument(templatePath, 0, 0, 0)

If swModel Is Nothing Then
MsgBox “アセンブリの生成に失敗しました。”, vbCritical
Exit Sub
End If

‘ 4. 初期化後のプロパティ設定(PDM連携の要)
Call InitializeCustomProperties(swModel)

swModel.Visible = True
End Sub

Private Sub InitializeCustomProperties(model As SldWorks.ModelDoc2)
‘ テンプレートから引き継げない動的なプロパティをここで注入する
‘ ここで「設計者名」や「プロジェクトID」を自動入力するのがプロの技
model.AddCustomInfo3 “”, “ProjectID”, swCustomInfoText, “PROJECT-2024-ALPHA”
model.AddCustomInfo3 “”, “Designer”, swCustomInfoText, Environ(“USERNAME”)
End Sub

—

3. なぜこのコードが「プロダクション・レベル」なのか

① テンプレートパスの外部化

コード内でパスを直接指定(または設定ファイルから読み込む)ことで、ユーザーの「システムオプション」がどうなっていようが、常に同じ設計基準でアセンブリが作成されます。

② ファイル存在チェックの徹底

自動化ツールで最も不愉快なのは、ファイルが見つからないことで実行が止まり、エラーでプログラムがクラッシュすることです。`Dir` 関数による存在確認は、開発者としての「誠実さ」を示す第一歩です。

③ プロパティの“事後注入”

テンプレートに全てを詰め込むのは限界があります。`InitializeCustomProperties` のように、作成直後に動的な情報(Windowsユーザー名やDBから取得したプロジェクトID)を書き込む設計にすることで、PDM(Product Data Management)とのデータ整合性が劇的に向上します。

—

4. 最後に:エンジニアへのアドバイス

アセンブリの自動化は、「単にファイルを作る」ことではありません。「設計のスタートラインを揃える」ことです。

単位系やプロパティの揺れをプログラムで根絶できれば、その後ろに続く「部品の自動配置」や「図面生成」といった高度な自動化プロセスにおいて、バグの発生率を限りなくゼロに近づけることができます。

まずはこの初期化術を、あなたの自動化プロジェクトの「礎」として組み込んでみてください。これができるか否かで、あなたの作るツールの「格」が決定します。

次回の記事では、この土台の上に「部品を正確な座標系に拘束して配置する」ための、より高度な合致ロジックを解説します。準備はいいですか?自動化の世界はここからが面白いですよ。

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