Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


22041 / 76734 ←次へ | 前へ→

【60079】Re:cos関数について
質問  海僧 E-MAIL  - 09/1/26(月) 22:06 -

引用なし
パスワード
   ▼横入り さん:
>>Dim dh, ft(), fr(), fu(), fv(), m(), e() As Double
>こういう書き方だとDoubleなのは e() だけです。
ありがとうございます。知りませんでした。

>再現性のある、最低限のコードを省略せずにアップされてはどうでしょうか。
わかりました。以下になります。

Private Sub physics(row As Integer)

Dim r As Double 'カッタ半径

Dim order As String
Dim length As Integer
Dim v As Double '切削速度
v = Worksheets("付加情報").Cells(10, 2).Value
r = Worksheets("付加情報").Cells(2, 2).Value / 2

length = Worksheets("付加情報").Cells(4, 2).Value

order = Worksheets("解析").Cells(row, 6).Value
If order = "" Or order = "早送り" Then
 Exit Sub
End If

'切削幅と切削深さ
Dim width, depth, z, oldz As Double
 If row = 4 Then
  oldz = 0
  z = Worksheets("解析").Cells(row, 5).Value
 Else
 z = Worksheets("解析").Cells(row, 5).Value
 oldz = Worksheets("解析").Cells(row - 1, 5).Value
 End If
 
 If row < 634 Then
  width = 2 * r '荒加工の切削幅は全て2r
 Else
  width = 2 * r * 0.1 '仕上げ加工の切削幅は1/10
 End If
 
 '切削深さの算出
 If oldz > 0 Then
  depth = -z
 Else
  depth = -(oldz - z)
 End If


'エンゲージ角
Dim engage As Double
Dim cos As Double 'コサインの値

  If Worksheets("解析").Cells(row, 6).Value = "円弧切削(時計回り)" Then
   cos = 1 - width / r - (width * (r - 0.5 * width)) / ((Worksheets("解析").Cells(row, 9).Value) * r)
  ElseIf Worksheets("解析").Cells(row, 6).Value = "円弧切削(反時計回り)" Then
   cos = 1 - width / r - (width * (r - 0.5 * width)) / ((Worksheets("解析").Cells(row, 9).Value) * r)
  ElseIf Worksheets("解析").Cells(row, 6).Value = "直線切削" Then
   cos = 1 - (width / r)
  End If
  
  engage = WorksheetFunction.Acos(cos) 'アークコサイン(ラジアン)
  engage = WorksheetFunction.Degrees(engage) 'ラジアン⇒度
 
  If engage >= 180 Then
   engage = 360 - engage
  End If
 

'一刃当りの送り
Dim rev, feed, edge As Integer
Dim anedge As Double
 feed = Worksheets("解析").Cells(row, 8).Value
 rev = Worksheets("解析").Cells(row, 7).Value
 anedge = feed / (edge * rev)


Dim ks, kp, kt, kr As Double

'ksの決定
If anedge <= 0.03 Then
 ks = 0.03
Else
 ks = anedge
End If


Dim angle, encounter As Integer

For angle = 1 To 180
 'kpの決定
 If angle <= 7.2 Then
  kp = 1.2
 Else
  kp = 1
 End If
 
 '接触しているか否か
 If angle <= engage Then
  encounter = 1
 Else
  encounter = 0
 End If

 'ktとkrの算出
 kt = 2165 * kp * (ks / anedge) ^ 0.5 * (1 - 0.14 * v / 60)
 kr = 1245 * kp * (ks / anedge) ^ 0.5 * (1 - 0.3 * v / 60)


 '微少切れ刃当たりの切削力Aの算出
 Dim h, A() As Double
 ReDim A(180)
 h = depth / 360
 A(angle) = anedge * Sin(WorksheetFunction.Radians(angle)) * encounter * h
 
 
 '角度angleにおける切削力の算出
 Dim dh, ft(), fr(), fu(), fv(), m(), e() As Double
 ReDim ft(180, 180), fr(180, 180), fu(180, 180), fv(180, 180), m(180, 180), e(180, 180)
 Dim count As Integer
 count = 0
 For dh = 0 To depth Step h
  count = count + 1
  ft(angle, count) = kt * A(angle)
  fr(angle, count) = kr * A(angle)
  
  
  fu(angle, count) = fr(angle, dh) * Sin(WorksheetFunction.Radians(angle)) - ft(angle, dh) * cos(WorksheetFunction.Radians(angle))
  fv(angle, count) = -(fr(angle, dh) * cos(WorksheetFunction.Radians(angle)) - ft(angle, dh) * Sin(WorksheetFunction.Radians(angle)))


>cosが小文字で、Sinが大文字なのは何か意味がありますか?
Sinは関数として機能しているので、自動で大文字になります。

>別のところで配列cosがあったりしますか?
ほかの場所でcosは使っていません。

以上になります。お忙しい中申し訳ありませんが、宜しくお願い致します。
9 hits

【60072】cos関数について 海僧 09/1/26(月) 20:22 質問
【60073】Re:cos関数について 横入り 09/1/26(月) 20:53 発言
【60075】Re:cos関数について 海僧 09/1/26(月) 21:18 質問
【60076】Re:cos関数について 横入り 09/1/26(月) 21:45 発言
【60079】Re:cos関数について 海僧 09/1/26(月) 22:06 質問
【60080】Re:cos関数について 横入り 09/1/26(月) 22:17 回答
【60103】Re:cos関数について 海僧 09/1/27(火) 15:19 お礼

22041 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free