汎用パラメーター最適化ソフトウェア
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%減★ |
* 画像クリックで大きく表示します。
寸法変更の様子
■考察
エクセルのVBAマクロを利用してAMDESSとSolidWorksを連携することができました。
この事例ではSolidWorksに内蔵されているメッシャーとソルバーを利用したため、解析はSolidWorks内で閉じています。
他のソルバーを利用する際も、そのソルバーが 【VBAマクロ】 に対応していれば、同様にAMDESSから実行可能です。
お問い合わせ
気になる点やご不明な点等、お気軽にお問い合わせください。
株式会社くいんと 営業本部 Tel 042(362)3884