こんにちは。SolidWorksの世界へようこそ。
「マクロの記録」ボタンを押して、生成された無意味に長いコードに絶望したことはありませんか?大丈夫、それが自動化エンジニアへの入り口です。
今日は、プラスチック筐体設計の「魂」とも言える「シェル(肉抜き)」と「リブ(補強)」を、APIの力で完全に掌握する方法を伝授します。これさえ理解すれば、複雑な筐体設計を数秒で終わらせる「設計の魔術師」になれます。
—
1. なぜ「シェル」と「リブ」を自動化するのか?
設計現場では、外形が変わるたびに「シェル厚さの変更」や「リブ位置の微調整」が繰り返されます。手作業ではミスも起きるし、何より退屈です。
SolidWorks APIを使えば、これらは単なる「数値の変更」に過ぎません。これから紹介するコードは、単に機能を呼び出すだけでなく、「フィーチャのライフサイクル」を管理するという、一歩先行くアプローチです。
—
2. 筐体自動化の核心:ShellFeatureDataとRibFeatureData
SolidWorksのフィーチャは、実は「データオブジェクト」と「フィーチャ本体」の二段構えで構成されています。
- FeatureData: フィーチャの「設定値(厚さや方向など)」を保持する箱
- Feature: モデルツリーに存在する「実行体」
この関係性を理解するのが、マクロ使いへの最短ルートです。
実践:自動シェル化マクロ
まずは、ソリッドモデルの特定の面を除去し、肉厚を作るコードを見てみましょう。
Sub CreateSmartShell()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swFeatureMgr As SldWorks.FeatureManager
Dim swShellData As SldWorks.ShellFeatureData
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swFeatureMgr = swModel.FeatureManager
‘ シェルフィーチャの定義データを作成
Set swShellData = swFeatureMgr.CreateDefinition(swFtrType_Shell)
‘ 肉厚を2mmに設定
swShellData.WallThickness = 0.002
‘ 外部方向に肉厚を出す設定(必要に応じて)
swShellData.Outward = False
‘ 実行!
swFeatureMgr.CreateFeature(swShellData)
MsgBox “シェル作成完了!”
End Sub
—
3. 「リブ」生成の難所を突破する
リブ作成が難しいのは、「スケッチ」と「フィーチャ」の連携が必要だからです。プロのエンジニアは、「既に存在するスケッチをどう指定するか」という点に最も注意を払います。
リブ生成のスマートなコード例
リブは単なる押し出しではなく、拘束条件が鍵です。
Sub CreateSmartRib()
Dim swModel As SldWorks.ModelDoc2
Dim swFeatMgr As SldWorks.FeatureManager
Dim swRibData As SldWorks.RibFeatureData
Set swModel = Application.SldWorks.ActiveDoc
Set swFeatMgr = swModel.FeatureManager
‘ リブ定義データの初期化
Set swRibData = swFeatMgr.CreateDefinition(swFtrType_Rib)
‘ リブ幅を3mmに設定
swRibData.Thickness = 0.003
‘ リブの方向(0:両側, 1:片側, 2:反対側)
swRibData.Direction = 0
‘ 抜き勾配(今回は0度)
swRibData.DraftAngle = 0
‘ モデル上のスケッチを選択してから実行する必要がある
‘ ※あらかじめスケッチを選択しておくこと
swFeatMgr.CreateFeature(swRibData)
End Sub
—
4. 陥りやすい罠と「回避の知見」
初学者が必ず突き当たる壁が3つあります。ここをクリアすれば、あなたはもう中級者です。
1. 単位系(Unit)の罠:
SolidWorks APIは常に「メートル法(m)」で計算します。mmで入力すると、結果が1000倍になって現れます。必ず `0.002` のように変換する癖をつけてください。
2. 選択状態の曖昧さ:
`CreateFeature` は、現在の「選択されているエンティティ(面やスケッチ)」を基準にします。コード実行直前に `swModel.Extension.SelectByID2` で確実にターゲットを選択させるのが、確実な動作の秘訣です。
3. 再構築(Rebuild)を忘れない:
コード実行後、モデルが最新状態になっていないことがあります。最後に必ず `swModel.EditRebuild3` を呼び出すのが、プロのたしなみです。
—
最後に:自動化は「設計を楽にする」ための手段
コードを書いていると、つい「コードを動かすこと」自体が目的になりがちです。しかし、本来の目的は「あなたの創造的な設計時間を増やすこと」です。
今回紹介したShellやRibのAPIは、ほんの入り口に過ぎません。これらを組み合わせれば、パラメトリックな筐体自動生成ツールだって作れます。
まずは、自分の手元にある部品で試してみてください。エラーが出たら、それは「SolidWorksがあなたに何かを教えようとしているサイン」です。一つひとつ解決していけば、数ヶ月後にはあなたの設計室は、魔法のような自動化で満たされているはずですよ。
それでは、素晴らしい自動化ライフを!
