SolidWorks自動化の極意:SketchManagerで「六角ボルト頭部」を一瞬で描画・拘束する技術
こんにちは。SolidWorks APIの深淵へようこそ。
「マクロの記録」ボタンを押して生成された、冗長で修正困難なコードに頭を抱えていませんか?
自動化の真髄は、「操作をなぞること」ではなく「ジオメトリを数学的に定義すること」にあります。今回は、機械設計の基本である「六角ボルトの頭部」を例に、`SketchManager.CreatePolygon`を用いたプロフェッショナルな作図術を伝授します。
これをマスターすれば、数百種類のボルトライブラリを数秒で構築することも夢ではありません。
—
1. なぜ「CreatePolygon」なのか?
手動で作図する場合、多くの人は「線分を6本引いて、それぞれに等長拘束をかける」という回り道をします。しかし、APIの世界では「目的の図形を一撃で生成する」のが鉄則です。
`CreatePolygon`メソッドは、中心座標と外接円半径を指定するだけで、自動的に正多角形を構築し、さらに「中心点と頂点が垂直(あるいは水平)になるような関係」まで最適化してくれます。
—
2. 実装コード:ボルト頭部自動生成スクリプト
以下のコードは、アクティブなパーツドキュメントの「正面」スケッチに、半径10mmの六角形を生成し、さらに寸法拘束を付与するものです。
Option Explicit
Sub CreateHexBoltHead()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSketchMgr As SldWorks.SketchManager
Dim swSketchSegment As SldWorks.SketchSegment
Dim swDisplayDim As SldWorks.DisplayDimension
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
‘ 1. 新規スケッチの開始
Set swSketchMgr = swModel.SketchManager
swSketchMgr.InsertSketch True
‘ 2. 正六角形の生成
‘ 引数: 中心X, 中心Y, 中心Z, 頂点X, 頂点Y, 頂点Z, 辺の数
‘ (0,0,0)を中心に、半径10mmの六角形を描画
Set swSketchSegment = swSketchMgr.CreatePolygon(0, 0, 0, 0, 0.01, 0, 6)
‘ 3. 自動寸法拘束の付与
‘ スケッチ線分を選択して、寸法(外接円の半径相当)を定義する
swModel.ClearSelection2 True
swSketchSegment.Select4 False, Nothing
‘ 寸法を追加(位置は座標で指定)
Set swDisplayDim = swModel.AddDimension2(0.01, 0, 0, 0.01, 0, 0)
swDisplayDim.SetSystemValue2 0.01 ‘ ここで半径を10mmに確定
‘ 4. スケッチ終了
swSketchMgr.InsertSketch True
MsgBox “六角ボルト頭部のスケッチが完了しました。”
End Sub
—
3. コードの「急所」を解説
このコードを読み解くための、プロとして知っておくべき3つのポイントです。
① 座標系の「重み」を理解する
SolidWorks APIは基本的に「メートル法(メートル・キログラム・秒)」で動きます。`0.01`という値は、10mmを指します。ここをミリ単位で書くとスケッチが巨大化してしまいます。単位変換の罠には注意してください。
② `Select4` と `ClearSelection2` の重要性
APIで何かを操作する際、必ず「選択」というステップが必要になります。前の操作の選択状態が残っていると、意図しない場所に寸法が付く事故が起きます。操作前には必ず `ClearSelection2` を呼ぶのが、熟練エンジニアの流儀です。
③ 拘束の「ライフサイクル」
`CreatePolygon`で作られた図形は、デフォルトでは「浮動状態」です。これに寸法を打つことで、初めて「完全定義」となります。設計現場では「未定義スケッチ」はバグの温床です。`AddDimension2`で値を縛り、設計意図をコードに定着させましょう。
—
4. 初学者が陥るエラーと対処法
- 「スケッチが開かれていない」エラー:
`InsertSketch`を呼び出す前に、適切な平面が選択されているか確認してください。もし平面がない場合は `swModel.Extension.SelectByID2` で「Front Plane」などを先に選択しておく必要があります。
- 寸法がずれる:
`AddDimension2`の引数は、寸法の配置位置を指定します。図形から少し離れた座標を指定することで、見やすい寸法配置が可能になります。
—
次のステップへ
今回のコードは、あくまで「単一の六角形」を作るための基礎です。
ここから発展させて、「外部Excelからボルトの呼び径(M6, M8, M10…)を読み込み、数秒で全サイズをモデリングする」という工程まで自動化してみてください。
SolidWorks VBAは、あなたの「退屈な手作業」を「知的生産」へ変える最強の武器です。
分からないことがあれば、いつでも聞いてください。壁を越えるためのヒントは、すべてAPIの中にありますから。
