Pythonを使用したキー接続の計算

初めに、私自身についていくつかの言葉を述べます。私はエンジニアとして働いているので、私の仕事はさまざまなメカニズムの設計に関連しています。 それらの多くには、キー接続などがあります。 そして、彼は非常に単純な式を使用して崩壊を計算するという事実にもかかわらず、私は毎回ペンを取るのにすぐに疲れ、このプロセスを自動化するという強い意志の決定がなされました。







当初、自動化は、対応する式が「詰まっている」簡単なExcelファイルで構成されていました。 しかし、その後、小さなプログラムを書くことにしました。 さらに、これは2つの目標を一度に追求しました-より便利な「製品」を取得し、最終的にPythonで本当に役立つものを書くことです。 確かに、この分野での私の知識は非常に控えめですが、より興味深いタスクです。







結論として、少しの理論。 キー接続を計算するには、図に示す式を使用します。 次の数量が使用されます。



実際には、紹介は終わりました。プログラムに直接アクセスしてください。 計算アルゴリズムは本当に簡単です。

1.ユーザーがシャフトの直径を入力します。

2.得られた直径値に基づいて、主要なパラメーターが決定されます。

3.ユーザーは、許容せん断応力が依存するハブ材料を選択します。

4.ユーザーは、シャフトに作用するトルクの値を入力します。

5.ユーザーがキーの長さの値を入力します。

6.結果の計算と結論。

実際、このアルゴリズムには、指定しなかったポイントがさらに含まれているはずです。 ユーザーが入力した内容(文字列または数字)を正確に確認することです。

それでは、初期パラメータを入力することから始めましょう。 キーボードから値を入力するには、次の構造が使用されます。

d = int(raw_input("   , : "))
      
      





それを使用して、キーボードから文字を取得し、文字列から数字に変換します。 すべてがシンプルに思えます。 しかし、思慮深く熟考した後、私はこのコードを少し複雑にすることにしました。

 while 1: try: d = int(raw_input("   , : ")) break except ValueError: print ("  !")
      
      





その結果、プログラム自体がユーザーの入力内容(数値または文字列)を制御します。 2番目のケースでは、適切な警告が表示されます。 ここで無限ループを使用して、遅かれ早かれユーザーから必要なデータを取得します。 同様の手法を使用して、プログラムは必要な残りの部分も受け取り、すぐにその正確性をチェックします。

キー自体のパラメータを決定します。 ここで、残念ながら、if-elif-elseの比較的長いリストを使用するよりも賢いものは思いつきませんでした。

 if 6 <= d < 8: shponka = {"b": 2, "h": 2, "t1": 1.2, "t2": 1.0} elif 8 <= d < 10: shponka = {"b": 3, "h": 3, "t1": 1.8, "t2": 1.4} elif 10 <= d < 12: shponka = {"b": 4, "h": 4, "t1": 2.5, "t2": 1.8} elif 12 <= d < 17: shponka = {"b": 5, "h": 5, "t1": 3.0, "t2": 2.3} elif 17 <= d < 22: shponka = {"b": 6, "h": 6, "t1": 3.5, "t2": 2.8} elif 22 <= d < 30: shponka = {"b": 8, "h": 7, "t1": 4.0, "t2": 3.3} elif 30 <= d < 38: shponka = {"b": 10, "h": 8, "t1": 5.0, "t2": 3.3} elif 38 <= d < 44: shponka = {"b": 12, "h": 8, "t1": 5.0, "t2": 3.3} elif 44 <= d < 50: shponka = {"b": 14, "h": 9, "t1": 5.5, "t2": 3.8} elif 50 <= d < 58: shponka = {"b": 16, "h": 10, "t1": 6.0, "t2": 4.3} elif 58 <= d < 65: shponka = {"b": 18, "h": 11, "t1": 7.0, "t2": 4.4} elif 65 <= d < 75: shponka = {"b": 20, "h": 12, "t1": 7.5, "t2": 4.9} elif 75 <= d < 85: shponka = {"b": 22, "h": 14, "t1": 9.0, "t2": 5.4} elif 85 <= d < 95: shponka = {"b": 25, "h": 14, "t1": 9.0, "t2": 5.4} elif 95 <= d < 110: shponka = {"b": 28, "h": 16, "t1": 10.0, "t2": 6.4} elif 110 <= d < 130: shponka = {"b": 32, "h": 18, "t1": 11.0, "t2": 7.4} else: print("         ") raw_input("    ") exit() print ("  = " + str(shponka["b"]) + " ,   = " + str(shponka["h"]) + " ,     = " + str(shponka["t1"]) + " ,     = " + str(shponka["t2"]) + " ")
      
      





重要なパラメータは辞書に書き込まれます-このようにすると、それらを操作する方が簡単になるように思えました。 次に、キーの作業長を決定します。

 l_work = l - shponka["b"]
      
      





そして、実際の破砕ストレス:

 napr = (2 * 1000 * moment) / (d * l_work * (shponka["h"] - shponka["t1"]))
      
      





得られたせん断応力の値は、許容値と比較されます。 ここでは2つのオプションが可能です。

1.許容電圧値を超えていないため、選択したキーが満足しています。

