【入門編】【板金設計の自動化】SheetMetalFeatureData2.GetFlatPatternFeatureを用いたフラットパターン自動展開とDXF出力自動化 – SolidWorks VBA解析バイブル

スポンサーリンク

SolidWorks VBAで板金展開を自動化せよ:フラットパターンDXF出力の極意

こんにちは。SolidWorksの深淵を覗き込み、APIの海を渡ってきたエンジニアです。

皆さんは、板金パーツの展開図を一つずつ手作業で「右クリック→展開→DXF/DWG保存」と繰り返していませんか? もしそうなら、今日でその苦行とはおさらばしましょう。

今回は、実務で最も要望が多く、かつエンジニアの時間を奪う「フラットパターンのDXF出力」を、VBAで一撃で終わらせる術を伝授します。

1. なぜ「マクロの記録」では限界があるのか?

SolidWorksの「マクロの記録」ボタンは便利ですが、「フラットパターン(展開図)」は特別な存在です。

モデルツリーに表示されている「Flat-Pattern」フィーチャは、実はただのフィーチャではなく、モデルの背後で計算され、切り替わる「ビュー」のようなものです。APIを通さずに操作しようとすると、SolidWorksは「え?今どの状態のパーツをDXFにすればいいの?」と迷子になります。

我々が操作すべきは `SheetMetalFeatureData2` という、板金特有の複雑な情報を握っているオブジェクトです。ここを掌握することが、自動化の第一歩です。

2. 実践コード:フラットパターンDXF自動書き出し

以下のコードは、アクティブな板金パーツを自動判別し、同一階層にDXFを保存するスクリプトです。そのままコピペして、自分の環境で試してみてください。

Option Explicit

‘ メイン処理:フラットパターンをDXFとして出力
Sub ExportFlatPatternToDXF()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swPart As SldWorks.PartDoc
Dim swFeat As SldWorks.Feature
Dim swFlatPattern As SldWorks.Feature
Dim swFlatPatternData As SldWorks.SheetMetalFeatureData2
Dim savePath As String

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

‘ パーツ以外なら終了
If swModel.GetType <> swDocPART Then Exit Sub
Set swPart = swModel

‘ フラットパターンフィーチャを探索
Set swFeat = swPart.FirstFeature
Do While Not swFeat Is Nothing
If swFeat.GetTypeName2 = “FlatPattern” Then
Set swFlatPattern = swFeat
Exit Do
End If
Set swFeat = swFeat.GetNextFeature
Loop

If swFlatPattern Is Nothing Then
MsgBox “このパーツにはフラットパターンが含まれていません。”
Exit Sub
End If

‘ 保存パスの設定(パーツ名.dxf)
savePath = Left(swModel.GetPathName, InStrRev(swModel.GetPathName, “.”) – 1) & “_Flat.dxf”

‘ DXF出力の実行
‘ 第4引数: 0=全てのジオメトリ, 1=外部輪郭のみ
‘ 第5引数: レイヤー設定などはここで行う
Dim status As Boolean
status = swPart.ExportToDWG2(savePath, swModel.GetPathName, _
swExportToDWG_e.swExportToDWG_ExportSheetMetal, _
True, Nothing, False, False, 0, Nothing)

If status Then
MsgBox “DXF出力完了: ” & vbCrLf & savePath
Else
MsgBox “出力失敗。モデルを確認してください。”
End If
End Sub

3. コードの心臓部を読み解く

このスクリプトで重要なのは、以下の3点です。

① `GetTypeName2 = “FlatPattern”`

SolidWorksのツリー構造を上から順に舐めていき、文字列でフィーチャタイプを判定しています。これで、どんなパーツであっても必ず「展開図」を見つけ出します。

② `ExportToDWG2` の魔法

これが最も重要なメソッドです。このメソッドは、単なるファイル保存ではなく、「板金展開設定を保持したままDXF化する」という特権的な処理を行います。

  • `swExportToDWG_ExportSheetMetal`:これが「板金専用の書き出しモード」を強制するフラグです。これがないと、ただの投影図になってしまいます。

③ エラーを未然に防ぐ「型チェック」

`If swModel.GetType <> swDocPART` という一文。これがプロのコードです。アセンブリで実行してエラーを吐くようなマヌケなコードは書かない。これがエンジニアの流儀です。

4. 陥りやすい罠:ここだけは注意!

初学者が必ず突き当たる壁が「フラットパターンが抑制(Suppressed)されている」状態です。

もしコードが動かない場合は、手動で一度フラットパターンを「展開(アンサプレス)」してから実行してみてください。APIは、人間が手動でできないことは実行できません。
※より高度な自動化を目指すなら、コード内で `swFlatPattern.SetSuppression2 swFeatureUnsuppressed_Local` を呼び出し、強制的に展開状態にする処理を追加するのが定石です。

最後に:自動化の先にあるもの

このコードが動いた瞬間、あなたの業務時間は「DXFを手作業で出す時間」から解放されます。浮いた時間で、さらに複雑なアセンブリの自動生成や、属性情報の自動転記に挑戦してみてください。

SolidWorks APIを使いこなすことは、単なる「作業の効率化」ではありません。「設計という創造的な行為に、より多くの時間を割くための環境づくり」なのです。

それでは、素晴らしい自動化ライフを!また次の深淵でお会いしましょう。

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