public static float bekannteGewindelaenge(Schraube schraube) { Boolean gueltig; Gewindelaenge g = new Gewindelaenge(schraube.schaftLaenge, schraube.metrischeGewindegroesse); do { try //try und catch zum fehler abfangen { gueltig = true; Console.WriteLine("Wie lang ist die Gewindelänge (in mm)?"); float input3 = (float)Convert.ToDouble(Console.ReadLine()); g.gewindeLaenge = berechneGewindeLaenge(schraube.metrischeGewindegroesse.mutterhoehe, schraube.schaftLaenge.schaftlaenge, input3); //Unterprogramm Schaftlänge in Schaftlaenge.cs aufrufen if (g.gewindeLaenge == -1) //Automatischer Fehlercode wenn gewählte Gewindelänge zu groß/klein (siehe Schaftlänge) { gueltig = false; } } catch (Exception) //Fehler werden abgefangen { Console.WriteLine("Bitte eine Zahl eingeben"); gueltig = false; } } while (!gueltig); return(g.gewindeLaenge); }
public static void CatiaStarten(Schraube s, String Gd) { Schraube schr = s; String Gewindedarstellung = Gd; new CatiaControl(schr, Gewindedarstellung); }
public static Schaftlaenge getSchaftlaenge(Schraube schraube) { //AB HIER SCHAFTLÄNGE Boolean gueltig; Boolean gueltigInnen = true; //Für die inneren Schleife Schaftlaenge s = new Schaftlaenge(schraube.metrischeGewindegroesse); //Neues Objekt Schaftlänge wird erstellt, mit der Gewindegröße als eingangsparameter um die minSchaftlänge aus der mutterhöhe berechnen zu können. do { gueltig = true; Console.WriteLine("Ist die Schaftlänge bekannt? (j/n)"); //Abfrage ob Schaftlänge bekannt string input = Console.ReadLine(); if (input.Equals("n")) //Wenn nein { do { try //Erneut try und catch zum fehler abfangen { gueltigInnen = true; Console.WriteLine("Wie lang ist die Klemmlaenge (in mm)?"); float input2 = (float)Convert.ToDouble(Console.ReadLine()); s.schaftlaenge = Schaftlaenge.berechneSchaftlaenge(schraube.metrischeGewindegroesse.mutterhoehe, input2); //Unterprogramm Schaftlänge in Schaftlaenge.cs aufrufen if (s.schaftlaenge == -1) //WEnn schaftlänge zu groß/klein kommt dieser Fehlercode wieder { gueltigInnen = false; } } catch (Exception) //Fehler werden abgefangen { Console.WriteLine("Bitte eine Zahl eingeben"); gueltigInnen = false; } } while (!gueltigInnen); return(s); } else if (input.Equals("j")) //Wenn Schaftläenge bekannt soll diese einfach eingegeben werden { do { try { Console.WriteLine("Welche Schaftlänge wird benötigt? (in mm)"); float input2 = (float)Convert.ToDouble(Console.ReadLine()); gueltigInnen = s.setSchaftlaenge(input2); //setSchaftlaenge überprüft ob die Eingabe im gültigen Bereich liegt. Berechnungen finden in Schaftlaenge.cs statt } catch (Exception) { Console.WriteLine("Bitte eine Zahl eingeben"); gueltigInnen = false; } } while (!gueltigInnen); } else //Falls falsche Eingabe { Console.WriteLine("Ungültige Eingabe!"); gueltig = false; } } while (!gueltig); return(s); }
static void Main(string[] args) { Schraube s = new Schraube(); s.metrischeGewindegroesse = null; //Um zu überprüfen ob schon eine Gewindegröße gesetzt wurde new GUI_Zugriff(s); }
public static Gewindelaenge getGewindelaenge(Schraube schraube) { //AB HIER GEWINDELÄNGE Boolean gueltig; //Für die innere Schleife 1. Ordnung Gewindelaenge g = new Gewindelaenge(schraube.schaftLaenge, schraube.metrischeGewindegroesse); //Neues Objekt Gewindelänge wird erstellt, mit der Schaftlänge und der Gewindegröße als Eingangsparameter um die minGewindelänge aus der mutterhöhe und der Schaftlänge berechnen zu können. do { gueltig = true; Console.WriteLine("Soll das Gewinde über die volle Schaftlänge gehen? (j/n)"); //Abfrage ob schaftLaenge=gewindeLaenge string input = Console.ReadLine(); if (input.Equals("n")) //Wenn nein { g.gewindeLaenge = Gewindelaenge.benutzerdefinierteGewindelaenge(schraube); //Unterprogramm in Gewindelaenge.cs } else if (input.Equals("j")) //Gewindelänge wird gleich der Schaftlänge gesetzt { g.gewindeLaenge = Gewindelaenge.maxGewindeLaengeRechnung(schraube.schaftLaenge.schaftlaenge); //maximal mögliche Gewindelänge (Schaftlänge) aus dem Unterprogramm in Gewindelaenge.cs mithilfe der Schaftlänge Console.WriteLine("Die Gewindelänge beträgt: " + g.gewindeLaenge + " mm"); return(g); } else //Falls falsche Eingabe { Console.WriteLine("Ungültige Eingabe!"); gueltig = false; } } while (!gueltig); return(g); }
static public double getPreis(Schraube schraube) //nicht löschen { double p = schraube.masse * 5 + 5; // Preisberechnung p = Math.Round(p, 2); return(p); }
public void ErzeugeScreenshot(Schraube s) { // Dateiname festlegen string bildname = s.schraubenkopf + " M" + s.metrischeGewindegroesse.bezeichnung + "x" + s.schaftLaenge.schaftlaenge; //Standarthintergrung speichern object[] arr1 = new object[3]; hsp_catiaApp.ActiveWindow.ActiveViewer.GetBackgroundColor(arr1); // Hintergrung auf weiß setzen object[] arr2 = new object[] { 1, 1, 1 }; hsp_catiaApp.ActiveWindow.ActiveViewer.PutBackgroundColor(arr2); // 3D Kompass ausblenden hsp_catiaApp.StartCommand("CompassDisplayOff"); hsp_catiaApp.ActiveWindow.ActiveViewer.Reframe(); INFITF.SettingControllers settingControllers1 = hsp_catiaApp.SettingControllers; // Screenshot wird erstellt und gespeichert hsp_catiaApp.ActiveWindow.ActiveViewer.CaptureToFile(CatCaptureFormat.catCaptureFormatBMP, "C:\\Windows\\Temp\\" + bildname + ".bmp"); // 3D Kompass eingeblendet hsp_catiaApp.StartCommand("CompassDisplayOn"); // Setzt die Hintergrundfarbe auf Standart zurück hsp_catiaApp.ActiveWindow.ActiveViewer.PutBackgroundColor(arr1); }
static public double getMasse(Schraube schraube) //nicht Löschen { double dichte = 0.00000785; double m = dichte * schraube.volumen; m = Math.Round(m, 3); return(m); }
public void ErzeugeExportDatei(Schraube s) { string Dokumentname = s.schraubenkopf + " M" + s.metrischeGewindegroesse.bezeichnung + "x" + s.schaftLaenge.schaftlaenge; hsp_catiaPart.Activate(); hsp_catiaPart.ExportData("C:\\Windows\\Temp\\" + Dokumentname, "stp"); //partDocument1.SaveAs "D:\Users\Simon Ortgies\Google Drive\Me2 Conaxkupplung\Part7.CATPart" }
static public double getVolumen(Schraube schraube) //NIcht löschen { double pi = Math.PI; double faktorschraubenkopf = 1.5; double schraubenkopf = schraube.metrischeGewindegroesse.mutterhoehe * schraube.metrischeGewindegroesse.bezeichnung * faktorschraubenkopf * schraube.metrischeGewindegroesse.bezeichnung * faktorschraubenkopf * pi / 4; //Volumen Schraubenkopf double V = schraubenkopf + schraube.anzahl * (schraube.gewindeLaenge.gewindeLaenge * schraube.metrischeGewindegroesse.flanken * schraube.metrischeGewindegroesse.flanken * pi / 4 + (schraube.schaftLaenge.schaftlaenge - schraube.gewindeLaenge.gewindeLaenge) * schraube.metrischeGewindegroesse.bezeichnung * schraube.metrischeGewindegroesse.bezeichnung * pi / 4); // Volumenberechnung V = Math.Round(V, 3); return(V); }
public GUI_Zugriff(Schraube s) { this.s = s; //Zuweisung der übergebenen Variable auf die memberVariable schrauben Window fenster = new Window(); //using System.Window von oben wird aufgerufen Grafikoberfläche meineGUI = new Grafikoberfläche(s); //neues graphische Oberfläche Objekt wird erzeugt fenster.Title = "Schraubenprofis"; //Name des Fensters fenster.SizeToContent = SizeToContent.WidthAndHeight; //Größe des Fensters soll auf die Größe des Inhalts skaliert werden fenster.ResizeMode = ResizeMode.NoResize; //gibt die Möglichkeit, dass man das Fenster von der Größe her verändern kann (NoResize verhindert folgende Erklärung) fenster.Content = meineGUI; //Inhalt des fensters soll durch meineGUI festgelegt werden fenster.ShowDialog(); //ShowDialog sorgt dafür dass zuerst das Fenster ausgeführt werden muss }
public static float benutzerdefinierteGewindelaenge(Schraube schraube) //Unterprogramm für eingegebene Schrauben, abrufbar von UserAbfrage.cs { Boolean gueltig; Gewindelaenge g = new Gewindelaenge(schraube.schaftLaenge, schraube.metrischeGewindegroesse); do { try { gueltig = true; Console.WriteLine("Ist die Gewindelänge bekannt(1) oder soll die minimal nötige Gewindelänge genutzt werden(2)?"); //Abfrage ob Gewindelänge bekannt int input2 = Convert.ToInt32(Console.ReadLine()); //Benutzereingabe if (input2 == 1) { g.gewindeLaenge = bekannteGewindelaenge(schraube); //Unterprogramm weiter unten } else if (input2 == 2) { g.gewindeLaenge = minGewindeLaengeRechnung(schraube.metrischeGewindegroesse.mutterhoehe); //minimal nötige Gewindelänge aus dem Unterprogramm in Gewindelaenge.cs mithilfe der mutterhoehe Console.WriteLine("Die Gewindelänge beträgt " + g.gewindeLaenge + " mm"); } else { Console.WriteLine("Ungültige Eingabe"); gueltig = false; } } catch (Exception) { Console.WriteLine("Ungültige Eingabe"); gueltig = false; } } while (!gueltig); return(g.gewindeLaenge); }
CatiaControl(Schraube s, String Gewindedarstellung) { try { CatiaConnection cc = new CatiaConnection(); // Finde Catia Prozess if (cc.CATIALaeuft()) { Console.WriteLine("0"); // Öffne ein neues Part cc.ErzeugePart(); Console.WriteLine("1"); // Erstelle eine Skizze cc.ErstelleLeereSkizze(); Console.WriteLine("2"); // Generiere ein Profil cc.ErzeugeProfil(s.metrischeGewindegroesse.bezeichnung / 2); //cc.ErzeugeProfil(10); //Test für M20 Console.WriteLine("3"); // Extrudiere Schaft cc.ErzeugeSchaft(s.schaftLaenge.schaftlaenge); //cc.ErzeugeSchaft(100); // Test mit Schaftlänge 100 Console.WriteLine("4"); //Erzeuge Scharubenkopf cc.ErzeugeKopf(s.metrischeGewindegroesse, s.schraubenkopf); Console.WriteLine("5"); //ErzeugeGewindeFeature if (Gewindedarstellung == "technisch") { //Erzeugt eine Fase am ende des Schafts cc.ErzeugeFase(s.metrischeGewindegroesse); Console.WriteLine("6"); cc.ErzeugeGewindeFeature(s.gewinderichtung, s.metrischeGewindegroesse.bezeichnung, s.gewindeLaenge.gewindeLaenge); //cc.ErzeugeGewindeFeature(20, 75); //Test mit d=20, gewindelänge=75 Console.WriteLine("7"); } else if (Gewindedarstellung == "optisch") { cc.ErzeugeGewindeHelix(s); Console.WriteLine("7"); } cc.ErzeugeExportDatei(s); Console.WriteLine("8"); cc.ErzeugeScreenshot(s); Console.WriteLine("9"); MessageBox.Show("Modell erfolgreich erstellt!" + "\n" + "Screenshot und STP unter C:\\Windows\\Temp\\" + s.schraubenkopf + " M" + s.metrischeGewindegroesse.bezeichnung + "x" + s.schaftLaenge.schaftlaenge + " gespeichert", "Erfolgreiche Erstellung", MessageBoxButton.OK, MessageBoxImage.Information); } else { MessageBox.Show("Laufende Catia Application nicht gefunden!" + Environment.NewLine + "Zum Fortfahren Catia zuerst öffnen", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Exception aufgetreten"); } }
String Gewindedarstellung = ""; //Gewindedarstellung für Catia festlegen public Grafikoberfläche(Schraube s) { this.s = s; //Zuweisung der übergebenen Variable auf die memberVariable schrauben InitializeComponent(); }
private Sketch makeGewindeSkizze(Schraube s) { Double P = s.metrischeGewindegroesse.steigung; Double Ri = s.metrischeGewindegroesse.bezeichnung / 2; OriginElements catOriginElements = hsp_catiaPart.Part.OriginElements; Reference RefmyPlaneZX = (Reference)catOriginElements.PlaneZX; Sketches catSketchesGewinde = catHybridBody1.HybridSketches; Sketch myGewinde = catSketchesGewinde.Add(RefmyPlaneZX); hsp_catiaPart.Part.InWorkObject = myGewinde; myGewinde.set_Name("Gewinde"); double V_oben_links = -(((((Math.Sqrt(3) / 2) * P) / 6) + 0.6134 * P) * Math.Tan((30 * Math.PI) / 180) - s.schaftLaenge.schaftlaenge); double H_oben_links = Ri; double V_oben_rechts = (((((Math.Sqrt(3) / 2) * P) / 6) + 0.6134 * P) * Math.Tan((30 * Math.PI) / 180) + s.schaftLaenge.schaftlaenge); double H_oben_rechts = Ri; double V_unten_links = -((0.1443 * P) * Math.Sin((60 * Math.PI) / 180) - s.schaftLaenge.schaftlaenge); double H_unten_links = Ri - (0.6134 * P - 0.1443 * P) - Math.Sqrt(Math.Pow((0.1443 * P), 2) - Math.Pow((0.1443 * P) * Math.Sin((60 * Math.PI) / 180), 2)); double V_unten_rechts = (0.1443 * P) * Math.Sin((60 * Math.PI) / 180) + s.schaftLaenge.schaftlaenge; double H_unten_rechts = Ri - (0.6134 * P - 0.1443 * P) - Math.Sqrt(Math.Pow((0.1443 * P), 2) - Math.Pow((0.1443 * P) * Math.Sin((60 * Math.PI) / 180), 2)); double V_Mittelpunkt = s.schaftLaenge.schaftlaenge; double H_Mittelpunkt = Ri - ((0.6134 * P) - 0.1443 * P); Factory2D catFactory2D2 = myGewinde.OpenEdition(); Point2D Oben_links = catFactory2D2.CreatePoint(H_oben_links, V_oben_links); Point2D Oben_rechts = catFactory2D2.CreatePoint(H_oben_rechts, V_oben_rechts); Point2D Unten_links = catFactory2D2.CreatePoint(H_unten_links, V_unten_links); Point2D Unten_rechts = catFactory2D2.CreatePoint(H_unten_rechts, V_unten_rechts); Point2D Mittelpunkt = catFactory2D2.CreatePoint(H_Mittelpunkt, V_Mittelpunkt); Line2D Oben = catFactory2D2.CreateLine(H_oben_links, V_oben_links, H_oben_rechts, V_oben_rechts); Oben.StartPoint = Oben_links; Oben.EndPoint = Oben_rechts; Line2D Rechts = catFactory2D2.CreateLine(H_oben_rechts, V_oben_rechts, H_unten_rechts, V_unten_rechts); Rechts.StartPoint = Oben_rechts; Rechts.EndPoint = Unten_rechts; Circle2D Verrundung = catFactory2D2.CreateCircle(H_Mittelpunkt, V_Mittelpunkt, 0.1443 * P, 0, 0); Verrundung.CenterPoint = Mittelpunkt; Verrundung.StartPoint = Unten_rechts; Verrundung.EndPoint = Unten_links; Line2D Links = catFactory2D2.CreateLine(H_oben_links, V_oben_links, H_unten_links, V_unten_links); Links.StartPoint = Unten_links; Links.EndPoint = Oben_links; myGewinde.CloseEdition(); hsp_catiaPart.Part.Update(); return(myGewinde); }
internal void ErzeugeGewindeHelix(Schraube s) { Double P = s.metrischeGewindegroesse.steigung; Double Ri = s.metrischeGewindegroesse.bezeichnung / 2; HybridShapeFactory HSF = (HybridShapeFactory)hsp_catiaPart.Part.HybridShapeFactory; Sketch myGewinde = makeGewindeSkizze(s); HybridShapeDirection HelixDir = HSF.AddNewDirectionByCoord(1, 0, 0); Reference RefHelixDir = hsp_catiaPart.Part.CreateReferenceFromObject(HelixDir); HybridShapePointCoord HelixStartpunkt = HSF.AddNewPointCoord(s.schaftLaenge.schaftlaenge, 0, Ri); Reference RefHelixStartpunkt = hsp_catiaPart.Part.CreateReferenceFromObject(HelixStartpunkt); Boolean DrehrichtungLinks; if (s.gewinderichtung == Gewinderichtung.Rechtsgewinde) { DrehrichtungLinks = false; } else { DrehrichtungLinks = true; } HybridShapeHelix Helix = HSF.AddNewHelix(RefHelixDir, true, RefHelixStartpunkt, P, s.gewindeLaenge.gewindeLaenge, DrehrichtungLinks, 0, 0, false); Reference RefHelix = hsp_catiaPart.Part.CreateReferenceFromObject(Helix); Reference RefmyGewinde = hsp_catiaPart.Part.CreateReferenceFromObject(myGewinde); hsp_catiaPart.Part.Update(); hsp_catiaPart.Part.InWorkObject = hsp_catiaPart.Part.MainBody; OriginElements catOriginElements = this.hsp_catiaPart.Part.OriginElements; Reference RefmyPlaneZX = (Reference)catOriginElements.PlaneZX; Sketches catSketchesChamferHelix = catHybridBody1.HybridSketches; Sketch ChamferSkizze = catSketchesChamferHelix.Add(RefmyPlaneZX); hsp_catiaPart.Part.InWorkObject = ChamferSkizze; ChamferSkizze.set_Name("Fase"); double H_links = Ri; double V_links = s.schaftLaenge.schaftlaenge - 0.65 * P; double H_rechts = Ri; double V_rechts = s.schaftLaenge.schaftlaenge; double H_unten = Ri - 0.65 * P; double V_unten = s.schaftLaenge.schaftlaenge; Factory2D catFactory2D3 = ChamferSkizze.OpenEdition(); Point2D links = catFactory2D3.CreatePoint(H_links, V_links); Point2D rechts = catFactory2D3.CreatePoint(H_rechts, V_rechts); Point2D unten = catFactory2D3.CreatePoint(H_unten, V_unten); Line2D Oben = catFactory2D3.CreateLine(H_links, V_links, H_rechts, V_rechts); Oben.StartPoint = links; Oben.EndPoint = rechts; Line2D hypo = catFactory2D3.CreateLine(H_links, V_links, H_unten, V_unten); hypo.StartPoint = links; hypo.EndPoint = unten; Line2D seite = catFactory2D3.CreateLine(H_unten, V_unten, H_rechts, V_rechts); seite.StartPoint = unten; seite.EndPoint = rechts; ChamferSkizze.CloseEdition(); hsp_catiaPart.Part.InWorkObject = hsp_catiaPart.Part.MainBody; hsp_catiaPart.Part.Update(); ShapeFactory catshapeFactoryHelix = (ShapeFactory)hsp_catiaPart.Part.ShapeFactory; Groove myChamfer = catshapeFactoryHelix.AddNewGroove(ChamferSkizze); myChamfer.RevoluteAxis = RefHelixDir; hsp_catiaPart.Part.Update(); Slot GewindeRille = catshapeFactoryHelix.AddNewSlotFromRef(RefmyGewinde, RefHelix); Reference RefmyPad = hsp_catiaPart.Part.CreateReferenceFromObject(SchaftPad); HybridShapeSurfaceExplicit GewindestangenSurface = HSF.AddNewSurfaceDatum(RefmyPad); Reference RefGewindestangenSurface = hsp_catiaPart.Part.CreateReferenceFromObject(GewindestangenSurface); GewindeRille.ReferenceSurfaceElement = RefGewindestangenSurface; Reference RefGewindeRille = hsp_catiaPart.Part.CreateReferenceFromObject(GewindeRille); hsp_catiaPart.Part.Update(); }