public void btn_Bestätigen_Click(object sender, RoutedEventArgs e) { //Außenverzahnung if (rtb_Gerad.IsChecked == true) { Außenverzahnung av = new Außenverzahnung(); switch (CB_Werkstoff.Text) { case "GJL": av.material = 7.15; av.preis = 0.80; break; case "GJS": av.material = 7.1; av.preis = 1.10; break; case "S235JR": av.material = 7.85; av.preis = 3.63; break; } //Eingabeparameter Anzeige lb_Werkstoffwahl.Content = CB_Werkstoff.Text; lb_Zähne.Content = txt_Zähnezahl.Text; lb_Kopfspiele1.Content = TB_0167.Text; lb_Modul2.Content = txt_Modul.Text; lb_Dicke1.Content = txt_Dicke.Text; //Eingabechecks //Eingabecheck Modul string Zahlencheck = txt_Modul.Text; if (Zahlenprüfung(Zahlencheck) == true) { av.m = Convert.ToDouble(txt_Modul.Text); if (av.m <= 0) { MessageBox.Show("Fehler! Modul kann nur eine positive Zahl betragen."); av.Fehler = 1; } } else { MessageBox.Show("Fehler! Modul kann nur eine positive Zahl betragen."); av.Fehler = 1; } //Kopfspiel Zahlencheck = TB_0167.Text; if (Zahlenprüfung(Zahlencheck) == true) { av.c = Convert.ToDouble(TB_0167.Text); if ((av.c < 0.1) || (av.c > 0.3)) { MessageBox.Show("Fehler! Kopfspiel kann nur eine Zahl zwischen 0,1 und 0,3 betragen."); av.Fehler = 1; } } else { MessageBox.Show("Fehler! Kopfspiel kann nur eine Zahl zwischen 0,1 und 0,3 betragen."); av.Fehler = 1; } //Eingabecheck Zähnezahl Zahlencheck = txt_Zähnezahl.Text; if (Zahlenprüfung(Zahlencheck) == true) { av.z = Convert.ToDouble(txt_Zähnezahl.Text); if (av.z <= 0) { MessageBox.Show("Fehler! Zähnezahl kann nur eine positive Ganzzahl ab 5 betragen."); av.Fehler = 1; } } else { MessageBox.Show("Fehler! Zähnezahl kann nur eine positive Ganzzahl ab 5 betragen."); av.Fehler = 1; } //Eingabecheck Dicke Zahlencheck = txt_Dicke.Text; if (Zahlenprüfung(Zahlencheck) == true) { av.t = Convert.ToDouble(txt_Dicke.Text); if (av.t <= 0) { MessageBox.Show("Fehler! Dicke kann nur eine positive Zahl betragen."); av.Fehler = 1; } } else { MessageBox.Show("Fehler! Dicke kann nur eine positive Zahl betragen."); av.Fehler = 1; } //Berechnung durchführen if (av.Fehler == 0) { av.Berechnung(); Lbl_Zahnhöhe.Content = Convert.ToString(av.h); lbl_Fußkreisdurchmesser.Content = Convert.ToString(av.df); lbl_Teilkreisdurchmesser.Content = Convert.ToString(av.d); lbl_Zahnfußhöhe.Content = Convert.ToString(av.hf); lbl_Zahnkopfhöhe.Content = Convert.ToString(av.ha); lbl_Teilung.Content = Convert.ToString(av.p); lbl_Kopfkreisdurchmesser.Content = Convert.ToString(av.da); lbl_Gewicht.Content = Convert.ToString(av.M); lbl_Preis.Content = Convert.ToString(av.Wert); MessageBox.Show(Convert.ToString(av.c)); //Felder ausbleichen lbl_stirnmodul.IsEnabled = false; lbl_stirnteilung.IsEnabled = false; lb_Stirnmodul.IsEnabled = false; lb_Stirnteilung.IsEnabled = false; lb_Schrägungswinkel.IsEnabled = false; lb_Winkel.IsEnabled = false; } } //Innenverzahung else if (rtb_Innenzahnrad.IsChecked == true) { Innenverzahnung iv = new Innenverzahnung(); switch (CB_Werkstoff.Text) { case "GJL": iv.material = 7.15; iv.preis = 0.80; break; case "GJS": iv.material = 7.1; iv.preis = 1.10; break; case "S235JR": iv.material = 7.85; iv.preis = 3.63; break; } //Eingabeparameter Anzeige lb_Werkstoffwahl.Content = CB_Werkstoff.Text; lb_Zähne.Content = txt_Zähnezahl.Text; lb_Kopfspiele1.Content = TB_0167.Text; lb_Modul2.Content = txt_Modul.Text; lb_Dicke1.Content = txt_Dicke.Text; //Eingabechecks //Modul string Zahlencheck = txt_Modul.Text; if (Zahlenprüfung(Zahlencheck) == true) { iv.m = Convert.ToDouble(txt_Modul.Text); if (iv.m <= 0) { MessageBox.Show("Fehler! Modul kann nur eine positive Zahl betragen."); iv.Fehler = 1; } } else { MessageBox.Show("Fehler! Modul kann nur eine positive Zahl betragen."); iv.Fehler = 1; } //Zähnezahl Zahlencheck = txt_Zähnezahl.Text; if (Zahlenprüfung(Zahlencheck) == true) { iv.z = Convert.ToDouble(txt_Zähnezahl.Text); if (iv.z <= 0) { MessageBox.Show("Fehler! Zähnezahl kann nur eine positive Ganzzahl ab 5 betragen."); iv.Fehler = 1; } } else { MessageBox.Show("Fehler! Zähnezahl kann nur eine positive Ganzzahl ab 5 betragen."); iv.Fehler = 1; } //Eingabecheck Dicke Zahlencheck = txt_Dicke.Text; if (Zahlenprüfung(Zahlencheck) == true) { iv.t = Convert.ToDouble(txt_Dicke.Text); if (iv.t <= 0) { MessageBox.Show("Fehler! Dicke kann nur eine positive Zahl betragen."); iv.Fehler = 1; } } else { MessageBox.Show("Fehler! Dicke kann nur eine positive Zahl betragen."); iv.Fehler = 1; } //Kopfspiel Zahlencheck = TB_0167.Text; if (Zahlenprüfung(Zahlencheck) == true) { iv.c = Convert.ToDouble(TB_0167.Text); if ((iv.c < 0.1) || (iv.c > 0.3)) { MessageBox.Show("Fehler! Kopfspiel kann nur eine Zahl zwischen 0,1 und 0,3 betragen."); iv.Fehler = 1; } } else { MessageBox.Show("Fehler! Kopfspiel kann nur eine Zahl zwischen 0,1 und 0,3 betragen."); iv.Fehler = 1; } if (iv.Fehler == 0) { iv.Berechnung(); Lbl_Zahnhöhe.Content = Convert.ToString(iv.h); lbl_Fußkreisdurchmesser.Content = Convert.ToString(iv.df); lbl_Teilkreisdurchmesser.Content = Convert.ToString(iv.d); lbl_Zahnfußhöhe.Content = Convert.ToString(iv.hf); lbl_Zahnkopfhöhe.Content = Convert.ToString(iv.ha); lbl_Teilung.Content = Convert.ToString(iv.p); lbl_Kopfkreisdurchmesser.Content = Convert.ToString(iv.da); lbl_Gewicht.Content = Convert.ToString(iv.M); lbl_Preis.Content = Convert.ToString(iv.Wert); //Felder ausbleichen lbl_stirnmodul.IsEnabled = false; lbl_stirnteilung.IsEnabled = false; lb_Stirnmodul.IsEnabled = false; lb_Stirnteilung.IsEnabled = false; lb_Schrägungswinkel.IsEnabled = false; lb_Winkel.IsEnabled = false; } } //Schrägverzahnung else { Schrägverzahnung sv = new Schrägverzahnung(); switch (CB_Werkstoff.Text) { case "GJL": sv.material = 7.15; sv.preis = 0.80; break; case "GJS": sv.material = 7.1; sv.preis = 1.10; break; case "S235JR": sv.material = 7.85; sv.preis = 3.63; break; } //Eingabeparameter Anzeige lb_Werkstoffwahl.Content = CB_Werkstoff.Text; lb_Zähne.Content = txt_Zähnezahl.Text; lb_Kopfspiele1.Content = TB_0167.Text; lb_Modul2.Content = txt_Modul.Text; lb_Dicke1.Content = txt_Dicke.Text; lb_Schrägungswinkel.Content = tb_Winkel.Text; //Eingabechecks //Modul string Zahlencheck = txt_Modul.Text; if (Zahlenprüfung(Zahlencheck) == true) { sv.mn = Convert.ToDouble(txt_Modul.Text); if (sv.mn <= 0) { MessageBox.Show("Fehler! Modul kann nur eine positive Zahl betragen."); sv.Fehler = 1; } } else { MessageBox.Show("Fehler! Modul kann nur eine positive Zahl betragen."); sv.Fehler = 1; } //Zähnezahl Zahlencheck = txt_Zähnezahl.Text; if (Zahlenprüfung(Zahlencheck) == true) { sv.z = Convert.ToDouble(txt_Zähnezahl.Text); if (sv.z <= 0) { MessageBox.Show("Fehler! Zähnezahl kann nur eine positive Ganzzahl ab 5 betragen."); sv.Fehler = 1; } } else { MessageBox.Show("Fehler! Zähnezahl kann nur eine positive Ganzzahl ab 5 betragen."); sv.Fehler = 1; } //Eingabecheck Dicke Zahlencheck = txt_Dicke.Text; if (Zahlenprüfung(Zahlencheck) == true) { sv.t = Convert.ToDouble(txt_Dicke.Text); if (sv.t <= 0) { MessageBox.Show("Fehler! Dicke kann nur eine positive Zahl betragen."); sv.Fehler = 1; } } else { MessageBox.Show("Fehler! Dicke kann nur eine positive Zahl betragen."); sv.Fehler = 1; } //Kopfspiel Zahlencheck = TB_0167.Text; if (Zahlenprüfung(Zahlencheck) == true) { sv.c = Convert.ToDouble(TB_0167.Text); if ((sv.c < 0.1) || (sv.c > 0.3)) { MessageBox.Show("Fehler! Kopfspiel kann nur eine Zahl zwischen 0,1 und 0,3 betragen."); sv.Fehler = 1; } } else { MessageBox.Show("Fehler! Kopfspiel kann nur eine Zahl zwischen 0,1 und 0,3 betragen."); sv.Fehler = 1; } if (sv.Fehler == 0) { sv.Berechnung(); Lbl_Zahnhöhe.Content = Convert.ToString(sv.h); lbl_Fußkreisdurchmesser.Content = Convert.ToString(sv.df); lbl_Teilkreisdurchmesser.Content = Convert.ToString(sv.d); lbl_Zahnfußhöhe.Content = Convert.ToString(sv.hf); lbl_Zahnkopfhöhe.Content = Convert.ToString(sv.ha); lbl_Teilung.Content = Convert.ToString(sv.p); lbl_Kopfkreisdurchmesser.Content = Convert.ToString(sv.da); lbl_Gewicht.Content = Convert.ToString(sv.M); lbl_Preis.Content = Convert.ToString(sv.Wert); tb_Winkel.Text = Convert.ToString(sv.beta); } } }
public void Stirnzahnrad(Außenverzahnung av) { //Profil erstellen //Nullpunkt double x0 = 0; double y0 = 0; //Hilfsgrößen double Teilkreisradius = av.d / 2; double Hilfskreisradius = Teilkreisradius * 0.94; double Fußkreisradius = Teilkreisradius - (1.25 * av.m); double Kopfkreisradius = Teilkreisradius + av.m; double Verrundungsradius = 0.35 * av.m; double Alpha = 20; double Beta = 90 / av.z; double Betarad = Math.PI * Beta / 180; double Gamma = 90 - (Alpha - Beta); double Gammarad = Math.PI * Gamma / 180; double Totalangel = 360.0 / av.z; double Totalangelrad = Math.PI + Totalangel / 180; //Punkte erzeugen //Kleiner Kreis double xMittelpunktaufEvol_links = Hilfskreisradius * Math.Cos(Gammarad); double yMittelpunktaufEvol_links = Hilfskreisradius * Math.Sin(Gammarad); //Schnittpunkt auf Evolvente und Teilkreisradius double xPunktaufEvolvente = -Teilkreisradius *Math.Sin(Betarad); double yPunktaufEvolvente = Teilkreisradius * Math.Cos(Betarad); //Evolventenkreis Radius double EvolventenkreisRadius = Math.Sqrt(Math.Pow((xMittelpunktaufEvol_links - xPunktaufEvolvente), 2) + Math.Pow((yMittelpunktaufEvol_links - yPunktaufEvolvente), 2)); //Koordinaten Schnittpunkt Kopfkreis und Evolventenkreis double xEvolventenkopfkreis_links = Schnittpunkt_X(x0, y0, Kopfkreisradius, xMittelpunktaufEvol_links, yMittelpunktaufEvol_links, EvolventenkreisRadius); double yEvolventenkopfkreis_links = Schnittpunkt_Y(x0, y0, Kopfkreisradius, xMittelpunktaufEvol_links, yMittelpunktaufEvol_links, EvolventenkreisRadius); //Mittelpunktkoordinaten Verrundung double xMittelpunktVerrundung_links = Schnittpunkt_X(x0, y0, Fußkreisradius + Verrundungsradius, xMittelpunktaufEvol_links, yMittelpunktaufEvol_links, EvolventenkreisRadius + Verrundungsradius); double yMittelpunktVerrundung_links = Schnittpunkt_Y(x0, y0, Fußkreisradius + Verrundungsradius, xMittelpunktaufEvol_links, yMittelpunktaufEvol_links, EvolventenkreisRadius + Verrundungsradius); //Schnittpunktkoordinaten Verrundung - Evolventenkreis double x_SP_EvolventeVerrundung_links = Schnittpunkt_X(xMittelpunktaufEvol_links, yMittelpunktaufEvol_links, EvolventenkreisRadius, xMittelpunktVerrundung_links, yMittelpunktVerrundung_links, Verrundungsradius); double y_SP_EvolventeVerrundung_links = Schnittpunkt_Y(xMittelpunktaufEvol_links, yMittelpunktaufEvol_links, EvolventenkreisRadius, xMittelpunktVerrundung_links, yMittelpunktVerrundung_links, Verrundungsradius); //Schnittpunktkoordinaten Verrundung - Fußkreis double x_SP_FußkreisradiusVerrundung_links = Schnittpunkt_X(x0, y0, Fußkreisradius, xMittelpunktVerrundung_links, yMittelpunktVerrundung_links, Verrundungsradius); double y_SP_FußkreisradiusVerrundung_links = Schnittpunkt_Y(x0, y0, Fußkreisradius, xMittelpunktVerrundung_links, yMittelpunktVerrundung_links, Verrundungsradius); //Koordinaten Anfangspunkt Fußkreis double Hilfswinkel = Totalangelrad - Math.Atan(Math.Abs(x_SP_FußkreisradiusVerrundung_links) / Math.Abs(y_SP_FußkreisradiusVerrundung_links)); double x_AnfangspunktFußkreis = -Fußkreisradius *Math.Sin(Hilfswinkel); double y_AnfangspunktFußkreis = Fußkreisradius * Math.Cos(Hilfswinkel); //Ende //Skizze umbenennen hsp_catiaProfil.set_Name("Zahnrad-Test"); Factory2D catfactory2D1 = hsp_catiaProfil.OpenEdition(); //Punkte in Skizze Point2D point_Ursprung = catfactory2D1.CreatePoint(x0, y0); Point2D pointAnfangFußkreisLinks = catfactory2D1.CreatePoint(x_AnfangspunktFußkreis, y_AnfangspunktFußkreis); Point2D pointFußkreisVerrundungLinks = catfactory2D1.CreatePoint(x_SP_FußkreisradiusVerrundung_links, y_SP_FußkreisradiusVerrundung_links); Point2D pointFußkreisVerrundungRechts = catfactory2D1.CreatePoint(-x_SP_FußkreisradiusVerrundung_links, y_SP_FußkreisradiusVerrundung_links); Point2D pointMittelpunktVerrundungLinks = catfactory2D1.CreatePoint(xMittelpunktVerrundung_links, yMittelpunktVerrundung_links); Point2D pointMittelpunktVerrundungRechts = catfactory2D1.CreatePoint(-xMittelpunktVerrundung_links, yMittelpunktVerrundung_links); Point2D pointVerrundungEvolventeLinks = catfactory2D1.CreatePoint(x_SP_EvolventeVerrundung_links, y_SP_EvolventeVerrundung_links); Point2D pointVerrundungEvolventeRechts = catfactory2D1.CreatePoint(-x_SP_EvolventeVerrundung_links, y_SP_EvolventeVerrundung_links); Point2D pointMittelpunktevolventeLinks = catfactory2D1.CreatePoint(xMittelpunktaufEvol_links, xMittelpunktaufEvol_links); Point2D pointMittelpunktevolventeRechts = catfactory2D1.CreatePoint(-xMittelpunktaufEvol_links, yMittelpunktaufEvol_links); Point2D pointEvolventenKopfkreisLinks = catfactory2D1.CreatePoint(xEvolventenkopfkreis_links, yEvolventenkopfkreis_links); Point2D pointEvolventenKopfkreisRechts = catfactory2D1.CreatePoint(-xEvolventenkopfkreis_links, yEvolventenkopfkreis_links); //Kreise Circle2D KreisFußkreis = catfactory2D1.CreateCircle(x0, y0, Fußkreisradius, 0, Math.PI * 2); KreisFußkreis.CenterPoint = point_Ursprung; KreisFußkreis.StartPoint = pointFußkreisVerrundungLinks; KreisFußkreis.EndPoint = pointAnfangFußkreisLinks; Circle2D KreisVerrundungLinks = catfactory2D1.CreateCircle(xMittelpunktVerrundung_links, yMittelpunktVerrundung_links, Verrundungsradius, 0, Math.PI * 2); KreisVerrundungLinks.CenterPoint = pointMittelpunktVerrundungLinks; KreisVerrundungLinks.StartPoint = pointFußkreisVerrundungLinks; KreisVerrundungLinks.EndPoint = pointVerrundungEvolventeLinks; Circle2D KreisEvolventenkreisLinks = catfactory2D1.CreateCircle(xMittelpunktaufEvol_links, yMittelpunktaufEvol_links, EvolventenkreisRadius, 0, Math.PI * 2); KreisEvolventenkreisLinks.CenterPoint = pointMittelpunktevolventeLinks; KreisEvolventenkreisLinks.StartPoint = pointEvolventenKopfkreisLinks; KreisEvolventenkreisLinks.EndPoint = pointVerrundungEvolventeLinks; Circle2D KreisKopfkreis = catfactory2D1.CreateCircle(x0, y0, Kopfkreisradius, 0, Math.PI * 2); KreisKopfkreis.CenterPoint = point_Ursprung; KreisKopfkreis.StartPoint = pointEvolventenKopfkreisRechts; KreisKopfkreis.EndPoint = pointEvolventenKopfkreisLinks; Circle2D KreisEvolventenkreisRechts = catfactory2D1.CreateCircle(-xMittelpunktaufEvol_links, yMittelpunktaufEvol_links, EvolventenkreisRadius, 0, Math.PI * 2); KreisEvolventenkreisRechts.CenterPoint = pointMittelpunktVerrundungRechts; KreisEvolventenkreisRechts.StartPoint = pointVerrundungEvolventeRechts; KreisEvolventenkreisRechts.EndPoint = pointEvolventenKopfkreisRechts; Circle2D KreisVerrundungRechts = catfactory2D1.CreateCircle(-xMittelpunktVerrundung_links, yMittelpunktVerrundung_links, Verrundungsradius, 0, Math.PI * 2); KreisVerrundungRechts.CenterPoint = pointMittelpunktVerrundungRechts; KreisVerrundungRechts.StartPoint = pointVerrundungEvolventeRechts; KreisVerrundungRechts.EndPoint = pointFußkreisVerrundungRechts; //Skizzierer schließen hsp_catiaProfil.CloseEdition(); //Aktualisieren hsp_catiaPart.Part.Update(); //Kreismuster erstellen //Deklarierung ShapeFactory SF = (ShapeFactory)hsp_catiaPart.Part.ShapeFactory; HybridShapeFactory HSF = (HybridShapeFactory)hsp_catiaPart.Part.HybridShapeFactory; Part myPart = hsp_catiaPart.Part; Factory2D Factory2D1 = hsp_catiaProfil.Factory2D; HybridShapePointCoord Ursprung = HSF.AddNewPointCoord(0, 0, 0); Reference RefUrsprung = myPart.CreateReferenceFromObject(Ursprung); HybridShapeDirection XDir = HSF.AddNewDirectionByCoord(1, 0, 0); Reference RefXDir = myPart.CreateReferenceFromObject(XDir); //Kreismuster Daten ausfüllen CircPattern Kreismuster = SF.AddNewSurfacicCircPattern(Factory2D1, 1, 2, 0, 0, 1, 1, RefUrsprung, RefXDir, false, 0, true, false); Kreismuster.CircularPatternParameters = CatCircularPatternParameters.catInstancesandAngularSpacing; AngularRepartition angularRepartition1 = Kreismuster.AngularRepartition; Angle angle1 = angularRepartition1.AngularSpacing; angle1.Value = Convert.ToDouble(360 / Convert.ToDouble(av.z)); AngularRepartition angularRepartition2 = Kreismuster.AngularRepartition; IntParam intParam1 = angularRepartition2.InstancesCount; intParam1.Value = Convert.ToInt32(av.z) + 1; //geschlossene Kontur herstellen Reference Ref_Kreismuster = myPart.CreateReferenceFromObject(Kreismuster); HybridShapeAssemble Verbindung = HSF.AddNewJoin(Ref_Kreismuster, Ref_Kreismuster); Reference Ref_Verbindung = myPart.CreateReferenceFromObject(Verbindung); HSF.GSMVisibility(Ref_Verbindung, 0); myPart.Update(); Bodies bodies = myPart.Bodies; Body myBody = bodies.Add(); myBody.set_Name("Zahnrad"); myBody.InsertHybridShape(Verbindung); myPart.Update(); }
public void Dicke(Außenverzahnung av) { //3D-Modell erzeugen hsp_catiaPart.Part.InWorkObject = hsp_catiaPart.Part.MainBody; }