EXCEL VBAを使ってFEMAPのノードを作成する方法

はじめに

今回はExcelのVBAを利用してFemapにノードを自動的に追加する方法について説明します。Excelに記載した座標データを活用することで、手作業を減らし、効率的にノード作成が行えるようになります。

ノード(node)の作成コード

FEMAPはAPIを提供しており、これをVBAで呼び出すことでさまざまな操作が可能です。
FEMAPで新しいノードを作成するVBAコードの例を示します。
コードは、FEMAPを起動してから実行してください。

VB
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型で記入します。

エクセルシートと連携させる例

エクセルシートに入力した値でノードを作成する場合

エクセルで次のようなシートを用意します。

上記シートに入力した各値でノードを作成するコードは次のようになります。

VB
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のコードは次のようになります。

VB
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のモデルに取り込むことが可能です。設計の効率化や入力ミスの防止に大いに役立つため、ぜひ試してみてください。

ノードは基礎。ノードがないと、解析は迷子になっちゃうよ。

コメント

タイトルとURLをコピーしました