はじめに
こんにちは!今回は、Excel VBAを使ってFemapでカーブを2点のポイントから作成する方法ご紹介します。FemapのAPIを使うことで、手動で行っていた作業を効率化できますよ!
カーブ(ライン)を作成するコード
それでは、2点のポイントからカーブを作成するためのコードを紹介します。以下のコードをVBAエディタに貼り付けてください。
注意点として、下記のコードはポイントIDが1と2である2点のポイントが必要になります。
ポイントの作成はこちらの記事をご覧ください。
VB
Sub CreateCurveLineInFemap()
'Femap model オブジェクトの生成
Dim f As Object
Set f = GetObject(,"femap.model")
'カーブオブジェクトの生成
Dim cu As Object
Set cu = f.feCurve
'カーブ(ライン)の設定
cu.Type = 0. 'カーブのタイプ。0を代入するとラインになる。
cu.stdPoint(0) = 1 'カーブの始点となるポイントID。この場合1となる。
cu.stdPoint(1) = 2 'カーブの終点となるポイントID。この場合2となる。
'カーブの作成
cu.put(1) '登録するカーブIDの入力。この場合ID=1となる。
MsgBox "カーブ(ライン)を作成しました。"
'オブジェクト開放
Set cu = Nothing
Set f = Nothing
End Sub
コードの解説
このコードはFemapのAPIを利用してポイントID=1, ポイントID=2 間のカーブを作成しています。
- 4~5行目はFemapオブジェクトの作成です。FEMAPを起動していないときにこのコードを実行するとエラーとなるので注意が必要です。
- 8~9行目でカーブオブジェクトを生成しています。
- 12行目でカーブの種類を数字で指定します。今回はラインなので0を代入します。
- 13~14行目で作成するカーブの端点となるポイントのIDをLong型で代入します。
- 19行目のコードが、2点のポイントからカーブを作成するための肝となる部分です。
エクセルシートと連携させる例
エクセルシートに入力したポイントIDでカーブを作成する場合
エクセルで次のようなシートを準備します。
A2~C2に指定したいIDを入力してください。
上記シートに入力した各値カーブを作成するコードは次のようになります。
VB
Sub CreateCurveLineInFemap()
'Femap model オブジェクトの生成
Dim f As Object
Set f = GetObject(,"femap.model")
'カーブオブジェクトの生成
Dim cu As Object
Set cu = f.feCurve
'カーブ(ライン)の設定
cu.Type = 0. 'カーブのタイプ。0を代入するとラインになる。
cu.stdPoint(0) = Cells(2, 2) 'カーブの始点となるポイントID。
cu.stdPoint(1) = Cells(2, 3) 'カーブの終点となるポイントID。
'カーブの作成
cu.put(Cells(2, 1)) '登録するカーブIDの入力。
MsgBox "カーブ(ライン)を作成しました。"
'オブジェクト開放
Set cu = Nothing
Set f = Nothing
End Sub
もし、セルから値を取得する際にエラーが出る場合は、セルで値を取得する部分をLong型ならCLng(Cells(2,1))などのように型を指定すると良いです。
カーブ情報をエクセルに出力する場合
エクセルで次のようなシートを準備します。
データを取り出したいカーブIDをA2に入力します。
上記シートに入力したラインカーブIDの始点と終点のポイントIDを取得するコードは次のようになります。
VB
Sub GetCurveLineInFemap()
'Femap model オブジェクトの生成
Dim f As Object
Set f = GetObject(,"femap.model")
'カーブオブジェクトの生成
Dim cu As Object
Set cu = f.feCurve
'カーブ(ライン)の取得
cu.Get(Cells(2, 1)) 'ここで指定したカーブIDの情報を取得する。
'各値の出力
If cu.Type = 0 Then 'カーブのタイプが0(=ライン)の場合
if cu.stdPoint(0) <> 0 And cu.stdPoint(1) <> 0 Then '始点と終点0が存在する場合
Cells(2, 2) = cu.stdPoint(0) 'カーブの始点となるポイントID。
Cells(2, 3) = cu.stdPoint(1) 'カーブの終点となるポイントID。
MsgBox "指定したIDのカーブ情報を取得しました。"
Else
MsgBox "指定したIDのカーブは存在しません。"
End If
Else
MsgBox "指定したIDのカーブはラインではありません。"
End If
'オブジェクト開放
Set cu = Nothing
Set f = Nothing
End Sub
- 12行目 cu.get(ID)で番号IDのデータを取得します。カッコ内のIDはLong型で記入します。セルの値を取得する際はCLong(Cells(1,2))などのように、型を変換してあげると、エラーの可能性を減らせます。
- このコードを実行すれば、エクセルシートにカーブ情報を出力させることが出来ます。
- 15行目のIf文で、カーブがラインの場合のみの処理にしています。
- 16行目のIf文は、カーブが存在しているかどうかを判断しています。カーブが存在しない場合は始点と終点のポイントIDが0になります。
おわりに
いかがでしたか?今回の記事では、Excel VBAを使ってFemapのカーブを作成する方法と、情報を取得する方法をご紹介しました。普段のFemapの操作にExcelを組み合わせることで、手作業では手間のかかる作業を自動化できたり、複数の操作を一気に処理出来たりと、作業効率をぐっと上げることができます。ぜひチャレンジしてみてください。
なぜFemapのラインは仲良しなの?
みんなで「繋がり」を大切にしているからさ。
コメント