EXCEL VBAを使ってFEMAPのポイントを作成する方法

EXCEL×FEMAP

はじめに

今回はExcelのVBAを利用してFemapにポイントを自動的に追加する方法について説明します。Excelに記載した座標データを活用することで、Femapのインターフェースに頼らずパパッとポイントを作成していく楽しい方法です。手作業を減らし、効率的にポイント作成ができる、エンジニア必見の技です。

ポイント(point)の作成コード

さて、ここからがいよいよ本番です。次のコードをVBAモジュールに書いてみましょう。

VB
Sub CreteFemapPoint()
  Dim feApp As Object
  Dim pt As Object
  
  'Femapアプリケーションの取得
  Set feApp = GetObject(, "femap.model")
  Set pt = feApp.fePoint
   
  'ポイントの生成
   pt.X = 15 'X座標の入力
   pt.Y = 25 'Y座標の入力
   pt.Z = 35 'Z座標の入力
   pt.put(1) '指定したIDにポイントを生成(上書き)
   
   '結果の表示
   MsgBox "ポイントを作成しました"
   
   'オブジェクトの解放
   Set pt = Nothing
   Set feApp = Nothing 
End Sub

コードの解説

このコードは、FEMAPのAPIを使ってポイントを生成します

  • 2〜7行目はFemapオブジェクトの生成です。
    Femapを起動していない時にこのコードを時にこのコードを実行するとエラーとなるので注意が必要です。
  • 10〜12行目で作成したいポイントの座標を入力しています。座標はDouble型で入力します。
  • 13行目のpt.put(ID)で番号IDのデータに上書きします。カッコ内のIDはLong型で記入します。

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

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

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

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

VB
Sub CrateFemapPoint()
  Dim i As Integer
  
  'Femap modelオブジェクトの生成
  Dim f As Object
  Set f = GetObject(,"femap.model")
  
  'ポイントオブジェクトの生成
  Dim pt As Object
  Set pt = f.fePoint
  
  For i = 2 To 5
    pt.X = Cells(i, 2)
    pt.Y = Cells(i, 3)
    pt.Z = Cells(i, 4)
    pt.Put(Cells(i, 1)) '指定したIDにポイントを上書き、または生成する。
  Next i
  
  MsgBox "ポイントの作成が完了しました!"
  
End Sub

もし、セルから値を取得する際にエラーが出る場合は、セルから値を取得する部分をLong型ならCLng()、Double型ならCDbl()などで囲って取得する値の型を明確にすると良くなることがあります。

ポイント座標をエクセルに書き出す例

Femapのポイントの座標をエクセルに書き出すこともできます。この場合、.get メソッドを使用します。

まず、次のようなエクセルシートを準備してください。先ほどの例とほぼ同じですが、座標の部分は空です。

上記シートで取り出したいポイントのIDのみ入力します。

VBAコードは次のようになります。

VB
Sub getPoint()
  'Femap modelオブジェクトの生成
  Dim f As Object
  Set f = GetObject(,"femap.model")
  
  'ポイントオブジェクトの生成
  Dim pt As Object
  Set pt = f.fePoint
  
  pt.Get(Int(Cells(2, 1))) '指定したIDのポイントデータを取得する
  
  Cells(2, 2) = pt.X 'X座標の取得
  Cells(2, 3) = pt.Y 'Y座標の取得
  Cells(2, 4) = pt.Z 'Z座標の取得
  
End Sub

10行目のpt.get(ID)で番号IDのデータを取得します。カッコ内のIDはLomg型で記入します。
このコードを実行すれば、エクセルシートにポイント情報を出力させることができます。

まとめ

今回のポイント作成コードで、ExcelからFEMAPへの自動操作がさらにスムーズになりました。これで時間と手間を節約し、精度も向上します。

FEMAPにポイントを追加しすぎたら、「無駄に要点が多い」って怒られちゃった。

コメント

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