【入門編】【SolidWorks VBA入門】マクロ記録機能の限界を知る!はじめてのパーツファイル新規作成コードの書き方 – SolidWorks VBA解析バイブル

スポンサーリンク

【SolidWorks VBA入門】マクロ記録機能の限界を知る!はじめてのパーツファイル新規作成の極意

こんにちは。SolidWorksの自動化の世界へようこそ。

「マクロの記録」ボタンを押して、手動操作をなぞる。多くのエンジニアがここからスタートしますが、ある日突然、「記録されたコードをそのまま実行しても、なぜかエラーが出る」「テンプレートの設定が反映されない」という壁にぶつかります。

なぜでしょうか? それは、マクロの記録機能はあくまで「ユーザーの操作手順をなぞる」だけであり、「SolidWorksの裏側で動くAPIの作法」を完璧に記述してはくれないからです。

今日は、SolidWorks自動化の第一歩、「パーツファイルの新規作成」を題材に、記録機能に頼らない「真のエンジニアの書き方」を伝授します。ここをクリアすれば、あなたの自動化スキルは一気にプロの領域へ踏み込めますよ。

1. なぜ「マクロの記録」では不十分なのか?

マクロを記録すると、多くの場合、ファイルパスを直接指定するようなコードが生成されます。しかし、現場で使うマクロは「誰のPCでも動く」必要がありますよね?

  • パスの依存性: 「C:\Users\Name\…」と書かれたコードは、他のPCでは動きません。
  • 環境設定の欠如: 新規作成時の単位系(mmgsなど)や、ドキュメントプロパティの設定は、記録機能だけでは反映されないことが多々あります。

真の自動化エンジニアは、「SolidWorksのアプリケーション本体(SldWorksオブジェクト)」に対して直接命令を出す書き方をします。

2. パーツファイル新規作成のベストプラクティス

パーツを新規作成する際、最も重要なのは「テンプレート」を正しく呼び出し、その後「単位系」を強制的に確定させることです。

以下のコードを、あなたのVBAエディタにコピーしてみてください。

Option Explicit

‘ SolidWorks APIの基本オブジェクトを宣言
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swPart As SldWorks.PartDoc

Sub CreateNewPart()
‘ SolidWorks本体への接続
Set swApp = Application.SldWorks

‘ テンプレートのパスを指定(環境に合わせて調整してください)
‘ ※通常は SolidWorks のシステムオプションに設定されているパスを使用します
Dim templatePath As String
templatePath = swApp.GetUserPreferenceStringValue(swUserPreferenceStringValue_e.swDefaultTemplatePart)

‘ ドキュメントの新規作成
Set swModel = swApp.NewDocument(templatePath, 0, 0, 0)

‘ 作成失敗時の安全装置
If swModel Is Nothing Then
MsgBox “パーツファイルの作成に失敗しました。”
Exit Sub
End If

‘ 単位系を強制的に「mmgs(ミリ・グラム・秒)」に設定
‘ これを忘れると、インチ系で設計が始まってしまうリスクがあります
swModel.Extension.SetUserPreferenceInteger swUserPreferenceIntegerValue_e.swUnitSystem, 0, swUnitSystem_e.swUnitSystem_mmgs

MsgBox “パーツファイルが正しく作成されました!”
End Sub

3. コードの「ここが重要!」ポイント

① `swApp.NewDocument` の意味

マクロの記録では単にファイルを開くだけの操作になりがちですが、APIでは「テンプレートのパス」を引数として渡すことで、会社標準のフォーマット(図面枠やカスタムプロパティ設定済み)を確実に呼び出せます。

② 単位系の強制指定(重要!)

意外と忘れがちなのがこの部分です。SolidWorksはテンプレートの設定に依存しますが、コード側で `swModel.Extension.SetUserPreferenceInteger` を実行することで、「どんなテンプレートが来ても、必ずmmgsにする」という強制力を持たせることができます。これが「壊れない自動化」の秘訣です。

③ エラーハンドリング

`If swModel Is Nothing Then` という記述。これは、万が一ファイルが開けなかった時にプログラムを安全に停止させるための「命綱」です。これを書くか書かないかで、あなたのコードのプロっぽさが決まります。

4. 次のステップへのアドバイス

ここまでで、「SolidWorksを呼び出し、パーツを正しく生成する」という第一歩をマスターしました。

次にあなたが学ぶべきは、「フィーチャの生成(スケッチを書いて押し出す)」という操作です。しかし、焦る必要はありません。まずはこのコードを実行して、「自分の意図した通りにSolidWorksが反応する」という快感を味わってください。

  • 練習問題:

コード内の `templatePath` を、あえて存在しないパスに書き換えてエラーが出るか確認してみましょう。エラーハンドリングがどう機能するかを理解することは、トラブルシューティングの第一歩です。

プログラミングは、小さな「成功体験」の積み重ねです。ここをクリアしたあなたは、もうただのユーザーではありません。SolidWorksを自由自在に操るエンジニアへの道を、着実に歩んでいますよ。

それでは、また次のレッスンでお会いしましょう!応援しています。

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