【SolidWorks自動化の真髄】SQL Serverからパーツを自動生成する「完全無人化エンジン」の構築術
こんにちは。現場で泥臭い自動化を積み重ね、いつしかSolidWorks APIの深淵を覗き見てしまった筆者です。
今日は、マクロの記録ボタンを押して満足している段階から一歩踏み出し、「データベースの受注データが、そのまま3Dモデルになる」という、エンジニアの夢とも言える「完全自動生成エンジン」の作り方を伝授します。
「VBAは単なるお絵描きツールじゃない。業務を動かす心臓部だ」ということを、今日で確信してください。
—
1. なぜ「外部データベース連携」なのか?
多くの現場では、Excelの指示書を人間が見て、SolidWorksで数値を打ち直しています。これでは「転記ミス」と「退屈な時間」しか生まれません。
今回目指すのは、SQL Server内の受注テーブルをトリガーにして、SolidWorksが自律的にパーツを作成するアーキテクチャです。これにより、設計のボトルネックは消滅し、あなたはよりクリエイティブな課題に集中できるようになります。
—
2. 開発の全体像(アーキテクチャ)
このシステムは以下の3ステップで動きます。
1. データ抽出: ADODBを使い、SQL Serverから寸法値(長さ、幅、厚みなど)を吸い上げる。
2. モデル構築: `ISldWorks` と `IModelDoc2` を駆使し、新規パーツの生成とスケッチ押し出しを行う。
3. パラメータ反映: `IDimension` オブジェクトを操作し、寸法を動的に更新する。
—
3. 実装コード:SQL連携から自動生成まで
このコードは、標準モジュールに貼り付けて動かせる実用的なテンプレートです。
‘ 必要な参照設定: Microsoft ActiveX Data Objects (ADO) Library
Option Explicit
Sub GeneratePartFromSQL()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sql As String
‘ 1. SQL Serverへの接続
Set conn = New ADODB.Connection
conn.ConnectionString = “Provider=SQLOLEDB;Data Source=YOUR_SERVER;Initial Catalog=YOUR_DB;Integrated Security=SSPI;”
conn.Open
‘ 2. データの取得
sql = “SELECT Length, Width, Thickness FROM Orders WHERE OrderID = ‘A-1001′”
Set rs = conn.Execute(sql)
If Not rs.EOF Then
‘ 3. SolidWorks起動
Set swApp = Application.SldWorks
Set swModel = swApp.NewDocument(“C:\ProgramData\SolidWorks\…\Part.prtdot”, 0, 0, 0)
‘ 4. ここでモデル生成ロジックを実行(簡略化のため寸法更新のみ表示)
‘ 実際には CreateFeatureManager等でスケッチを書く
UpdateDimensions swModel, rs!Length, rs!Width, rs!Thickness
End If
‘ 後処理
rs.Close
conn.Close
End Sub
Sub UpdateDimensions(model As SldWorks.ModelDoc2, L As Double, W As Double, T As Double)
‘ メモ: パラメータ名が “D1@Sketch1” のように決まっている前提
model.Parameter(“D1@Sketch1”).SystemValue = L / 1000 ‘ mm単位変換に注意
model.Parameter(“D2@Sketch1”).SystemValue = W / 1000
model.EditRebuild3
End Sub
—
4. 初学者が必ずハマる「3つの落とし穴」
コードを動かす過程で、必ずここで躓きます。先回りして教えますね。
① 単位系の呪い(メートル vs ミリメートル)
SolidWorksのAPIは、内部的にメートル(m)で計算を行います。コード内で「100mm」と書きたいなら、必ず `0.1` と指定してください。これを忘れると、巨大なパーツが生成されてエラーになります。
② モデルの再構築(Rebuild)のタイミング
値を変更しただけでは、ジオメトリは更新されません。必ず `model.EditRebuild3` を呼び出し、SolidWorksに「計算し直せ」と命じる必要があります。この命令を忘れると、前の形状のまま保存されてしまいます。
③ インターフェースの解放(メモリリーク)
ループ内で何度もモデルを開く場合、`Set swModel = Nothing` を忘れないでください。これを怠ると、PCのメモリが食いつぶされ、SolidWorksが突然フリーズする「死の宣告」を受けます。
—
5. 最後に:エンジニアとしてのマインドセット
「自動化」とは、単にコードを書くことではありません。「人間がやらなくていい作業を、機械がミスなく行う仕組みを作ること」です。
今日紹介したコードは、あなたの自動化エンジニアとしての第一歩です。最初はSQL接続がうまくいかないかもしれません。でも、そのエラーこそが成長の種です。
もし分からないことがあれば、またいつでも聞きに来てください。君がSolidWorksのAPIを完全に掌握し、設計の現場を変えるその日まで、私はここで待っていますよ。
—
次回のテーマ予告: 「アセンブリ内での部品自動入れ替えと、BOM自動出力の最適化術」について語ります。お楽しみに!
