【入門編】【板金フィーチャーの高度な展開制御】ISheetMetalFeatureDataを用いたベンドライン(曲げ線)情報の抽出と展開図DXFのエクスポート – SolidWorks VBA解析バイブル

スポンサーリンク

SolidWorks板金自動化の極意:ベンドライン抽出とDXFエクスポートを掌握せよ

こんにちは。SolidWorksのAPIという深淵へようこそ。
「マクロの記録」ボタンを押して生成されたコードを眺め、「なぜか動かない」「なぜか遅い」と悩む日々は今日で終わりにしましょう。

今回は、板金設計の自動化において避けては通れない「ISheetMetalFeatureData」を用いたベンドライン抽出と、現場直結の「DXF自動エクスポート」の技術を伝授します。これさえ理解すれば、貴方の設計効率は劇的に向上します。

1. なぜ「ISheetMetalFeatureData」なのか?

SolidWorksの板金モデルを扱う際、単に「フラットパターン(展開図)」をDXFにするだけなら記録マクロで十分です。しかし、「曲げ角度や曲げ半径を読み取り、ファイル名に付与したい」「特定のベンドライン情報だけを制御したい」という要件が出た瞬間、記録マクロは無力化します。

ここで登場するのが `ISheetMetalFeatureData` です。これは、板金フィーチャーの中に隠された「設計の意図(パラメータ)」を直接引き抜くための鍵なのです。

2. 実践:板金展開図エクスポートのコード

まずは、現在のモデルからフラットパターンを特定し、ベンドライン情報を含めたDXFをエクスポートするコードを見てみましょう。

Option Explicit

Sub ExportSheetMetalDXF()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swFeat As SldWorks.Feature
Dim swSheetMetal As SldWorks.SheetMetalFeatureData
Dim strPath As String, strFileName As String

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

‘ 1. モデルが開かれているか確認
If swModel Is Nothing Then MsgBox “モデルを開いてください”: Exit Sub

‘ 2. フラットパターンのフィーチャーを検索
Set swFeat = swModel.FeatureManager.FeatureByName(“Flat-Pattern1”)
If swFeat Is Nothing Then MsgBox “フラットパターンが見つかりません”: Exit Sub

‘ 3. ファイルパスの設定(デスクトップに保存)
strPath = Environ(“USERPROFILE”) & “\Desktop\”
strFileName = strPath & Left(swModel.GetTitle, InStr(swModel.GetTitle, “.”) – 1) & “_展開図.dxf”

‘ 4. DXFエクスポート実行
‘ 第4引数でベンドラインの出力(True)を指定するのが肝
Dim bSuccess As Boolean
bSuccess = swModel.Extension.SaveAs(strFileName, _
swSaveAsVersion_e.swSaveAsCurrentVersion, _
swSaveAsOptions_e.swSaveAsOptions_Silent, _
Nothing, 0, 0)

If bSuccess Then
MsgBox “DXF出力完了: ” & strFileName
Else
MsgBox “エクスポートに失敗しました。”
End If
End Sub

3. ここがプロの分かれ道:陥りやすい罠と対策

① 「FeatureByName」が効かない恐怖

初心者の方が最もハマるのが「フィーチャーが見つからない」というエラーです。
板金部品において「Flat-Pattern1」は、一度でも展開状態にしたことがないと生成されない場合があります。

  • 解決策: コード内で `swFeat.Select2(False, 0)` を実行して強制的にフィーチャーをアクティブにするか、`FeatureManager.Unsuppress` を使用して展開状態をプログラムで確保してください。

② モデルの単位系に注意

APIは内部的に「メートル法(メートル・キログラム・秒)」で動いています。
もしDXFの数値が1000倍になっていたり、小さくなっていたりする場合は、モデルの単位系と出力時のスケール設定が一致しているか確認してください。

③ なぜ「SaveAs」を使うのか?

`SaveAs` メソッドは非常に強力です。特に `swSaveAsOptions_Silent` を指定することで、保存時に表示されるダイアログボックスを無視し、バックグラウンドで高速に処理を完結させることができます。これが「自動化」の第一歩です。

4. さらに高みを目指す君へ:ISheetMetalFeatureDataの活用

もし、ベンドラインの角度や半径を取得したい場合は、以下のように `GetDefinition` を使用します。

‘ フィーチャーの定義を取得
Set swSheetMetal = swFeat.GetDefinition
Debug.Print “曲げ半径: ” & swSheetMetal.BendRadius
Debug.Print “板厚: ” & swSheetMetal.Thickness

この数値を配列に格納し、ファイル名に自動付与すれば、レーザー加工機オペレーターが迷うことは一切なくなります。「ファイル名だけで全ての情報が完結する」——これこそが、エンジニアリングにおける究極の親切設計です。

まとめ

1. 記録マクロは「参考書」であって「回答」ではない。
2. フラットパターンの存在確認は、エラーハンドリングの基本。
3. ISheetMetalFeatureDataで設計パラメータを操ることで、自動化の幅は無限に広がる。

プログラミングは、単に作業を楽にするための手段ではありません。あなたが定義したロジックが、明日からの現場のミスをゼロにし、生産性を劇的に変えるのです。

このコードをベースに、自分なりの「命名規則自動化エンジン」を構築してみてください。壁にぶつかったら、またここに戻ってきてください。いつでも貴方の背中を押し、次のステップへ導きますよ。

それでは、素晴らしい自動化ライフを!

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