【入門編】【ミラー・パターン】FeatureManager.FeatureLinearPattern2で大量のフィーチャを高速複製するコツ – SolidWorks VBA解析バイブル

スポンサーリンク

SolidWorks APIの真髄:大量パターン化を「爆速」で処理する究極のチューニング術

こんにちは。SOLIDWORKS自動化の深淵へようこそ。

「マクロの記録」から卒業し、自力でコードを書こうとするあなた。素晴らしい挑戦です。しかし、いざ数千個のフィーチャを生成しようとすると、SOLIDWORKSが重くなり、挙動が極端に遅くなる……そんな壁にぶつかっていませんか?

今日は、`FeatureLinearPattern2` を使いこなし、「描画負荷を極限まで減らして、処理時間を秒単位で短縮する」ための極意を伝授します。

1. なぜ、あなたのマクロは「重い」のか?

初学者が陥る最大の罠。それは、「APIが呼ばれるたびに、GUIが律儀に画面を更新していること」です。

SOLIDWORKSは高性能な3D CADですが、APIから「このフィーチャを作れ!」と命令が飛ぶたびに、画面上のグラフィックスを再描画し、フィーチャーツリーを再構築しようとします。10回なら無視できますが、100回、1000回と重なれば、PCは悲鳴を上げます。

これを防ぐための「黄金の鉄則」がこれです。

> 「更新を止め、一気に書き込み、最後にドカンと再描画する」

2. 爆速化のための「3つの秘伝」

① `FeatureManagerSuppressEditMode` を活用せよ

処理中は再構築を一時停止させます。これにより、SOLIDWORKSは計算リソースを「描画」から「計算」へ全振りします。

② `ModelDocExtension.Rebuild` の回数を最小限に

ループの中で何度も再構築(Rebuild)を呼ぶのは厳禁です。全てのフィーチャを生成し終えてから、一括で再構築するのがプロの作法です。

③ `FeatureLinearPattern2` の引数を正しく理解する

この関数は強力ですが、引数が多いのが難点です。一つでも間違えるとエラーになります。特に「フィーチャの選択」と「方向指定」は慎重に。

3. 実践!高速パターン生成のサンプルコード

それでは、実際に動作するコードを見ていきましょう。このコードは、あらかじめ作成した「カット押し出し」などを直線状にパターン化する際のテンプレートです。

Sub FastLinearPattern()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swFeatMgr As SldWorks.FeatureManager

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

‘ 1. 処理速度向上のための最適化
‘ 画面更新を停止させることで、描画負荷を排除
swModel.FeatureManager.EnableFeatureTree = False
swModel.EditSuppress2 ‘ 処理中は再構築をオフにする

‘ 直線パターン化の引数定義
‘ FeatureLinearPattern2(NoOfInstances1, Spacing1, NoOfInstances2, Spacing2, …)
‘ ここではX方向に5個、間隔10mmで配置する例
Dim swFeat As SldWorks.Feature
Set swFeat = swFeatMgr.FeatureLinearPattern2( _
5, 0.01, _ ‘ 1つ目の方向:個数, 間隔
1, 0.01, _ ‘ 2つ目の方向:個数, 間隔
False, False, _ ‘ パターン方向の反転設定
Nothing, _ ‘ パターン方向の参照(Nothingならエッジ選択)
False, _ ‘ ジオメトリパターン
False) ‘ インスタンスのスキップ

‘ 2. 処理終了後に更新を許可して一気に再構築
swModel.FeatureManager.EnableFeatureTree = True
swModel.EditUnsuppress2
swModel.ForceRebuild3 False ‘ 一括再構築で最新状態へ

MsgBox “パターン生成完了!”
End Sub

4. 陥りやすいエラーと回避策

「引数が多すぎてエラーになる」

`FeatureLinearPattern2` は非常に引数が多いメソッドです。特に「方向指定」に使うエッジや面が正しく選択されていないと失敗します。
コツ: 実行前に、まずは手動でパターン化を試し、必要な選択要素が何なのかを明確にしましょう。

「フィーチャが見つからない」

APIで操作するフィーチャには、あらかじめ `Name` を設定しておくか、生成直後にオブジェクトを取得しておくのが安全です。`swFeatMgr.SelectByID2` で名前を指定して選択してからパターンをかけると、エラー率が劇的に下がります。

最後に:エンジニアとしての心構え

SOLIDWORKS APIを扱うことは、CADの内部構造と「対話」することです。
最初から完璧なコードは書けなくて当然です。しかし、「どうすれば描画負荷を減らせるか?」「どうすれば最短ルートで計算を終わらせられるか?」という視点を持つだけで、あなたの書くマクロは、単なる自動化ツールから、現場を救う「最強のエンジン」へと進化します。

このコードをベースに、ぜひあなたの業務に合わせてカスタマイズしてみてください。
もし壁にぶつかったら、それはあなたがプロのエンジニアに近づいている証拠です。またいつでも聞きに来てくださいね。応援しています!

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