はじめに
今回はExcelのVBAを利用してFemapにノードを自動的に追加する方法について説明します。Excelに記載した座標データを活用することで、手作業を減らし、効率的にノード作成が行えるようになります。
ノード(node)の作成コード
FEMAPはAPIを提供しており、これをVBAで呼び出すことでさまざまな操作が可能です。
FEMAPで新しいノードを作成するVBAコードの例を示します。
コードは、FEMAPを起動してから実行してください。
Sub create_node()
'Femap model オブジェクトの生成
Dim f As Object
Set f = GetObject(,"femap.model")
'ノードオブジェクトの作成
Dim nd As Object
Set nd = f.feNode
'ノードの座標の指定
nd.X = 10
nd.Y = 15
nd.Z = 20
nd.put(1) '指定したIDにノードを入力|上書きする。この場合ノード番号1に作成している。
End Sub
- 4~5行目はFemapオブジェクトの作成です。FEMAPを起動していないときにこのコードを実行するとエラーとなるので注意が必要です。
- 8~9行目でEntityオブジェクトのノードオブジェクトを生成しています。
- 12~14行目で作成したいノードの座標を設定しています。座標はDouble型で記入します。
- 16行目 nd.put(ID)で番号IDのデータに上書きします。カッコ内のIDはLong型で記入します。
エクセルシートと連携させる例
エクセルシートに入力した値でノードを作成する場合
エクセルで次のようなシートを用意します。
上記シートに入力した各値でノードを作成するコードは次のようになります。
Sub create_node()
Dim i as Integer
'Femap model オブジェクトの生成
Dim f As Object
Set f = GetObject(,"femap.model")
'ノードオブジェクトの作成
Dim nd As Object
Set nd = f.feNode
For i = 2 To 5
nd.X = Cells(i, 2)
nd.Y = Cells(i, 3)
nd.Z = Cells(i, 4)
nd.Put(Cells(i, 1)) '指定したIDにノードデータを入力|上書きする。
Next i
MsgBox "ノードの作成が完了しました!”
End Sub
もし、セルから値を取得する際にエラーが出る場合は、セルで値を取得する部分をLong型ならCLng()、Double型ならCDbl()などで囲むと良いです。
ノード座標をエクセルに書き出す例
FEMAPのノードをエクセルに書き出すこともできます。この場合、.getメソッドを使用します。
まず、下のようにエクセルシートを準備してください。先述の例とほぼ同じです。
上記シートで取り出したいノード情報のIDのみ入力します。
VBAのコードは次のようになります。
Sub get_node()
'Femap model オブジェクトの生成
Dim f As Object
Set f = GetObject(,"femap.model")
'ノードオブジェクトの作成
Dim nd As Object
Set nd = f.feNode
nd.Get(Int(Cells(2,1))) '指定したIDのノードデータを取得する
Cells(2,2) = nd.X 'X座標の取得
Cells(2,3) = nd.Y 'Y座標の取得
Cells(2,4) = nd.Z 'Z座標の取得
End Sub
・11行目 nd.get(ID)で番号IDのデータを取得します。カッコ内のIDはLong型で記入します。セルの値を取得する際はCLng(Cells(2,1))などのように、型を変換してあげると、エラーの可能性を減らせます。
このコードを実行すれば、エクセルシートにノード情報を出力させることが出来ます。
おわりに
以上の手順で、ExcelのVBAを活用してFemapにノードを作成することができます。この方法を利用することで、Excelで座標データを管理しながら、簡単にFemapのモデルに取り込むことが可能です。設計の効率化や入力ミスの防止に大いに役立つため、ぜひ試してみてください。
ノードは基礎。ノードがないと、解析は迷子になっちゃうよ。
コメント