はじめに
今回は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にポイントを追加しすぎたら、「無駄に要点が多い」って怒られちゃった。
コメント