[C# SolidWorks API] 固定&変位境界条件を設定する

境界条件とは,シミュレーションを行うときに対象物(設計した部品や製品)に負荷する荷重や温度,変位などの条件のことです.

境界条件を設定する手順は次の通りです.

 1. 条件を設定する対象を選択する
 2. 条件を設定する

ここでは,固定条件と変位条件を設定してみます.

実行例

下図のような100 mm角の立方体に,下面を固定する,上面を10 mm下方へ押し込むという境界条件を設定します.

Dimensions and Boundary Condition

 

プログラムを実行すると,拘束固定-1平面上-1の条件が追加されます.

Constraint on SolidWorks

 

固定-1を選択して詳細を確認すると,下面”固定ジオメトリ”が追加されていることがわかります.

Fixec Boundary Condition

 

平面上-1を選択して詳細を確認すると,上面”平面上: 参照面に垂直 (mm)”が追加されていることがわかります.

Displacement Boundary Condition

 

コード

コード全体を確認しましょう.Mainメソッドを確認すると分かるように,SolidWorksを起動 > 立方体を造る > Simulation AddInを読み込む > Simulationスタディを作る > 境界条件を設定するという順番で実行されます.

 

境界条件を設定するために,applyFixedBCapplyDisplacementBCの2つのメソッドを定義しています.以下では,その詳細を確認していきましょう.

解説 :applyFixedBC

applyFixedBCは,固定境界条件を与えるを与えるメソッドです

6,7行目
座標値をもとにして,境界条件を設定する面(下面)を選択しています.
ISelectionMgr

12行目
下面のオブジェクトを取得しています.
GetSelectedObject6

16行目
荷重および拘束条件を設定するためのオブジェクトを取得しています.
ICWLoadsAndRestraintsManager

18行目
固定境界条件を設定しています.
AddRestraint

CWRestraint AddRestraint(

    System.int NRestraintType,  // 拘束の種類:swsRestraintType_e
    System.object DispArray,     // 拘束を適用する対象の配列
    System.object RefGeom,      // 方向を指定するための参照形状
                                              // (必要に応じて参照面など指定します)
    out System.int ErrorCode    // エラーコード:swsRestraintError_e

)

固定境界条件を指定するため,拘束の種類をswsRestraintTypeFixedとしています.

解説:applyDisplacementBC

applyDisplacementBCは,変位境界条件を与えるメソッドです

6,7行目
座標値をもとにして,境界条件を設定する面(上面)を選択しています.
ISelectionMgr

12行目
下面のオブジェクトを取得しています.
GetSelectedObject6

16行目
荷重および拘束条件を設定するためのオブジェクトを取得しています.
ICWLoadsAndRestraintsManager

18行目
変位境界条件を設定しています.
拘束の種類に,swsRestraintTypeFlatFaceを設定しています.

21行目
荷重および拘束条件を内容を編集できるようにしています.
RestraintBeginEdit

22行目
変位量を編集しています.

void SetTranslationComponentsValues(
    System.int BVal1,           // 基準面1に平行な方向に変位させる場合は1
                                         // 変位させない場合は0
    System.int BVal2,     // 基準面2に平行な方向に変位させる場合は1
                                         // 変位させない場合は0
    System.int BVal3,           // 参照面に垂直な方向に変位させる場合は1
                                         // 変位させない場合は0
    System.double DVal1,    // 基準面1に平行な方向の変位量
    System.double DVal2,    // 基準面2に平行な方向の変位量
    System.double DVal3     // 参照面に垂直な方向の変位量
)

今回の場合は,

 基準面1に平行な平面 =z軸の負の方向
 基準面2に平行な平面 = x軸の正の方向

となっています.

選択した面によって方向の定義が複雑になる場合があります.選択した方向の定義は,GUI上で確認しておくと間違いがないかと思います.下の図のようにして,方向を確認することができます.拘束で,①平面上を選択②平面を選択③方向を選択します.選択した面での基準面の方向が矢印で描画されます.

Direction for Boundary Condition

拘束の種類にswsRestraintTypeFlatFaceを設定すると,

 参照面=選択した面

となります.どちらの方向が正の方向になるかについても,GUIで確認しておいた方が良いでしょう.

23行目
変位量の単位をmmに設定しています.
Unit
swsLinearUnit_e

24行目
拘束条件の編集を終了しています.
RestraintEndEdit

まとめ

固定境界条件を設定する方法を説明しました.

変位境界条件を設定する方法を説明しました.

APIで境界条件を設定するプログラムを作成し,動作を確認しました.

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

Thank you for comment!