パラメータ最適化支援ソフトウェア
AMDESS

事例8 SolidWorksと連携した寸法最適化

■概要

寸法最適化で寸法を変更するには、直接CADモデルを変更してリメッシュしていく方法と、メッシュそのものを変更(モーフィング)していく方法があります。

多くのCADは、CADモデルを操作するためのスクリプト言語をサポートし、これを利用することで外部プログラムからCADモデルの操作が可能です。

ここではVBAマクロを利用し、SolidWorks(ソリッドワークス・ジャパン株式会社)と AMDESS を連携させた寸法最適化の例を紹介します。

■解析モデル

解析モデルイメージ 右図のような片持ち梁の寸法を変更します。

寸法変更後の解析は、SolidWorksのメッシャーとソルバーを利用します。


■最適化条件

最適化条件イメージ

設計変数

右図DV1,DV2,DV3の3か所の寸法

目的関数

ミーゼス応力の最小化

制約条件

  • 体積 ≦ 85000
  • 10 ≦ DV1 ≦25
  • 10 ≦ DV2 ≦25
  • 20 ≦ DV3 ≦50

VBAマクロ

以下に、SolidWorks(CAD)モデルの寸法を変更するためのVBAマクロの例を示します。

Sub analysis(DV1 As Double, DV2 As Double, DV3 As Double)
  ' 初期設定
  Dim modelDoc As Object
  Set swApp = GetObject(, "Sldworks.Application")
  Set modelDoc = swApp.ActivateDoc("cantilever_bracket.sldprt")
  Set D1 = modelDoc.Parameter("D11@Sketch1@cantilever_bracket.SLDPRT")
  Set D2 = modelDoc.Parameter("D12@Sketch1@cantilever_bracket.SLDPRT")
  Set D3 = modelDoc.Parameter("D13@Sketch1@cantilever_bracket.SLDPRT")
  Set motionStudyMgr = modelDoc.Extension.GetMotionStudyManager()

  ' 変更
  boolstatus = motionStudyMgr.ActivateMotionStudy("ReadyStatic")
  Call D1.SetSystemValue2(DV1 * 0.001, 0)
  Call D2.SetSystemValue2(DV2 * 0.001, 0)
  Call D3.SetSystemValue2(DV3 * 0.001, 0)
  boolstatus = modelDoc.EditRebuild3()

  ' リメッシュ
  ~~~~~~
  ' 解析実行
  ~~~~~~
  ' 結果取得
  ~~~~~~
  ' 結果書き出し
  ~~~~~~
End Sub

■結果

最適化結果

制約を全て満たしたうえで、ミーゼス応力が11.6%減少いたしました。

  最適化前 最適化後
DV1 25.0 14.5
DV2 17.5 25.0
DV3 20.0 26.8
体積 85969.65 84996.39 ← 制約満足
ミーゼス応力 174.3752 154.2041 ← 11.6%減

最適化前形状  最適化後形状

* 画像クリックで大きく表示します。

寸法変更の様子

※ 1度再生をクリックすると右下に表示される、設定アイコンで画質を変更できます。

■考察

エクセルのVBAマクロを利用してAMDESSとSolidWorksを連携することができました。
この事例ではSolidWorksに内蔵されているメッシャーとソルバーを利用したため、解析はSolidWorks内で閉じています。

他のソルバーを利用する際も、そのソルバーが 【VBAマクロ】 に対応していれば、同様にAMDESSから実行可能です。

事例一覧に戻る