Coś ty mi tu popisał ;))) Jak napisałem na początku jestem początkujący(C# jakieś 3 tygodnie).Jestem inż. konstruktorem na nie inż inf. Jeszcze nie doszedłem do linq, ani nie przerabiałem dziedziczenia itp. Dopiero to zamierzam zrobić. Ale dzięki przejrzę w miarę nauki.
Generalnie to chyba wziąłeś kod z pierwszego postu bo już go w miarę nauki trochę zmieniłem. Ten projekt jest dla mnie projektem szkoleniowym a nie komercyjnym. Po angielsku wszystkich nazw nie piszę bo mi się nie chce.
Chcę w przyszłości pisać rozszerzenia do programów CAD albo programy na własne potrzeby.
Aktualny kod(reszta kodu w klasach i bibliotece.
using System;
using System.Collections.Generic;
using System.Security.Cryptography.X509Certificates;
using PodnosnikLibrary;
namespace Podnosnik
{
class PodnosnikUI
{
private static void PodstawoweParametry(out float D2, out float D3, out float podzialka, out float gamma, out int udzwig)
{
udzwig = 0;
var parametry = new ParametryWejsciowe();
D2 = (float)Math.Round(Math.Sqrt(parametry.ParametrUdzwig / (Math.PI * parametry.WsWysGwintu * parametry.WsWysNakretki * parametry.Kd)), 2);
D3 = (float)Math.Round(Math.Sqrt((4 * parametry.Beta * parametry.ParametrUdzwig) / (Math.PI * parametry.Kc)), 2);
udzwig = parametry.ParametrUdzwig;
Console.WriteLine($"Średnica d2 = {D2}");
Console.WriteLine($"Średnica d3 = {D3}");
podzialka = 0;
gamma = 0;
foreach (SrubyTrapezoweProperties sruba in SrubyTrapezoweLista.sruby)
{
if (sruba.SrednicaD2 > D2 & sruba.SrednicaD3 > D3)
{
Console.WriteLine($"Dobrano śrubę trapezową: {sruba.OznaczenieSruby}");
podzialka = (float)sruba.Podzialka;
Console.WriteLine($"Podziałka śruby {podzialka}");
gamma = (float)Math.Round(Math.Atan(podzialka / Math.PI * D2),2);
Console.WriteLine($"Gamma = {gamma}");
break;
}
}
}
private static void Ro(out float KatPochGwi, out float WspF, out float ro)
{
KatPochGwi = 0;
WspF = 0;
List<WarSamoHProperties> gwintData = ParametryGwint.GwintData();
foreach (var warS in gwintData)
{
if (warS.IDg == 2)
//1 = "Trapezowy niesymetryczny";
//2 = "Trapezowy symetryczny";
//3 = "Prostokątny";
//4 = "Metryczny";
{
Console.WriteLine($"Zarys gwintu: {warS.ZarysGwintu} | Kąt pochylenia gwintu {warS.KatPochGwi}");
KatPochGwi = warS.KatPochGwi;
}
}
List<WarSamoHProperties> kdfData = ParametryGwint.KdfData();
foreach (var warK in kdfData)
{
//1 = "Stal hartowana brąz";
//2 = "Stal niehartowana brąz";
//3 = "Stal hartowana żeliwo";
//4 = "Stal niehartowana żeliwo";
//5 = "Stal hartowana stal";
if (warK.IDk == 5)
{
Console.WriteLine($"Materiał śruby: {warK.MatSN} | Współczynnik Kd: {warK.WspKd} | Współczynnik f: {warK.WspF}");
WspF = warK.WspF;
}
}
double CosKPG = Math.PI * WspF / 180;
ro = (float)Math.Round(Math.Atan (WspF / CosKPG),2);
Console.WriteLine($"Ro wynosi: {ro}");
}
private static void WarunekSamohamownosc(float gamma, float ro, int udzwig, float D2)
{
if (gamma < ro)
{
Console.WriteLine("Warunek samohamowności spełniony");
/// Moment tarcia
float angleRoG = ro + gamma;
float radRoG = (float) (angleRoG * (Math.PI / 180));
float Ttgw = (float)(0.5 * udzwig * D2 * Math.Tan(radRoG));
Console.WriteLine($"Moment tarcia {Ttgw}");
}
else
{
Console.WriteLine("Warunek samohamowności niespełniony");
}
}
static void Main(string[] args)
{
ParametryWejsciowe.ZadaneParametry();
SrubyTrapezoweLista.ListaSrubTrapezowych();
float D2, D3, podzialka, KatPochGwi, WspF, ro;
int udzwig;
PodstawoweParametry(out D2, out D3, out podzialka, out float gamma, out udzwig);
Ro(out KatPochGwi, out WspF, out ro);
WarunekSamohamownosc(gamma, ro, udzwig, D2);
Console.ReadKey();
}
}
}