【脱・手作業】SolidWorks VBAで「社内標準切り欠き」を魔法のように配置する極意
こんにちは。SolidWorksの自動化を極める旅路へようこそ。
毎日毎日、同じような「切り欠き」や「溝」をライブラリからドラッグ&ドロップしていませんか? その作業、実はSolidWorks VBAの `InsertLibraryFeature2` メソッドをマスターすれば、一瞬で終わります。
今日は、マクロの記録を卒業し、「設計工数を劇的に削る自動化エンジニア」の第一歩を踏み出しましょう。
—
1. なぜ「ライブラリフィーチャ」を自動化するのか?
設計現場には必ず「社内標準」がありますよね。この形状を一つひとつ手作業で配置するのは、単なる作業であり、「エンジニアがやるべき仕事」ではありません。
`InsertLibraryFeature2` を使うメリットは3つあります。
- ヒューマンエラーの根絶: 基準位置のミスや寸法の打ち間違いをゼロにできる。
- 設計の標準化: 誰が実行しても同じ品質のフィーチャが生成される。
- 圧倒的なスピード: 数クリックで終わる作業を、1秒以下の処理に短縮できる。
—
2. 魔法のメソッド:InsertLibraryFeature2 の正体
このメソッドは、SolidWorksの「ライブラリ部品(.sldlfp)」をパーツ内に呼び出すための強力なコマンドです。
基本的な構文
Part.InsertLibraryFeature2(FileName, ConfigName, LinkToLibrary, …)
このメソッドを使うために、私たちは「どのファイルを」「どの面に」「どんな寸法で」配置するかをプログラムに指示する必要があります。
—
3. 実践!社内標準切り欠き自動インサート・スクリプト
それでは、実際にコードを見てみましょう。このコードを標準モジュールに貼り付けて実行してみてください。
Sub InsertStandardCutout()
Dim swApp As Object
Dim swModel As Object
Dim swFeature As Object
‘ SolidWorksに接続
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
‘ 1. ライブラリファイルのパス(ここを皆さんの環境に合わせて変更!)
Dim libPath As String
libPath = “C:\StandardParts\MyCutout.sldlfp”
‘ 2. 挿入する面を選択(事前に面を選択しておく必要があります)
‘ ここでは現在選択中の面にインサートします
‘ 3. ライブラリフィーチャを挿入
‘ 引数:ファイルパス, コンフィギュレーション名(空文字はデフォルト), リンクの有無
Set swFeature = swModel.InsertLibraryFeature2(libPath, “”, False)
If swFeature Is Nothing Then
MsgBox “インサートに失敗しました。パスや面を確認してください。”
Exit Sub
End If
‘ 4. ここで寸法を動的に書き換える(例: 溝の幅を50mmにする)
‘ 実際にはFeatureからDimensionを取得して操作します
Dim swDim As Object
Set swDim = swFeature.Parameter(“D1@Sketch1”) ‘ フィーチャ内の寸法名を指定
swDim.SystemValue = 0.05 ‘ メートル単位で指定
swModel.EditRebuild3 ‘ モデルの再構築
MsgBox “切り欠きの生成が完了しました!”
End Sub
コードの解説
1. `InsertLibraryFeature2`: これが心臓部です。ライブラリファイルを指定するだけで、フィーチャが作成されます。
2. `Parameter`メソッド: 配置したフィーチャ内の寸法を後から操作します。ここが「動的駆動」の肝です。
3. `EditRebuild3`: APIで操作した後は、必ず再構築をかけて変更を反映させるのが「通」のやり方です。
—
4. 初学者が必ずハマる「落とし穴」と対策
ここをクリアすれば、あなたはもう中級者です。
- 「面」が選択されていない: このメソッドは「どこに」配置するかを明示する必要があります。コード内で `SelectByID2` メソッドを使い、あらかじめ面を指定する処理を組み込むのが定石です。
- 単位系の罠: SolidWorks APIの内部単位は「メートル」です。 `0.05` は `50mm` を意味します。ここを間違えて「小さすぎる!」と焦るのがお約束です。
- パスの指定: 日本語フォルダが含まれる場合は、パスの扱いを慎重に。なるべく単純な階層にライブラリを置くことをお勧めします。
—
最後に:自動化の先にある未来
「たったこれだけ?」と思うかもしれません。しかし、このコードをボタン一つに割り当て、さらに「CSVから読み込んだ座標リストをループ処理で回して一括配置」するように改造すれば、1時間かかっていた作業が数秒で終わるようになります。
設計者が本来向き合うべき「創造的な課題」に時間を割くために、このコードをあなたの武器にしてください。
何か不明点があれば、いつでも聞いてくださいね。あなたの自動化ライフを全力で応援しています!
