はじめに
Femapは、有限要素法解析(FEA)を行うための強力なツールですが、ジオメトリやプロパティの設定が多いと手間がかかります。そんな時に便利なのがEXCEL VBAを使った自動化です。この記事では、Femapで「T型断面のビーム」のプロパティを作成する方法を解説します。コード付きで説明するので、初心者の方も安心してください!
プロパティT型断面のビームの作成コード
まず、ビームの作成前にマテリアルが作成済みであることを確認してください。エクセルを用いたマテリアルの作成方法は次の関連記事でも紹介しています。
それでは、FEMAPで新しいT型ビームを作成するVBAコードの例を示します。
コードは、FEMAPを起動してから実行してください。
VB
Sub CreatTBeam
'Femap model オブジェクトの作成
Dim f As Object
Set f = GetObject(,"femap.model")
'プロパティオブジェクトの作成
Dim pr As Object
Set pr = f.feProp
'リターンコードの格納先
Dim rc As Long
'形状の入力(T型断面の場合)
Dim shape(5) As Double
shape(0) = 134 '高さの入力。この場合、高さ150となる。
shape(1) = 75 '上面の幅。この場合、幅75となる。
shape(2) = 0 'T型ビームの場合、ここには0を入力。
shape(3) = 16 '上面の板厚。この場合、16となる。
shape(4) = 0 'T型ビームの場合、ここには0を入力。
shape(5) = 12 '中央縦ウェブの板厚。この場合12となる。
'オリエンテーション方向の設定。0:右, 1:上, 2:左, 3:下
Dim orient As Long
orient = 0
pr.title = "150X75X12X16 T" 'タイトルの入力。この場合、「150X75X12X16 T」となる。
pr.matlID = 1 'マテリアルIDの入力。この場合1となる。
pr.Type = 5 'タイプの入力。ビームの場合5にする。
'プロパティの作成
rc = pr.ComputeStdShape(12, shape, orient, 0, True, True, False) '引数は順に形状ID, 断面定義パラメータ、向き、断面評価方法、せん断中心オフセット計算、ねじれ定数計算、応力取り出し位置
pr.Put(1) 'プロパティID 1 にここで作成したプロパティを登録する。
'オブジェクト開放
Set pr = Nothing
Set f = Nothing
if rc = 0 then
MsgBox "プロパティ作成に失敗しました"
else
MsgBox "プロパティを作成しました"
End If
End Sub
- 4~5行目はFemapオブジェクトの作成です。FEMAPを起動していないときにこのコードを実行するとエラーとなるので注意が必要です。
- 8~9行目でEntityオブジェクトのプロパティオブジェクトを生成しています。
- 12行目はリターンコードを受け取るのに使用する変数の作成です。Long型にします。
- 15~21行目は形状の入力です。Double型で入力します。T型鋼の場合、shape(2)とshape(4)に0を代入するのがポイントです。
- 24~25行目はオリエンテーション方向の入力。Long型です。0~3までの整数を入力します。
0:右、1:上、2:左、3:下、になります。 - 27行目はタイトルの代入。String型を使います。
- 28行目はマテリアルIDの代入。Long型です。
- 29行目,”.Type”でタイプの入力です。今回はビームの作成なので「5」を指定します。
- 32行目の”.ComputeStdShape()”でプロパティの生成です。
引数は左から順に形状ID(今回はT型断面なので12にする)、断面定義パラメータ配列、オリエンテーション方向、断面評価方法、せん断中心オフセット変数、ねじれ定数計算、応力取り出し位置の7つです。
断面評価方法はLong型で指定します。0:自動、1:オリジナル、2:代替断面性能、3:Nastran PBEAMLです。
せん断中心オフセットはBooleanで指定します。Trueにするとせん断中心オフセットを計算します。
ねじれ定数計算はBooleanで指定します。Trueにするとねじれ定数計算されます。
応力取り出し位置もBooleanで指定します。Trueにするとオブジェクトに現在定義されている応力取り出し位置とオリエンテーションを使った計算になり、Falseにすると応力取り出し位置とオリエンテーションがデフォルトになります。 - 33行目,”.Put()”で生成したプロパティを指定したプロパティIDに登録します。
- 36~37行目はオブジェクトの解放です。なくても問題ありません。
- 39~43行目、プロパティが作成されなかった場合、リターンコードに0が返ります。
エクセルシートと連携させる例
エクセルシートに入力した値でT型断面のビームのプロパティを作成する場合
エクセルで次のようなシートを用意します。
A2からH2までが入力欄です。
上記シートに入力した各値でプロパティを作成するコードは次のようになります。
VB
Sub CreatTBeam
'Femap model オブジェクトの作成
Dim f As Object
Set f = GetObject(,"femap.model")
'プロパティオブジェクトの作成
Dim pr As Object
Set pr = f.feProp
'リターンコードの格納先
Dim rc As Long
'形状の入力(T型断面の場合)
Dim shape(5) As Double
shape(0) = Cells(2, 4) '高さの入力
shape(1) = Cells(2, 5) '上面の幅。
shape(2) = 0
shape(3) = Cells(2, 6) '上面の板厚。
shape(4) = 0
shape(5) = Cells(2, 7) '中央縦ウェブの板厚。
'オリエンテーション方向の設定。0:右, 1:上, 2:左, 3:下
Dim orient As Long
orient = Cells(2, 8)
pr.title = Cells(2,3) 'タイトルの入力。
pr.matlID = Cells(2,2) 'マテリアルIDの入力。
pr.Type = 5 'タイプの入力。ビームの場合5にする。
'プロパティの作成
rc = pr.ComputeStdShape(12, shape, orient, 0, True, True, False) '引数は順に形状ID, 断面定義パラメータ、向き、断面評価方法、せん断中心オフセット計算、ねじれ定数計算、応力取り出し位置
pr.Put(Cells(2,1)) 'プロパティID。ここで指定した番号に作成したプロパティを登録する。
'オブジェクト開放
Set pr = Nothing
Set f = Nothing
if rc = 0 then
MsgBox "プロパティ作成に失敗しました"
else
MsgBox "プロパティを作成しました"
End If
End Sub
プロパティ情報をエクセルに書き出す例
Femapのプロパティ情報をエクセルに書き出すこともできます。I型ビーム、C型ビームと同じように下記の表を準備します。
まず、下のようにエクセルシートを準備してください。
上記シートで取り出したいプロパティIDの番号のみ入力します。
VBAのコードは次のようになります。
このコードを実行すれば、各空欄にプロパティの情報を取り出すことが出来ます。
VB
Sub GetBeamProperty()
On Error GoTo OUT1
'FEMAP model オブジェクトの生成
Dim f As Object
Set f = GetObject(,"femap.model")
On Error GoTo OUT2
'プロパティオブジェクトの生成
Dim pr As Object
Set pr = f.feProp
Dim rc As Long 'リターンコード
pr.Get(Int(Cells(1,2))) 'セルB1で入力したプロパティIDの取得
Cells(2,2) = pr.matlID 'マテリアルIDの取得
Cells(3,2) = pr.title 'タイトルの取得
Cells(4,2) = pr.Type 'タイプの取得。ビーム要素なら5になる。
'もし取得したプロパティがビームなら、次の項目も取得する
If pr.Type = 5 Then
Cells(5,2) = pr.pval(40) '一般断面の高さ
Cells(6,2) = pr.pval(41) '一般断面の上板幅
Cells(7,2) = pr.pval(42) '一般断面の下板幅
Cells(8,2) = pr.pval(43) '一般断面の上板厚
Cells(9,2) = pr.pval(44) '一般断面の下板厚
Cells(10,2) = pr.pval(45) '一般断面の中央部板厚
Cells(11,2) = pr.pval(0) '端点Aの断面積
Cells(12,2) = pr.pval(5) '端点AのY有効断面積
Cells(13,2) = pr.pval(6) '端点AのZ有効断面積
Cells(14,2) = pr.pval(1) '端点AのI1
Cells(15,2) = pr.pval(2) '端点AのI2
Cells(16,2) = pr.pval(16) '端点Aの中性軸オフセットY
Cells(17,2) = pr.pval(17) '端点Aの中性軸オフセットZ
Else
MsgBox "このプロパティ " & Cells(1,2) & " はビームではありません。"
End If
'オブジェクト開放
Set pr = Nothing
Set f = Nothing
Exit Sub
OUT1:
MsgBox "FEMAPを起動してください"
Exit Sub
OUT2:
MsgBox "不明なエラー"
End Sub
- 15行目の”.get(プロパティID)”でプロパティを取得します。取得した値をInt()で囲ってますが、なくてもよいこともあります。Int()で型を指定したほうがエラー防止にはよいです。(他もセルから値をとるときは同様)
- 23~35行目の”.pval(番号)”で各種情報を取得します。取得したい情報によって番号は決まっており、ビームの場合は上記コメントの通りです。
- ただし、T型の場合はI型の下面にあたる板がありません。下の板幅、下の板厚に相当する部分は0になります。
おわりに
この記事では、EXCEL VBAを使ってFemapでT型ビームのプロパティを作成する方法を解説しました。自動化することで、設定の手間を大幅に削減し、ミスも防げます。自分の解析に合わせて応用してみてくださいね!
これでT型ビームも、T時間で(短時間)で完成!
コメント