예제 #1
0
        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);
        }
예제 #2
0
        public static void CatiaStarten(Schraube s, String Gd)
        {
            Schraube schr = s;
            String   Gewindedarstellung = Gd;

            new CatiaControl(schr, Gewindedarstellung);
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
        }
예제 #5
0
        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);
        }
예제 #6
0
        static public double getPreis(Schraube schraube) //nicht löschen
        {
            double p = schraube.masse * 5 + 5;           // Preisberechnung

            p = Math.Round(p, 2);
            return(p);
        }
예제 #7
0
        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);
        }
예제 #8
0
        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);
        }
예제 #9
0
        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"
        }
예제 #10
0
        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);
        }
예제 #11
0
        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
        }
예제 #12
0
        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);
        }
예제 #13
0
        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");
            }
        }
예제 #14
0
        String Gewindedarstellung       = "";    //Gewindedarstellung für Catia festlegen


        public Grafikoberfläche(Schraube s)
        {
            this.s = s; //Zuweisung der übergebenen Variable auf die memberVariable schrauben
            InitializeComponent();
        }
예제 #15
0
        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);
        }
예제 #16
0
        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();
        }