2.許容電圧値を超えています。 これを修正する方法を知っておくといいでしょう。 ほとんどの場合、これを行う最も簡単な方法は、キーの長さを変更することです。 したがって、プログラムは、せん断応力が許容値より20単位低いという事実に基づいて、キーの長さを再計算します(通常はこれで十分です)。

Pythonでは、次のようになります。

 if napr <= dopysk_napr: print("     " + str(napr) + " /^2.    " + str(dopysk_napr) + " /^2.") raw_input("    ") exit() else: print("      !       !") #     l_work_rek = (2 * 1000 * moment) / ((dopysk_napr - 20) * d * (shponka["h"] - shponka["t1"])) #       l_rek = l_work_rek + shponka["b"] #      napr_rek = (2 * 1000 * moment) / (d * l_work_rek * (shponka["h"] - shponka["t1"])) print("    " + str(l_rek) + " .      " + str(napr_rek) + " /^2.") raw_input("    ") exit()
      
      





そして最後に、完全なプログラムコード:

 # -*- coding: cp866 -*- #       (  ) while 1: try: d = int(raw_input("   , : ")) break except ValueError: print ("  !") #,        if 6 <= d < 8: shponka = {"b": 2, "h": 2, "t1": 1.2, "t2": 1.0} elif 8 <= d < 10: shponka = {"b": 3, "h": 3, "t1": 1.8, "t2": 1.4} elif 10 <= d < 12: shponka = {"b": 4, "h": 4, "t1": 2.5, "t2": 1.8} elif 12 <= d < 17: shponka = {"b": 5, "h": 5, "t1": 3.0, "t2": 2.3} elif 17 <= d < 22: shponka = {"b": 6, "h": 6, "t1": 3.5, "t2": 2.8} elif 22 <= d < 30: shponka = {"b": 8, "h": 7, "t1": 4.0, "t2": 3.3} elif 30 <= d < 38: shponka = {"b": 10, "h": 8, "t1": 5.0, "t2": 3.3} elif 38 <= d < 44: shponka = {"b": 12, "h": 8, "t1": 5.0, "t2": 3.3} elif 44 <= d < 50: shponka = {"b": 14, "h": 9, "t1": 5.5, "t2": 3.8} elif 50 <= d < 58: shponka = {"b": 16, "h": 10, "t1": 6.0, "t2": 4.3} elif 58 <= d < 65: shponka = {"b": 18, "h": 11, "t1": 7.0, "t2": 4.4} elif 65 <= d < 75: shponka = {"b": 20, "h": 12, "t1": 7.5, "t2": 4.9} elif 75 <= d < 85: shponka = {"b": 22, "h": 14, "t1": 9.0, "t2": 5.4} elif 85 <= d < 95: shponka = {"b": 25, "h": 14, "t1": 9.0, "t2": 5.4} elif 95 <= d < 110: shponka = {"b": 28, "h": 16, "t1": 10.0, "t2": 6.4} elif 110 <= d < 130: shponka = {"b": 32, "h": 18, "t1": 11.0, "t2": 7.4} else: print("         ") raw_input("    ") exit() print ("  = " + str(shponka["b"]) + " ,   = " + str(shponka["h"]) + " ,     = " + str(shponka["t1"]) + " ,     = " + str(shponka["t2"]) + " ") #       while 1: try: material = raw_input("   :  (1)   (2). ") break except ValueError: print ("     ,   .") if material == "1": dopysk_napr = 130 #  /^2 elif material == "2": dopysk_napr = 80 #  /^2 else: print("   !") raw_input("    ") exit() #          while 1: try: moment = int(raw_input("       : ")) break except ValueError: print ("       !") #        while 1: try: l = int(raw_input("     : ")) break except ValueError: print ("  !") #    (,     ) l_work = l - shponka["b"] #           napr = (2 * 1000 * moment) / (d * l_work * (shponka["h"] - shponka["t1"])) if napr <= dopysk_napr: print("     " + str(napr) + " /^2.    " + str(dopysk_napr) + " /^2.") raw_input("    ") exit() else: print("      !       !") #     l_work_rek = (2 * 1000 * moment) / ((dopysk_napr - 20) * d * (shponka["h"] - shponka["t1"])) #       l_rek = l_work_rek + shponka["b"] #      napr_rek = (2 * 1000 * moment) / (d * l_work_rek * (shponka["h"] - shponka["t1"])) print("    " + str(l_rek) + " .      " + str(napr_rek) + " /^2.") raw_input("    ") exit()
      
      





これで、このプログラムでの私の仕事はおそらく終わりません。 私はPythonが本当に好きで、私の作品でのそのアプリケーションは本当に可能です(少なくとも同じCOMPASスクリプトに対して)。 将来、何を決定する必要があるかに応じて、いくつかの計算モードを追加する予定です。 まあ、非常に遠い将来に、ユーザーインターフェイスが表示される場合があります。

また、この控えめな作業で、由緒あるパブリックHabrahabrを驚かせるのは嘘であると理解しています(ソースコードの曲率を考慮しない限り)。 しかし、改善のための理解と(おそらく)推奨事項を願っています。



All Articles