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

スポンサーリンク

【SolidWorks VBA】アセンブリ作成の「標準化」こそが、自動化への最短ルートだ。

こんにちは。SolidWorks APIの深淵へようこそ。
日々、設計現場で「マクロの記録」に頼り切りになっていませんか? 記録されたコードはあくまで「今の操作のトレース」であり、「設計の自動化」を支える堅牢なコードとは別物です。

今回は、自動化の第一歩にして最も重要な「テンプレートの確実な適用」について解説します。なぜこれが重要か? アセンブリを作るたびに単位系やカスタムプロパティがバラバラでは、後工程の自動化がすべて破綻するからです。

さあ、プロフェッショナルの入り口へ案内しましょう。

—

1. なぜ「NewDocument」で躓くのか?

初心者が陥る最大の罠は、SolidWorksのデフォルト設定に依存することです。
`SwApp.NewDocument` を使う際、テンプレートパスを「空」にしたり、曖昧な指定をすると、その時のPCの設定に依存してしまいます。これでは「いつ、誰が作っても同じ品質のアセンブリ」になりません。

極限の知見:
自動化エンジニアは「環境に依存するな」を鉄則とします。テンプレートのパスは、必ずプログラム側で絶対パスを指定して「強制的に」読み込ませる。これが揺らぎを排除する唯一の解です。

—

2. テンプレート指定によるアセンブリ生成コード

以下のコードをコピーして、VBAエディタ(Alt+F11)に貼り付けてみてください。これが、現場で「事故らない」ための基本形です。

Option Explicit

‘ SolidWorksのアプリケーションオブジェクトを操作するためのメインプロシージャ
Public Sub CreateAssemblyWithStandardTemplate()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim templatePath As String

‘ SolidWorksに接続
Set swApp = Application.SldWorks

‘ 【重要】社内標準テンプレートの絶対パスを定義
‘ ※環境に合わせてパスを書き換えてください
templatePath = “C:\ProgramData\SolidWorks\templates\社内標準アセンブリ.asmdot”

‘ ファイルが存在するか確認(エラー回避の基本)
If Dir(templatePath) = “” Then
MsgBox “テンプレートが見つかりません!パスを確認してください。”, vbCritical
Exit Sub
End If

‘ 新規ドキュメントの生成
‘ 引数: テンプレートパス, 単位系(0), 用紙サイズ(0)
Set swModel = swApp.NewDocument(templatePath, 0, 0, 0)

‘ 作成失敗時のチェック
If swModel Is Nothing Then
MsgBox “アセンブリの作成に失敗しました。”, vbExclamation
Exit Sub
End If

‘ 成功!
Debug.Print “アセンブリを正常に作成しました: ” & swModel.GetTitle
End Sub

—

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

このコードには、初心者が必ず知っておくべき「3つの作法」が隠されています。

① `Option Explicit` を必ず書く

これを書かないと、変数のスペルミスが放置されます。プロのコードは、曖昧さを許しません。宣言されていない変数はエラーとして弾くのが、トラブルを未然に防ぐ最強の防御です。

② `Dir` 関数での存在確認

「あるはずのファイルがない」。現場ではよく起こります。いきなり `NewDocument` を叩いてエラーで落ちる前に、`Dir` 関数でファイルパスが正しいか確認する。この「臆病なまでの慎重さ」が、大規模な自動化システムを安定させます。

③ 戻り値 `swModel` の活用

`Set swModel = …` とすることで、作成したばかりのアセンブリを「プログラムが操作可能な状態」で保持できます。ここからプロパティを書き込んだり、部品を配置したりする操作へ繋げていくのです。

—

4. 次のステップへ:プロパティの揺れを防ぐには

テンプレートを適用するだけで、実は半分は成功です。しかし、さらに一歩進むなら、作成直後にカスタムプロパティを強制的に書き込む処理を追加しましょう。

‘ (続き)作成したモデルに対してプロパティを初期化する例
swModel.AddCustomInfo3 “”, “設計者”, swCustomInfoText, “Automation_Bot”
swModel.AddCustomInfo3 “”, “図面番号”, swCustomInfoText, “TEMP-001”

このように、`AddCustomInfo3` メソッドを使うことで、アセンブリ生成と同時に「社内標準の属性情報」を刻み込むことができます。これができれば、PDMや図面枠との連携が自動的に完了するようになります。

—

最後に:自動化は「積み木」である

今回紹介した「テンプレートの適用」は、ほんの小さな積み木です。しかし、この土台がグラついていては、どんなに高度な合致(Mate)自動化コードを書いても、最終的には崩れ落ちてしまいます。

「常に同じ状態からスタートする」

この美学を守り続けてください。ここをクリアすれば、あなたはもうただの「マクロ記録ユーザー」ではありません。立派な「SolidWorks自動化エンジニア」の第一歩を踏み出したのです。

何か詰まったら、いつでも戻ってきてください。APIの深淵は、まだまだ続きますよ。

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