【SolidWorks VBA】社内標準形状を「座標指定」で自動配置する:LibraryFeatureDataの極意
こんにちは。SolidWorksの自動化の世界へようこそ。
マクロの記録ボタンを押して、生成された大量のコードを眺めて「結局、どこをどう変えればいいのか分からない」と悩んだことはありませんか?その壁を越えるための重要なステップが、「LibraryFeatureData(ライブラリフィーチャ)」の制御です。
今回は、社内で使い回す「標準ポケット」や「ボス」を、座標を指定してスマートに配置する技術を伝授します。これさえマスターすれば、単なる「記録係」から「エンジニア」へと一気にステップアップできます。
—
1. なぜ「ライブラリフィーチャ」なのか?
複雑なスケッチや押し出し設定を毎回VBAでゼロから記述するのは、賢明ではありません。
- 再利用性: 一度作った標準形状(.SLDLFP)を呼び出すだけ。
- 保守性: 形状変更が必要になっても、ライブラリファイルを更新するだけで全マクロに反映される。
- 堅牢性: 計算ミスによるジオメトリ破綻のリスクを最小化できる。
2. 実装の要:LibraryFeatureDataオブジェクト
SolidWorks APIにおいて、ライブラリフィーチャを挿入するには `FeatureManager.InsertLibraryFeature` を使用しますが、その挙動を細かく制御するのが `LibraryFeatureData` オブジェクトです。
陥りやすい罠:座標と参照の紐付け
初心者が最も苦労するのは「どこに配置するか」という参照(Reference)の指定です。ライブラリフィーチャには「配置面」や「基準点」が必要ですが、APIではこれらを「どの面/エッジに紐付けるか」を明確に配列で渡す必要があります。
—
3. 実践コード:標準ポケットの自動配置
以下のコードは、アクティブなパーツにライブラリフィーチャを挿入する実用的なテンプレートです。
Sub InsertStandardPocket()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swFeatMgr As SldWorks.FeatureManager
Dim swLibData As SldWorks.LibraryFeatureData
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swFeatMgr = swModel.FeatureManager
‘ 1. ライブラリフィーチャ定義の初期化
Set swLibData = swFeatMgr.CreateLibraryFeatureData(“C:\Library\StandardPocket.SLDLFP”)
‘ 2. 配置先の設定(ここが重要:面に配置する場合)
‘ ※事前に面を選択しておくか、GetEntityByName等でオブジェクトを取得して代入
Dim swFace As SldWorks.Face2
Set swFace = swModel.SelectionManager.GetSelectedObject6(1, -1)
‘ 配置面をライブラリデータに登録
swLibData.References = Array(swFace)
‘ 3. ライブラリフィーチャの挿入
Dim swFeat As SldWorks.Feature
Set swFeat = swFeatMgr.InsertLibraryFeature(swLibData)
If Not swFeat Is Nothing Then
Debug.Print “配置成功: ” & swFeat.Name
Else
MsgBox “配置に失敗しました。参照面が正しいか確認してください。”
End If
End Sub
コードのポイント解説
- `CreateLibraryFeatureData`: ライブラリファイルのパスを指定します。ここが間違っていると何も始まりません。
- `References` プロパティ: ここに `Array()` を使って、ライブラリが要求する「参照オブジェクト(平面、エッジ、点など)」を順番通りに渡します。
- `SelectionManager` の活用: 現場では、コード実行時にユーザーが面をクリックしているケースが多いため、まずは選択中のオブジェクトを操作する練習から始めましょう。
—
4. プロの視点:座標指定の応用テクニック
上記のコードは「選択した面に置く」ものですが、真の自動化を目指すなら「座標(X, Y, Z)を指定して配置」したくなりますよね。
実は、ライブラリフィーチャを座標で直接配置するには、以下の手法を組み合わせるのが定石です。
1. 補助スケッチの生成: 挿入したい座標に「点」を持つスケッチをAPIで自動生成する。
2. 参照の切り替え: その「点」をライブラリの参照として渡す。
3. クリーンアップ: 処理完了後に、作成した補助スケッチを非表示にする。
この「一度ダミーを作ってから本丸を呼ぶ」という手法は、SolidWorks自動化において非常に強力なパターンです。
—
5. まとめ:今日から始めるためのステップ
1. まずは手動で配置してみる: ライブラリフィーチャをドラッグ&ドロップした時、どんな参照(面や点)を要求されるかを確認してください。それが `swLibData.References` に渡すべき配列の順番です。
2. エラーハンドリングを怠らない: `If Not swFeat Is Nothing` のチェックは必須です。APIは成功したか失敗したか、黙っていることが多いからです。
3. 失敗を恐れない: プロのエンジニアも、最初はマクロの記録と格闘するところから始まっています。
SolidWorks VBAは、あなたの設計業務から「退屈で繰り返しな作業」を奪い去る最高の武器になります。まずはこのコードをコピーして、手元の社内標準形状で試してみてください。
「できた!」という小さな成功体験こそが、最強の自動化エンジニアへの第一歩です。応援していますよ。
