SolidWorks VBAを掌握せよ:アセンブリ作成と設定の自動化、最初の一歩
こんにちは。SolidWorksの自動化の世界へようこそ。
「マクロの記録」ボタンを押して、生成された大量のコードに圧倒され、結局どこを修正すればいいのか分からなくなった経験はありませんか?
今日から、そのステージを卒業しましょう。
APIの構造を理解すれば、SolidWorksは単なる「CADツール」から「あなたの命令に従う忠実な設計エンジン」へと変貌します。まずは、「アセンブリの新規作成と初期設定」という、自動化の最も基礎的で、最も重要なステップをマスターしましょう。
—
1. なぜ「マクロの記録」だけでは不十分なのか?
「マクロの記録」は便利ですが、あれは「ユーザーの操作を録画しているだけ」です。
プロの自動化コードは、「SolidWorksのメモリ内で何が起きているか」を直接操作します。
これから書くコードは、以下の3つのステップで構成されます。
1. SldWorksオブジェクトの取得(SolidWorks本体へのアクセス)
2. 新規ドキュメントの生成(テンプレートの指定)
3. プロパティの強制適用(単位系や設定の制御)
これらを自力で書けるようになれば、あなたの設計効率は飛躍的に向上します。
—
2. アセンブリ作成の設計図(コード例)
以下のコードは、新規アセンブリを作成し、単位系をミリメートル(MMGS)に設定する、現場でそのまま使えるテンプレートです。
Option Explicit
‘ SolidWorks APIの定数を使用するために必要な宣言
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Sub CreateNewAssembly()
‘ 1. SolidWorksアプリケーションへの接続
Set swApp = Application.SldWorks
‘ 2. 新規アセンブリを作成
‘ swDocASSEMBLY = 2 です。テンプレートパスを空にするとデフォルトが適用されます
Set swModel = swApp.NewDocument(“”, 0, 0, 0)
‘ 3. エラーハンドリング:ファイルが正常に作成されたか確認
If swModel Is Nothing Then
MsgBox “ドキュメントの作成に失敗しました。”
Exit Sub
End If
‘ 4. 単位系の強制設定 (MMGS: ミリ・グラム・秒)
‘ swDocASSEMBLY = 2, swUnitSystem_MMGS = 1
swModel.SetUserPreferenceIntegerValue swUnitSystem, swUnitSystem_MMGS
‘ 5. ユーザーへの通知
MsgBox “アセンブリを新規作成し、MMGS単位系に設定しました。”
End Sub
—
3. コードの「核心」を解説
① `swApp.NewDocument` の秘密
多くの初心者がここで躓きます。第1引数のパスに「空文字」を入れると、SolidWorksのシステムオプションで指定されているデフォルトテンプレートが使われます。もし、会社指定のテンプレート(例: `C:\Templates\MyCompany_Assembly.asmdot`)を使いたい場合は、ここにフルパスを記述してください。これだけで、「図面枠やカスタムプロパティが最初から入った状態」でアセンブリを開始できます。
② `SetUserPreferenceIntegerValue` の重要性
なぜこれが必要か? それは、設計環境がエンジニアごとに異なるからです。
「インチ単位でファイルが作成されてしまい、後で修正してミスをした」という悲劇を避けるため、コードの冒頭で強制的に環境を揃える。これが、プロのエンジニアが守るべき「自動化の鉄則」です。
—
4. 陥りやすいエラーと対策
- 「オブジェクト変数またはWithブロック変数が設定されていません」というエラー
- 原因:`Set swApp = Application.SldWorks` を書き忘れています。SolidWorks本体とVBAを接続する「配線」がない状態です。
- テンプレートが見つからない
- 原因:パスの指定ミス、またはSolidWorksの参照先ディレクトリが変更されています。まずは空文字でテストし、次に絶対パスを指定する順序で確認しましょう。
—
5. 次のステップへ
今回のコードは、いわば「アセンブリという真っ白なキャンバス」を用意した状態です。
次はここに、「部品を配置する(`AddComponent`)」、「合致を拘束する(`AddMate`)」という操作を積み重ねていきます。
ここをクリアしたあなたは、もう「マクロの記録」に頼る初心者ではありません。SolidWorksの内部構造を理解し始めた、自動化エンジニアの第一歩を踏み出したのです。
何か不明な点や、さらに深く知りたい部分はありますか?
あなたの設計を自動化する旅、全力でサポートしますよ。
