プロパティの編集
今回は、あまりいじらない。
来月以降にいじる。
マテリアルを新しく作っているので、プロパティに設定しないとダメ。だからその部分だけやる。
プロパティを新しく作る
プロパティのときも、一行追加するだけで作れる。マテリアルも何も設定されていない。
ただ、やはり、この程度の事をするだけらば、GUIで作ったほうがいい。
Sub Main
Dim App As femap.model
Set App = feFemap()
App.feProp.Put(1)
End Sub
プロパティにいろいろ設定することを考えると、下の書き方のほうが賢明。
Sub Main
Dim App As femap.model
Set App = feFemap()
Dim Plop1 As femap.Prop
Set Plop1 = App.feProp
Plop1.Put(Plop1.NextEmptyID()) ' 次の(空の)IDに、putする。
End Sub
新規に作ったプロパティに、新規に作ったマテリアルをセットする。
- マテリアルを作成
- 1で作ったマテリアルを、プロパティにセットする。
Sub Main
Dim App As femap.model
Set App = feFemap()
Dim Mat1 As femap.Matl
Set Mat1 = App.feMatl
Mat1.Ex = 100000
Mat1.Nuxy = 0.3
Mat1.Put(Mat1.NextEmptyID()) ' 次の(空の)IDに、putする。
Dim Plop1 As femap.Prop
Set Plop1 = App.feProp ' App.feAppMessage(1, "Material ID" & Mat1.ID)
Plop1.matlID = Mat1.ID
Plop1.Put(Plop1.NextEmptyID()) ' 次の(空の)IDに、putする。
End Sub
line elementのbar element(バー要素)のプロパティを作るには。
3次元梁要素。断面形状の設定とかの設定をしたい。
line elementのbar elementのL形鋼とかH型(I型)鋼だとかを作りたい。
Sub Main
Dim App As femap.model
Set App = feFemap()
Dim Mat1 As femap.Matl
Set Mat1 = App.feMatl
Mat1.Ex = 100000
Mat1.Nuxy = 0.3
Mat1.Put(Mat1.NextEmptyID()) ' 次の(空の)IDに、putする。
Dim Plop1 As femap.Prop
Set Plop1 = App.feProp
Dim Plop2 As femap.Prop
Set Plop2 = App.feProp
Dim Plop3 As femap.Prop
Set Plop3 = App.feProp
' App.feAppMessage(1, "Material ID" & Mat1.ID)
Plop1.matlID = Mat1.ID
'''''''''''''''''''''''
'''ここまでは、さっきと一緒'''
'''''''''''''''''''''''
''''''''''''
''' H型鋼 '''
''''''''''''
Plop1.type = 2 ' これで、バー要素になった。
Dim danmen() As Varinat
ReDim danmen(5)
danmen(0) = 100.
danmen(1) = 75.
danmen(2) = 75.
danmen(3) = 8.
danmen(4) = 8.
danmen(5) = 5.
Plop1.ComputeStdShape(9, danmen, 0, 0, False, False, False ) ' H形鋼(9)の、断面形状情報はdanmenに入れたやつで(H100x75)、オリエンテーションは右(=0)で、断面プロパティの評価方法は自動(=0)、その他はFalse。とりあえず。動くかのtestなので。
Plop1.Put(Plop1.NextEmptyID()) ' 次の(空の)IDに、putする。
''''''''''''
''' □型鋼 '''
''''''''''''
Plop2.matlID = Mat1.ID ' Materialは、全部一緒。
Plop2.type = 2 ' バー要素。
''''''''''失敗例''''''''''''''''''''''''''''''
' □型鋼の断面形状の情報は3つだが。間違った長さの引数を入れても、断面形状の計算が始まらない。
' せっかく早く帰ったのに、下の様なコードを書いていたらまったく動かず。
' 20~翌0.10まで格闘して、「接点制限版じゃ一回しか断面計算できないんだ…」と思い始めていた。
' ReDim danmen(2)
' danmen(0) = 50.
' danmen(1) = 50.
' danmen(2) = 3.2
''''''''''失敗例''''''''''''''''''''''''''''''
ReDim danmen(5) ' あくまでも、断面形状の引数は5(0~5までの6つ。)□型鋼の断面形状の情報は3つ。
danmen(0) = 50.
danmen(1) = 50.
danmen(5) = 3.2' GUIで、6っぽいところに値があったから、まさかと思い入力したら。まさかだった。
Plop2.ComputeStdShape(2, danmen, 0, 0, False, False, False ) ' 角形鋼(2)、断面形状情報は縦・横・厚(□50x50x3.2)
Plop2.Put(Plop2.NextEmptyID()) ' 次の(空の)IDに、putする。
''''''''''''
''' L型鋼 '''
''''''''''''
Plop3.matlID = Mat1.ID ' Materialは、全部一緒。
Plop3.type = 2 ' バー要素。
ReDim danmen(5) ' 断面形状はL型。
danmen(0) = 50. ' 高さ
danmen(1) = 50. ' 幅
danmen(4) = 4. ' 厚さ下。
danmen(5) = 4. '
Plop3.ComputeStdShape(11, danmen, 0, 0, False, False, False ) ' L形鋼(11)、断面形状情報は縦・横・厚(□50x50x3.2)
Plop3.Put(Plop3.NextEmptyID()) ' 次の(空の)IDに、putする。
End Sub
これで、bar要素のプロパティはできたと思う。
下に、その他の値を入力したら、何になるのか書いた。
しかし、それ以上に、断面形状の引数の配列の、どのインデックスに数値を入力するのかが難しい。
特にL型とボックスなどの6つ長さ情報いらないやつ。
Lは[0,1,4,5]、□は[0,1,5]に入れるべし…そんなのわかるか!!
GUIをよく見て、狙いをさだめないと、断面形状の計算が始まりません。
→メッセージに何も表示されなかったら、正常に断面が入力されていない。
→断面の配列を使いまわすのであれば、初期化などについても、気を付けられたし。前のが残っちゃってたり。
proprtyのtype一覧
プロパティのタイプ | 入力すべきID |
---|---|
ロッド | 1 |
バー | 2 |
チューブ | 3 |
リンク | 4 |
ビーム | 5 |
スプリング | 6 |
DOFスプリング | 7 |
カーブドビーム | 8 |
ギャップ | 9 |
プロットオンリー | 10 |
プレート(線形) | 17 |
プレート(2次) | 18 |
平面ひずみ(線形) | 19 |
平面ひずみ(2次) | 20 |
軸対称(線形) | 23 |
軸対称(2次) | 24 |
ソリッド(線形) | 25 |
ソリッド(2次) | 26 |
質量 | 27 |
質量マトリクス | 28 |
剛体 | 29 |
剛性マトリクス | 30 |
カーブドチューブ | 31 |
平面プロットオンリー | 32 |
コンタクト | 34 |
軸対称シェル(線形) | 35 |
軸対称シェル(2次) | 36 |
2次ビーム | 37 |
↑のほかにも書いてあった。
2しか使ってないが。
ComputeStdShapeの引数
ComputeStdShape( シェイプID, 断面形状, オリエンテーション(右なら0), 断面プロパティの評価方法(自動なら0), せん断中心のオフセット, ねじれ定数の計算の有無(ありならTrue), stress_recovery )
という感じで使うらしい。
これをやった後、Putすると、ちゃんと断面形状の設定されたプロパティができあがる。
シェイプID
シェイプIDには、数値を入れる。
シェイプID以外にも、FEMAP constantで用意されている。
→FSHP_Cとか、FSHP_Lとかでも代用可能。書かないが。
- 標準断面
値 | 形状 |
---|---|
1 | 長方形バー |
2 | 長方形チューブ |
5 | 円形バー |
6 | 円形チューブ |
9 | I型 |
10 | チャネル |
11 | アングル |
- Nastran断面
値 | 形状 |
---|---|
16 | Rod |
17 | Tube |
18 | L |
19 | I |
20 | Channel |
22 | Box |
23 | Bar |
24 | Cross |
25 | H |
よくわからないのは書かなかったが、上記以外にももっとあった。
使ったのは2,9,11だけだけど。
その他は、適当。
断面形状の評価方法は自動(=0)。
Boolianなら、ほぼ容赦なくFalse。
断面形状
必要な数だけ、配列に入れて入力にする。
必要な数は、シェイプIDによって変わってくる。
そのシェイプをGUIで編集するときの順番通りに配列を作る。
これがものすごく難しかった。配列の大きさは、(5)で指定(0~5までの6個)でないと、計算されない。