public void ErzeugeKreisring(Double ra, Double ri) { hsp_catiaProfil.set_Name("Kreisring"); Factory2D catFactory2D1 = hsp_catiaProfil.OpenEdition(); Point2D catPoint2D1 = catFactory2D1.CreatePoint(0, 0); Circle2D catcircle2D1 = catFactory2D1.CreateClosedCircle(0.000000, 0.000000, ra); Circle2D catcircle2D2 = catFactory2D1.CreateClosedCircle(0.000000, 0.000000, ri); catcircle2D1.CenterPoint = catPoint2D1; hsp_catiaProfil.CloseEdition(); hsp_catiaPart.Part.Update(); }
//Ende RundVoll //Halbrund //Erzeugen der Geometrie Halbrund internal void ErzeugeProfilHalbRund(HalbrundProfil neuHalbRund) { hspB1_catia_Profil.set_Name("Halbrund"); Factory2D factory2D = hspB1_catia_Profil.OpenEdition(); //Setzen der Punkte Point2D catPoint2D1 = factory2D.CreatePoint(-neuHalbRund.Radius, 0); Point2D catPoint2D2 = factory2D.CreatePoint(neuHalbRund.Radius, 0); //Kreis Erzeugen Circle2D circle2D1 = factory2D.CreateClosedCircle(0.000000, 0.000000, neuHalbRund.Radius); circle2D1.StartPoint = catPoint2D2; circle2D1.EndPoint = catPoint2D1; //Linie Ziehen Line2D line2D1 = factory2D.CreateLine(-(neuHalbRund.Radius), 0.000000, neuHalbRund.Radius, 0.000000); // Skizzierer verlassen hspB1_catia_Profil.CloseEdition(); // Part aktualisieren hspB1_catiaPart.Part.Update(); }
public bool ErzeugeProfilRohr(Double aussendurchmesser) { if (aussendurchmesser > 0) { // Skizze umbenennen catiaSketch.set_Name("Rohr"); // Rechteck in Skizze einzeichnen // Skizze oeffnen Factory2D catFactory2D1 = catiaSketch.OpenEdition(); Circle2D circle2D1 = catFactory2D1.CreateClosedCircle(0.000000, 0.000000, aussendurchmesser / 2); Point2D catPoint2D1 = catFactory2D1.CreatePoint(0, 0); circle2D1.CenterPoint = catPoint2D1; catiaSketch.CloseEdition(); catiaPart.Part.Update(); skizzeerstellt = true; } else { MessageBox.Show("Fehler beim Erstellen des Profils:\rDie Werte dürfen nicht null sein!"); skizzeerstellt = false; } return(skizzeerstellt); }
public override void ErzeugeProfil(Double D, Double d, Double p, Double q) { // Skizze umbenennen hsp_catiaProfil.set_Name("Kreishohlprofil"); // Skizze oeffnen Factory2D catFactory2D1 = hsp_catiaProfil.OpenEdition(); //Kreise erzeugen catFactory2D1.CreateClosedCircle(0.000000, 0.000000, D / 2); catFactory2D1.CreateClosedCircle(0.000000, 0.000000, d / 2); // Skizzierer verlassen hsp_catiaProfil.CloseEdition(); // Part aktualisieren hsp_catiaPart.Part.Update(); }
public void ErzeugeKreisRingprofil(string currentItemName, double[] parameterListe) { double D = parameterListe[0]; double d = parameterListe[1]; // Skizze umbenennen hsp_catiaProfil.set_Name(currentItemName); // Skizze oeffnen Factory2D catFactory2D1 = hsp_catiaProfil.OpenEdition(); // Kreis Circle2D Circle2D1 = catFactory2D1.CreateClosedCircle(0.0, 0.0, D / 2); Circle2D Circle2D2 = catFactory2D1.CreateClosedCircle(0.0, 0.0, d / 2); // Skizzierer verlassen hsp_catiaProfil.CloseEdition(); // Part aktualisieren hsp_catiaPart.Part.Update(); }
public static void CreateCylinder(double thickness, double radius) { oCurrentSketch = oPartBody.Sketches.Add(oPlaneYZ); Factory2D oFactory2D = (Factory2D)oCurrentSketch.OpenEdition(); oCurrentCircle1 = oFactory2D.CreateClosedCircle(iCenterX, iCenterY, radius); oCurrentSketch.CloseEdition(); ShapeFactory oShapeFactory = (ShapeFactory)oPart; Pad oPad = oShapeFactory.AddNewPad(oCurrentSketch, thickness + iCurrentLevel); oPad.SecondLimit.Dimension.Value = iCurrentLevel * -1; iCurrentLevel = iCurrentLevel + thickness; }
public void ErzeugeKreisProfil(double d) { catiaProfil.set_Name("Kreis"); Factory2D catFactory2D = catiaProfil.OpenEdition(); Point2D center = catFactory2D.CreatePoint(0, 0); Circle2D circle = catFactory2D.CreateClosedCircle(0, 0, d / 2); circle.CenterPoint = center; catiaProfil.CloseEdition(); catiaPart.Part.Update(); }
public static void CreatePatternBearing() { oCurrentSketch = oPartBody.Sketches.Add(oPlaneYZ); Factory2D oFactory2D = oCurrentSketch.OpenEdition(); oCurrentCircle1 = oFactory2D.CreateClosedCircle(iCenterX, iCenterY, iBearingDiam / 2); oCurrentSketch.CloseEdition(); ShapeFactory oShapeFactory = (ShapeFactory)oPart.ShapeFactory; Pad oPad = oShapeFactory.AddNewPad(oCurrentSketch, iBearingLength); OriginElements originElements1 = oPart.OriginElements; Reference oRefPlaneXY = oPart.CreateReferenceFromGeometry(oPart.OriginElements.PlaneXY); RectPattern rectPattern1 = oShapeFactory.AddNewRectPattern(oPad, iNumberOfCylinders + 1, 1, iCylinderSpacing, 0, 1, 1, oRefPlaneXY, oRefPlaneXY, true, true, 0); iCurrentLevel = iBearingLength; }
//Ende RechteckVoll //RundVoll //Erzeugen der Geometrie RundVoll internal void ErzeugeProfilRundVoll(RundVollProfil neuRundVoll) { hspB1_catia_Profil.set_Name("Rund_Voll"); Factory2D factory2D = hspB1_catia_Profil.OpenEdition(); //Kreis Erzeugen Circle2D circle2D1 = factory2D.CreateClosedCircle(0.000000, 0.000000, neuRundVoll.Durchmesser / 2); // Skizzierer verlassen hspB1_catia_Profil.CloseEdition(); // Part aktualisieren hspB1_catiaPart.Part.Update(); }
public void erstelleKreisSkizze(double ddurchmesser) {//cc.erstelleLprofilSkizze (dgroßHlprofil, dgroßBlprofil, dkleinHlprofil, dkleinBlprofil); Factory2D fact2D = hsp_catiaProfil.OpenEdition(); // Skizze umbenennen hsp_catiaProfil.set_Name("Kreis"); // Eckpunkte erstellen double dStartpunktx = 0; double dStartpunkty = 0; Circle2D circle2D = fact2D.CreateClosedCircle(dStartpunktx, dStartpunkty, ddurchmesser); hsp_catiaProfil.CloseEdition(); hsp_catiaPart.Part.Update(); }
private void ProfilSchaft(object[] ParameterListe) { double Durchmesser = Convert.ToDouble(ParameterListe[1]); // Skizze umbenennen hsp_catiaProfil_Schaft.set_Name("Schaft"); // Skizze oeffnen Factory2D catFactory2D2 = hsp_catiaProfil_Schaft.OpenEdition(); Circle2D circle2DSchaft = catFactory2D2.CreateClosedCircle(0, 0, Durchmesser / 2); // Skizzierer verlassen hsp_catiaProfil_Schaft.CloseEdition(); // Part aktualisieren hsp_catiaPart.Part.Update(); }
public void ErzeugeKreisHohlprofil(Double Durchmesser, Double Wandstaerke, Double Laenge, String Path) { // Werte aus Variablen verarbeiten Double Radius = Durchmesser / 2; // Skizze umbenennen hsp_catiaProfil.set_Name("KreisHohlprofil"); // Kreis-Hohlprofil in Skizze einzeichnen // Skizze oeffnen Factory2D catFactory2D1 = hsp_catiaProfil.OpenEdition(); // Kreis-Hohlprofil erzeugen // erst die Punkte catFactory2D1.CreateClosedCircle(0.000000, 0.000000, Radius - Wandstaerke); // Skizzierer verlassen hsp_catiaProfil.CloseEdition(); // Part aktualisieren hsp_catiaPart.Part.Update(); // Hauptkoerper in Bearbeitung definieren hsp_catiaPart.Part.InWorkObject = hsp_catiaPart.Part.MainBody; // Block(Balken) erzeugen ShapeFactory catShapeFactory1 = (ShapeFactory)hsp_catiaPart.Part.ShapeFactory; Pocket catPocket1 = catShapeFactory1.AddNewPocket(hsp_catiaProfil, Laenge); // Block umbenennen catPocket1.set_Name("Tasche"); // Part aktualisieren hsp_catiaPart.Part.Update(); //Reframe hsp_catiaApp.ActiveWindow.ActiveViewer.Reframe(); // Part aktualisieren hsp_catiaPart.Part.Update(); hsp_catiaApp.ActiveWindow.ActiveViewer.CaptureToFile(CatCaptureFormat.catCaptureFormatJPEG, Path); }
internal void SkizzeZylinder(Schraube arr) { part_Schraube = hsp_catiaPartDoc.Part; Bodies bodies = part_Schraube.Bodies; body_Schraube = part_Schraube.MainBody; part_Schraube.InWorkObject = part_Schraube.MainBody; // hsp_catiaPartDoc.Part.InWorkObject = hsp_catiaPartDoc.Part.MainBody; eventuell überflüssig hsp_catiaSkizze.set_Name("Zylinder"); // Bearbeitungsumgebung der Skizze Öffnen Factory2D catfactory2D1 = hsp_catiaSkizze.OpenEdition(); Circle2D Zylinder1 = catfactory2D1.CreateClosedCircle(0, 0, 0.5 * arr.durchmesser); hsp_catiaSkizze.CloseEdition(); }
internal void SkizzeKopf(Schraube arr) { //Skizze für den Kopf öffnen part_Schraube.InWorkObject = skizze_kopf; skizze_kopf.set_Name("Kopf"); Factory2D shapefac = skizze_kopf.OpenEdition(); // je nach gewählten kopfty die richtige Geometrie Zeichnen if (arr.typ == "Außensechskant") { SechseckZeichnen(arr, skizze_kopf); } else { Circle2D Zylinder1 = shapefac.CreateClosedCircle(0, 0, 0.5 * arr.kopfdurchmesser); } skizze_kopf.CloseEdition(); hsp_catiaPartDoc.Part.Update(); }
public void ErzeugeKreisprofil(Double Durchmesser) { // Werte aus Variblen verarbeiten Double Radius = Durchmesser / 2; // Skizze umbenennen hsp_catiaProfil.set_Name("Kreisprofil"); // Kreisprofil in Skizze einzeichnen // Skizze oeffnen Factory2D catFactory2D1 = hsp_catiaProfil.OpenEdition(); // Kreisprofil erzeugen // erst die Punkte catFactory2D1.CreateClosedCircle(0.000000, 0.000000, Radius); // Skizzierer verlassen hsp_catiaProfil.CloseEdition(); // Part aktualisieren hsp_catiaPart.Part.Update(); }
private void button1_Click(object sender, EventArgs e) { INFITF.Application catia; //add the reference - catia v5 infiit interface... try { //열려 있는 catia가져오기 catia = (INFITF.Application)Marshal.GetActiveObject("CATIA.Application"); } catch (Exception) { //catia 실행하기 catia = (INFITF.Application)Activator.CreateInstance(Type.GetTypeFromProgID("CATIA.Application")); catia.Visible = true; } MECMOD.PartDocument prtDoc = (MECMOD.PartDocument)catia.Documents.Add("Part"); MECMOD.Part prt = prtDoc.Part; MECMOD.Bodies bdys = prt.Bodies; MECMOD.Body bdy = bdys.Add(); MECMOD.Sketches skts = bdy.Sketches; INFITF.Reference xypln = (INFITF.Reference)prt.OriginElements.PlaneXY; Sketch skt1 = skts.Add(xypln); Factory2D fac2d = skt1.OpenEdition(); //fac2d안에서 sketch가 이루어진다. fac2d cketch의 기능을 쓸수있다 Point2D p1 = fac2d.CreatePoint(10, 10); Point2D p2 = fac2d.CreatePoint(10, 30); Point2D p3 = fac2d.CreatePoint(40, 30); Point2D p4 = fac2d.CreatePoint(40, 10); //method를 만들고 line생성 Line2D lin1 = CreateLine(fac2d, p1, p2); Line2D lin2 = CreateLine(fac2d, p2, p3); Line2D lin3 = CreateLine(fac2d, p3, p4); Line2D lin4 = CreateLine(fac2d, p4, p1); CatConstraintType cnstDis = CatConstraintType.catCstTypeDistance; MECMOD.Constraint d1 = createCnst(prt, skt1, cnstDis, lin1, lin3); MECMOD.Constraint d2 = createCnst(prt, skt1, cnstDis, lin2, lin4); MECMOD.Constraint d3 = createCnst(prt, skt1, cnstDis, skt1.AbsoluteAxis.HorizontalReference, lin4); MECMOD.Constraint d4 = createCnst(prt, skt1, cnstDis, skt1.AbsoluteAxis.VerticalReference, lin1); /* * INFITF.Reference rline1 = prt.CreateReferenceFromGeometry(lin1); * INFITF.Reference rline2 = prt.CreateReferenceFromGeometry(lin2); * INFITF.Reference rline3 = prt.CreateReferenceFromGeometry(lin3); * INFITF.Reference rline4 = prt.CreateReferenceFromGeometry(lin4); * INFITF.Reference rlineH = prt.CreateReferenceFromGeometry(skt1.AbsoluteAxis.HorizontalReference); * INFITF.Reference rlineV = prt.CreateReferenceFromGeometry(skt1.AbsoluteAxis.VerticalReference); * * MECMOD.Constraint d1 = skt1.Constraints.AddBiEltCst(CatConstraintType.catCstTypeDistance, rline1, rline3); * MECMOD.Constraint d2 = skt1.Constraints.AddBiEltCst(CatConstraintType.catCstTypeDistance, rline2, rline4); * MECMOD.Constraint d3 = skt1.Constraints.AddBiEltCst(CatConstraintType.catCstTypeDistance, rlineH, rline4); * MECMOD.Constraint d4 = skt1.Constraints.AddBiEltCst(CatConstraintType.catCstTypeDistance, rlineV, rline1); */ skt1.CloseEdition(); //create a circlr Sketch skt2 = skts.Add(xypln); Factory2D fac2d1 = skt2.OpenEdition(); //fac2d = skt2.OpenEdition(); //이렇게 함녀 된다. INFITF.Reference H = prt.CreateReferenceFromGeometry(skt2.AbsoluteAxis.HorizontalReference); INFITF.Reference V = prt.CreateReferenceFromGeometry(skt2.AbsoluteAxis.VerticalReference); Circle2D c = fac2d1.CreateClosedCircle(40, 30, 10); c.CenterPoint = p3; // MECMOD.Constraint orPtH = skt2.Constraints.AddBiEltCst(CatConstraintType.catCstTypeDistance,H,(INFITF.Reference)c); //MECMOD.Constraint orPtV = skt2.Constraints.AddBiEltCst(CatConstraintType.catCstTypeDistance, V, (INFITF.Reference)c); MECMOD.Constraint r = skt2.Constraints.AddMonoEltCst(CatConstraintType.catCstTypeRadius, (INFITF.Reference)c); skt2.CloseEdition(); ShapeFactory ShpFac = (ShapeFactory)prt.ShapeFactory; //pad Pad pad = ShpFac.AddNewPad(skt1, 20); //poket Pocket pock = ShpFac.AddNewPocket(skt2, 20); pock.DirectionOrientation = CatPrismOrientation.catRegularOrientation; prt.Update(); }
static void Main(string[] args) { INFITF.Application catia; try { catia = (INFITF.Application)Marshal.GetActiveObject("CATIA.Appication"); } catch (Exception) { catia = (INFITF.Application)Activator.CreateInstance(Type.GetTypeFromProgID("CATIA.Application")); } catia.Visible = true; //open the file PartDocument prtDoc = (PartDocument)catia.Documents.Open(@"C:\Users\517-11\Desktop\saori\Automation\Catia-v5-Automation\DraftingAABoltUsingScript\7_Drafting_the_bolt\Bolt.CATPart"); DrawingDocument drwDoc = (DrawingDocument)catia.Documents.Open(@"C:\Users\517-11\Desktop\saori\Automation\Catia-v5-Automation\DraftingAABoltUsingScript\7_Drafting_the_bolt\TitleBlock.CATDrawing"); //3.get the active sheet DrawingSheet drwSheet = drwDoc.DrawingRoot.ActiveSheet; ////4. add a new view------------------------------------------------ DrawingView FrntView = drwSheet.Views.Add("Front View"); //5.Translate the view x;400 y;150 FrntView.x = 400; FrntView.y = 150; //6.get the generativeBehavior DrawingViewGenerativeBehavior FrntVwGB = FrntView.GenerativeBehavior; // define a front view with the xy plan 1,0,0,0,1,0 FrntVwGB.DefineFrontView(1, 0, 0, 0, 1, 0); //7.assouciated the 3d docuemnt(bolt) with this view. //ref; DrawingViewGenerativeBehavior (Object) //PartDocument prtToDoc = (PartDocument)catia.Documents.Item("CATPart1"); //FrntView.GenerativeBehavior.Document = prtToDoc; FrntView.GenerativeBehavior.Document = prtDoc; //8.Add a top view x;400 y;600------------------------------------ DrawingView Topvw = drwSheet.Views.Add("TopView"); Topvw.x = 400; Topvw.y = 600; DrawingViewGenerativeBehavior TopVwGB = Topvw.GenerativeBehavior; TopVwGB.DefineProjectionView(TopVwGB, CatProjViewType.catTopView); //9. assouciated the 3d docuemnt(bolt) with this view. Topvw.GenerativeBehavior.Document = prtDoc; //10. Activate the view ----------------------------------- //& get its Factory2D to create a circle int each view. //C1(30,30,10) c2(30,,) FrntView.Activate(); Factory2D facF = FrntView.Factory2D; Circle2D c1 = facF.CreateClosedCircle(30, 30, 10); Topvw.Activate(); Factory2D facT = Topvw.Factory2D; Circle2D c2 = facT.CreateClosedCircle(30, 30, 20); //text 추가하기--------------- FrntView.Activate(); DrawingText Ftxt = FrntView.Texts.Add("Front View", 100, 100); Ftxt.SetFontSize(0, 0, 12); DrawingLeader FDleadr = Ftxt.Leaders.Add(0, 0); //txt cnrk-------------------- Topvw.Activate(); DrawingText Ttxt = Topvw.Texts.Add("Top View", -45, 130); Ttxt.SetFontSize(0, 0, 12); DrawingLeader TDleadr = Ttxt.Leaders.Add(0, 0); //table추가하기 DrawingTable table = FrntView.Tables.Add(100, 80, 2, 3, 14, 40); //table. //11. update the drawing document. drwDoc.Update(); }
//InnenVerzahnung public void ErstelleProfilInnen(Data dat) { //geometrisches set auswählen und umbenennen HybridBodies catHybridBodies_I = hsp_catiaPart.Part.HybridBodies; HybridBody catHybridBody_I; try { catHybridBody_I = catHybridBodies_I.Item("Geometrisches Set.1"); } catch (Exception) { MessageBox.Show("Kein geometrisches Set gefunden!\nEin PART manuell erzeugen und darauf achten, dass ein 'Geometisches Set' aktiviert ist.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error); return; } catHybridBody_I.set_Name("Profile"); //Neue Skizze im ausgewählten geometrischen Set anlegen Sketches catSketches_I = catHybridBody_I.HybridSketches; OriginElements catOriginElements_I = hsp_catiaPart.Part.OriginElements; Reference catReference_I = (Reference)catOriginElements_I.PlaneYZ; hsp_catiaProfil = catSketches_I.Add(catReference_I); //Achsensystem in Skizze erzeugen ErzeugeAchsensystem(); //Part aktualisieren hsp_catiaPart.Part.Update(); hsp_catiaProfil.set_Name("InnenverzahnungBlock"); Factory2D catFactory_I = hsp_catiaProfil.OpenEdition(); Circle2D catC2D_I = catFactory_I.CreateClosedCircle(0, 0, dat.getFußkreisdurchmesser_iZahnrad1()); hsp_catiaProfil.CloseEdition(); hsp_catiaPart.Part.Update(); ShapeFactory SF_I = (ShapeFactory)hsp_catiaPart.Part.ShapeFactory; HybridShapeFactory HSF_I = (HybridShapeFactory)hsp_catiaPart.Part.HybridShapeFactory; //Erzeuge Block aus Skizze hsp_catiaPart.Part.InWorkObject = hsp_catiaPart.Part.MainBody; Pad myPad = SF_I.AddNewPad(hsp_catiaProfil, dat.getBreiteZahnrad1()); hsp_catiaPart.Part.Update(); //Neue Skizze im ausgewählten geometrischen Set anlegen Sketches catSketches1 = catHybridBody_I.HybridSketches; OriginElements catOriginElements = hsp_catiaPart.Part.OriginElements; Reference catReference1 = (Reference)catOriginElements.PlaneYZ; hsp_catiaProfil = catSketches1.Add(catReference1); //Achsensystem in Skizze erzeugen ErzeugeAchsensystem(); //Part aktualisieren hsp_catiaPart.Part.Update(); //HilfsRadien double d_r = (dat.getModulZahnrad1() * dat.getZaehnezahlZahnrad1()) / 2; double hk_r = d_r * 1.06; double da_r = d_r - (1.25 * dat.getModulZahnrad1()); double df_r = d_r + dat.getModulZahnrad1(); double vd_r = 0.35 * dat.getModulZahnrad1(); //HilfsWinkel double alpha = 20; double beta = 90 / dat.getZaehnezahlZahnrad1(); double beta_r = Math.PI * beta / 180; double gamma = 90 - (alpha - beta); double gamma_r = Math.PI * gamma / 180; double ta = 360.0 / dat.getZaehnezahlZahnrad1(); double ta_r = Math.PI * ta / 180; //Nullpunkte double x0 = 0; double y0 = 0; //MittelPunkt EvolventenKreis double MP_EvolventenKreis_x = hk_r * Math.Cos(gamma_r); double MP_EvolventenKreis_y = hk_r * Math.Sin(gamma_r); // SchnittPunkt Evolventenkreis & Teilkreisradius double SP_EvolventenTeilKreis_x = -d_r *Math.Sin(beta_r); double SP_EvolventenTeilKreis_y = d_r * Math.Cos(beta_r); //Evolventenkreis Radius double Evolventenkreis_r = Math.Sqrt(Math.Pow((MP_EvolventenKreis_x - SP_EvolventenTeilKreis_x), 2) + Math.Pow((MP_EvolventenKreis_y - SP_EvolventenTeilKreis_y), 2)); //SchnittPunkt Evolventenkreis & Kopfkreisradius double SP_EvolventenKopfKreis_x = Schnittpunkt_x(x0, y0, da_r, MP_EvolventenKreis_x, MP_EvolventenKreis_y, Evolventenkreis_r); double SP_EvolventenKopfKreis_y = Schnittpunkt_y(x0, y0, da_r, MP_EvolventenKreis_x, MP_EvolventenKreis_y, Evolventenkreis_r); //MittelPunkt VerrundungsRadius double MP_Verrundung_x = Schnittpunkt_x(x0, y0, df_r + vd_r, MP_EvolventenKreis_x, MP_EvolventenKreis_y, Evolventenkreis_r + vd_r); double MP_Verrundung_y = Schnittpunkt_y(x0, y0, df_r + vd_r, MP_EvolventenKreis_x, MP_EvolventenKreis_y, Evolventenkreis_r + vd_r); //SchnittPunkt Evolventenkreis & Verrundungsradius double SP_EvolventeVerrundung_x = Schnittpunkt_x(MP_EvolventenKreis_x, MP_EvolventenKreis_y, Evolventenkreis_r, MP_Verrundung_x, MP_Verrundung_y, vd_r); double SP_EvolventeVerrundung_y = Schnittpunkt_y(MP_EvolventenKreis_x, MP_EvolventenKreis_y, Evolventenkreis_r, MP_Verrundung_x, MP_Verrundung_y, vd_r); //SchnittPunkt Fußkreis & Verrundungs Radius double SP_FußkreisVerrundungsRadius_x = Schnittpunkt_x(x0, y0, df_r, MP_Verrundung_x, MP_Verrundung_y, vd_r); double SP_FußkreisVerrundungsRadius_y = Schnittpunkt_y(x0, y0, df_r, MP_Verrundung_x, MP_Verrundung_y, vd_r); //StartPunkt Fußkreis Radius double phi = ta_r - Math.Atan(Math.Abs(SP_FußkreisVerrundungsRadius_x) / Math.Abs(SP_FußkreisVerrundungsRadius_y)); double StartPkt_Fußkreis_x = -df_r *Math.Sin(phi); double StartPkt_Fußkreis_y = df_r * Math.Cos(phi); //Skizze umbenennen und öffnen hsp_catiaProfil.set_Name("InnenverzahnungEinzel"); Factory2D catFactory2D1 = hsp_catiaProfil.OpenEdition(); //Punkte Point2D catP2D_Ursprung = catFactory2D1.CreatePoint(x0, y0); Point2D catP2D_StartPkt_Fußkreis = catFactory2D1.CreatePoint(StartPkt_Fußkreis_x, StartPkt_Fußkreis_y); Point2D catP2D_SP_FußkreisVerrundungsRadius1 = catFactory2D1.CreatePoint(SP_FußkreisVerrundungsRadius_x, SP_FußkreisVerrundungsRadius_y); Point2D catP2D_SP_FußkreisVerrundungsRadius2 = catFactory2D1.CreatePoint(-SP_FußkreisVerrundungsRadius_x, SP_FußkreisVerrundungsRadius_y); Point2D catP2D_MP_EvolventenKreis1 = catFactory2D1.CreatePoint(MP_EvolventenKreis_x, MP_EvolventenKreis_y); Point2D catP2D_MP_EvolventenKreis2 = catFactory2D1.CreatePoint(-MP_EvolventenKreis_x, MP_EvolventenKreis_y); Point2D catP2D_SP_EvolventenKopfKreis1 = catFactory2D1.CreatePoint(SP_EvolventenKopfKreis_x, SP_EvolventenKopfKreis_y); Point2D catP2D_SP_EvolventenKopfKreis2 = catFactory2D1.CreatePoint(-SP_EvolventenKopfKreis_x, SP_EvolventenKopfKreis_y); Point2D catP2D_MP_Verrundung1 = catFactory2D1.CreatePoint(MP_Verrundung_x, MP_Verrundung_y); Point2D catP2D_MP_Verrundung2 = catFactory2D1.CreatePoint(-MP_Verrundung_x, MP_Verrundung_y); Point2D catP2D_SP_EvolventeVerrundung1 = catFactory2D1.CreatePoint(SP_EvolventeVerrundung_x, SP_EvolventeVerrundung_y); Point2D catP2D_SP_EvolventeVerrundung2 = catFactory2D1.CreatePoint(-SP_EvolventeVerrundung_x, SP_EvolventeVerrundung_y); //Kreise Circle2D catC2D_Frußkreis = catFactory2D1.CreateCircle(x0, y0, df_r, 0, 0); catC2D_Frußkreis.CenterPoint = catP2D_Ursprung; catC2D_Frußkreis.StartPoint = catP2D_SP_FußkreisVerrundungsRadius1; catC2D_Frußkreis.EndPoint = catP2D_StartPkt_Fußkreis; Circle2D catC2D_Kopfkreis = catFactory2D1.CreateCircle(x0, y0, da_r, 0, 0); catC2D_Kopfkreis.CenterPoint = catP2D_Ursprung; catC2D_Kopfkreis.StartPoint = catP2D_SP_EvolventenKopfKreis2; catC2D_Kopfkreis.EndPoint = catP2D_SP_EvolventenKopfKreis1; Circle2D catC2D_EvolventenKreis1 = catFactory2D1.CreateCircle(MP_EvolventenKreis_x, MP_EvolventenKreis_y, Evolventenkreis_r, 0, 0); catC2D_EvolventenKreis1.CenterPoint = catP2D_MP_EvolventenKreis1; catC2D_EvolventenKreis1.StartPoint = catP2D_SP_EvolventenKopfKreis1; catC2D_EvolventenKreis1.EndPoint = catP2D_SP_EvolventeVerrundung1; Circle2D catC2D_Evolventenkreis2 = catFactory2D1.CreateCircle(-MP_EvolventenKreis_x, MP_EvolventenKreis_y, Evolventenkreis_r, 0, 0); catC2D_Evolventenkreis2.CenterPoint = catP2D_MP_EvolventenKreis2; catC2D_Evolventenkreis2.StartPoint = catP2D_SP_EvolventeVerrundung2; catC2D_Evolventenkreis2.EndPoint = catP2D_SP_EvolventenKopfKreis2; Circle2D catC2D_VerrundungsKreis1 = catFactory2D1.CreateCircle(MP_Verrundung_x, MP_Verrundung_y, vd_r, 0, 0); catC2D_VerrundungsKreis1.CenterPoint = catP2D_MP_Verrundung1; catC2D_VerrundungsKreis1.StartPoint = catP2D_SP_FußkreisVerrundungsRadius1; catC2D_VerrundungsKreis1.EndPoint = catP2D_SP_EvolventeVerrundung1; Circle2D catC2D_VerrundungsKreis2 = catFactory2D1.CreateCircle(-MP_Verrundung_x, MP_Verrundung_y, vd_r, 0, 0); catC2D_VerrundungsKreis2.CenterPoint = catP2D_MP_Verrundung2; catC2D_VerrundungsKreis2.StartPoint = catP2D_SP_EvolventeVerrundung2; catC2D_VerrundungsKreis2.EndPoint = catP2D_SP_FußkreisVerrundungsRadius2; hsp_catiaProfil.CloseEdition(); hsp_catiaPart.Part.Update(); //Skizze und Referenzen Factory2D Factory2D1 = hsp_catiaProfil.Factory2D; HybridShapePointCoord Ursprung = HSF_I.AddNewPointCoord(0, 0, 0); Reference RefUrsprung = hsp_catiaPart.Part.CreateReferenceFromObject(Ursprung); HybridShapeDirection XDir = HSF_I.AddNewDirectionByCoord(1, 0, 0); Reference RefXDir = hsp_catiaPart.Part.CreateReferenceFromObject(XDir); //Kreismuster mit Daten füllen CircPattern Kreismuster = SF_I.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 / dat.getZaehnezahlZahnrad1()); AngularRepartition angularRepartition2 = Kreismuster.AngularRepartition; IntParam intParam1 = angularRepartition2.InstancesCount; intParam1.Value = Convert.ToInt32(dat.getZaehnezahlZahnrad1()) + 1; //geschlossene Kontur Reference Ref_Kreismuster = hsp_catiaPart.Part.CreateReferenceFromObject(Kreismuster); HybridShapeAssemble Verbindung = HSF_I.AddNewJoin(Ref_Kreismuster, Ref_Kreismuster); Reference Ref_Verbindung = hsp_catiaPart.Part.CreateReferenceFromObject(Verbindung); HSF_I.GSMVisibility(Ref_Verbindung, 0); hsp_catiaPart.Part.Update(); /*Bodies bodies = hsp_catiaPart.Part.Bodies; * Body myBody = bodies.Add(); * myBody.set_Name("Zahnrad"); * myBody.InsertHybridShape(Verbindung); * * hsp_catiaPart.Part.Update();*/ //Tasche für Innenverzahnung(grob) hsp_catiaPart.Part.InWorkObject = hsp_catiaPart.Part.MainBody; Pocket catPocketInnen = SF_I.AddNewPocketFromRef(Ref_Verbindung, dat.getBreiteZahnrad1()); hsp_catiaPart.Part.Update(); }
public void ErzeugeProfil(Zahnrad Zahnrad1) { // geometrisches Set auswaehlen und umbenennen HybridBodies catHybridBodies1 = hsp_catiaPart.Part.HybridBodies; HybridBody catHybridBody1; try { catHybridBody1 = catHybridBodies1.Item("Geometrisches Set.1"); } catch (Exception) { MessageBox.Show("Kein geometrisches Set gefunden! " + Environment.NewLine + "Ein PART manuell erzeugen und ein darauf achten, dass 'Geometisches Set' aktiviert ist.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Information); return; } catHybridBody1.set_Name("Profile"); // neue Skizze im ausgewaehlten geometrischen Set anlegen Sketches catSketches1 = catHybridBody1.HybridSketches; OriginElements catOriginElements = hsp_catiaPart.Part.OriginElements; Reference catReference1 = (Reference)catOriginElements.PlaneYZ; hsp_catiaProfil = catSketches1.Add(catReference1); // Achsensystem in Skizze erstellen ErzeugeAchsensystem(); // Part aktualisieren hsp_catiaPart.Part.Update(); //Nullpunkt double x0 = 0; double y0 = 0; //Hilfsgrößen von Wilkos PDF double Teilkreisradius = Zahnrad1.d / 2; double Hilfskreisradius = Teilkreisradius * 0.94; double Fußkreisradius = Teilkreisradius - (1.25 * Zahnrad1.m); double Kopfkreisradius = Teilkreisradius + Zahnrad1.m; double Verrundungsradius = 0.35 * Zahnrad1.m; double Alpha = 20; double Beta = 90 / Zahnrad1.z; double Betarad = Math.PI * Beta / 180; double Gamma = 90 - (Alpha - Beta); double Gammarad = Math.PI * Gamma / 180; double Totalangel = 360.0 / Zahnrad1.z; double Totalangelrad = Math.PI * Totalangel / 180; //Punkte //LinkerEvolKreis Mittelp. Koordinaten double xMPEvo_links = Hilfskreisradius * Math.Cos(Gammarad); double yMPEvo_links = Hilfskreisradius * Math.Sin(Gammarad); //Schnittpkt. auf Evolvente und Teilkreisradius double xPunktAufEvolvente = -Teilkreisradius *Math.Sin(Betarad); double yPunktAufEvolvente = Teilkreisradius * Math.Cos(Betarad); //Evolventenkreis Radius double EvolventenkreisRadius = Math.Sqrt(Math.Pow((xMPEvo_links - xPunktAufEvolvente), 2) + Math.Pow((yMPEvo_links - yPunktAufEvolvente), 2)); //Koordinaten Schnittpunkt Kopfkreis und Evolventenkreis double xEvolventenkopfkreis_links = Schnittpunkt_X(x0, y0, Kopfkreisradius, xMPEvo_links, yMPEvo_links, EvolventenkreisRadius); double yEvolventenkopfkreis_links = Schnittpunkt_Y(x0, y0, Kopfkreisradius, xMPEvo_links, yMPEvo_links, EvolventenkreisRadius); //Mittelpunktkoordinaten Verrundung double xMittelpunktVerrundung_links = Schnittpunkt_X(x0, y0, Fußkreisradius + Verrundungsradius, xMPEvo_links, yMPEvo_links, EvolventenkreisRadius + Verrundungsradius); double yMittelpunktVerrundung_links = Schnittpunkt_Y(x0, y0, Fußkreisradius + Verrundungsradius, xMPEvo_links, yMPEvo_links, EvolventenkreisRadius + Verrundungsradius); //Schnittpubktkoordinaten Verrundung - Evolventenkreis double x_SP_EvolventeVerrundung_links = Schnittpunkt_X(xMPEvo_links, yMPEvo_links, EvolventenkreisRadius, xMittelpunktVerrundung_links, yMittelpunktVerrundung_links, Verrundungsradius); double y_SP_EvolventeVerrundung_links = Schnittpunkt_Y(xMPEvo_links, yMPEvo_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); //Skizze umbenennen und öffnen hsp_catiaProfil.set_Name("Zahnradskizze"); Factory2D catfactory2D1 = hsp_catiaProfil.OpenEdition(); //Nun die Punkte in die Skizze Point2D Ursprung = catfactory2D1.CreatePoint(x0, y0); Point2D EndpunktEvolventenkreis = catfactory2D1.CreatePoint(x_AnfangspunktFußkreis, y_AnfangspunktFußkreis); Point2D VerrundungLinksAnfang = catfactory2D1.CreatePoint(x_SP_FußkreisradiusVerrundung_links, y_SP_FußkreisradiusVerrundung_links); Point2D VerrundungRechtsEnde = catfactory2D1.CreatePoint(-x_SP_FußkreisradiusVerrundung_links, y_SP_FußkreisradiusVerrundung_links); Point2D MPVerrundungLinks = catfactory2D1.CreatePoint(xMittelpunktVerrundung_links, yMittelpunktVerrundung_links); Point2D MPVerrundungRechts = catfactory2D1.CreatePoint(-xMittelpunktVerrundung_links, yMittelpunktVerrundung_links); Point2D VerrundungEndeLinks = catfactory2D1.CreatePoint(x_SP_EvolventeVerrundung_links, y_SP_EvolventeVerrundung_links); Point2D VerrundungAnfangRechts = catfactory2D1.CreatePoint(-x_SP_EvolventeVerrundung_links, y_SP_EvolventeVerrundung_links); Point2D MPEvolventeLinks = catfactory2D1.CreatePoint(xMPEvo_links, yMPEvo_links); Point2D MPEvolventeRechts = catfactory2D1.CreatePoint(-xMPEvo_links, yMPEvo_links); Point2D EvolventenEndeLinks = catfactory2D1.CreatePoint(xEvolventenkopfkreis_links, yEvolventenkopfkreis_links); Point2D EvolventenEndeRechts = catfactory2D1.CreatePoint(-xEvolventenkopfkreis_links, yEvolventenkopfkreis_links); //Kreise Circle2D Fußkreis = catfactory2D1.CreateCircle(x0, y0, Fußkreisradius, 0, Math.PI * 2); Fußkreis.CenterPoint = Ursprung; Fußkreis.StartPoint = EndpunktEvolventenkreis; Fußkreis.EndPoint = VerrundungRechtsEnde; Circle2D VerrundungLinks = catfactory2D1.CreateCircle(xMittelpunktVerrundung_links, yMittelpunktVerrundung_links, Verrundungsradius, 0, Math.PI * 2); VerrundungLinks.CenterPoint = MPVerrundungLinks; VerrundungLinks.StartPoint = VerrundungLinksAnfang; VerrundungLinks.EndPoint = VerrundungEndeLinks; Circle2D EvolventenkreisLinks = catfactory2D1.CreateCircle(xMPEvo_links, yMPEvo_links, EvolventenkreisRadius, 0, Math.PI * 2); EvolventenkreisLinks.CenterPoint = MPEvolventeLinks; EvolventenkreisLinks.StartPoint = EvolventenEndeLinks; EvolventenkreisLinks.EndPoint = VerrundungEndeLinks; Circle2D Kopfkreis = catfactory2D1.CreateCircle(x0, y0, Kopfkreisradius, 0, Math.PI * 2); Kopfkreis.CenterPoint = Ursprung; Kopfkreis.StartPoint = EvolventenEndeRechts; Kopfkreis.EndPoint = EvolventenEndeLinks; Circle2D EvolventenkreisRechts = catfactory2D1.CreateCircle(-xMPEvo_links, yMPEvo_links, EvolventenkreisRadius, 0, Math.PI * 2); EvolventenkreisRechts.CenterPoint = MPEvolventeRechts; EvolventenkreisRechts.StartPoint = VerrundungAnfangRechts; EvolventenkreisRechts.EndPoint = EvolventenEndeRechts; Circle2D VerrundungRechts = catfactory2D1.CreateCircle(-xMittelpunktVerrundung_links, yMittelpunktVerrundung_links, Verrundungsradius, 0, Math.PI * 2); VerrundungRechts.CenterPoint = MPVerrundungRechts; VerrundungRechts.StartPoint = VerrundungAnfangRechts; VerrundungRechts.EndPoint = VerrundungRechtsEnde; // Skizzierer verlassen hsp_catiaProfil.CloseEdition(); // Part aktualisieren hsp_catiaPart.Part.Update(); ShapeFactory shapeFactory1 = (ShapeFactory)hsp_catiaPart.Part.ShapeFactory; HybridShapeFactory hybridShapeFactory1 = (HybridShapeFactory)hsp_catiaPart.Part.HybridShapeFactory; Factory2D factory2D1 = hsp_catiaProfil.Factory2D; HybridShapePointCoord ursprung = hybridShapeFactory1.AddNewPointCoord(0, 0, 0); Reference refUrsprung = hsp_catiaPart.Part.CreateReferenceFromObject(ursprung); HybridShapeDirection xRichtung = hybridShapeFactory1.AddNewDirectionByCoord(1, 0, 0); Reference refxRichtung = hsp_catiaPart.Part.CreateReferenceFromObject(xRichtung); CircPattern kreismuster = shapeFactory1.AddNewSurfacicCircPattern(factory2D1, 1, 2, 0, 0, 1, 1, refUrsprung, refxRichtung, false, 0, true, false); kreismuster.CircularPatternParameters = CatCircularPatternParameters.catInstancesandAngularSpacing; AngularRepartition angularRepartition1 = kreismuster.AngularRepartition; Angle angle1 = angularRepartition1.AngularSpacing; angle1.Value = Convert.ToDouble(360 / Zahnrad1.z); AngularRepartition angularRepartition2 = kreismuster.AngularRepartition; IntParam intParam1 = angularRepartition2.InstancesCount; intParam1.Value = Convert.ToInt32(Zahnrad1.z) + 1; //Kreismusterenden verbinden Reference refKreismuster = hsp_catiaPart.Part.CreateReferenceFromObject(kreismuster); HybridShapeAssemble verbindung = hybridShapeFactory1.AddNewJoin(refKreismuster, refKreismuster); Reference refVerbindung = hsp_catiaPart.Part.CreateReferenceFromObject(verbindung); hybridShapeFactory1.GSMVisibility(refVerbindung, 0); hsp_catiaPart.Part.MainBody.InsertHybridShape(verbindung); hsp_catiaPart.Part.Update(); ErzeugeBlock(Zahnrad1, refVerbindung, shapeFactory1); Sketches sketchesBohrung = catHybridBody1.HybridSketches; OriginElements catoriginelements = hsp_catiaPart.Part.OriginElements; Reference refmxPlaneX = (Reference)catoriginelements.PlaneYZ; hsp_catiaProfil = catSketches1.Add(refmxPlaneX); ErzeugeAchsensystem(); hsp_catiaPart.Part.Update(); hsp_catiaProfil.set_Name("Bohrung"); Factory2D catfactory2D2 = hsp_catiaProfil.OpenEdition(); Circle2D KreisFürBohrungsskizze = catfactory2D2.CreateClosedCircle(x0, y0, Zahnrad1.bd / 2); hsp_catiaProfil.CloseEdition(); hsp_catiaPart.Part.Update(); hsp_catiaPart.Part.InWorkObject = hsp_catiaPart.Part.MainBody; Pocket Tasche = shapeFactory1.AddNewPocket(hsp_catiaProfil, Zahnrad1.b); hsp_catiaPart.Part.Update(); }
static void Main(string[] args) { INFITF.Application catia; try { catia = (INFITF.Application)Marshal.GetActiveObject("CATIA.Application"); } catch (Exception) { catia = (INFITF.Application)Activator.CreateInstance(Type.GetTypeFromProgID("CATIA.Application")); } catia.Visible = true; PartDocument prtDoc = (PartDocument)catia.Documents.Add("Part"); Part prt = prtDoc.Part; Bodies bdys = prt.Bodies; Body PartBody = bdys.Item(1); INFITF.Reference xypln = (INFITF.Reference)prt.OriginElements.PlaneXY; //다른 body에서 사용가능 ShapeFactory shpfac = (ShapeFactory)prt.ShapeFactory; //1 body1생성----------------------- Body bdy1 = bdys.Add(); Sketches skts = bdy1.Sketches; Sketch skt = skts.Add(xypln); Factory2D fac2d = skt.OpenEdition(); CreateRectangle(fac2d, prt, skt, 50, 50, 100, 100); //사각형을 만든 method를 작성했다 skt.CloseEdition(); Pad p1 = shpfac.AddNewPad(skt, 80); //2-------------------------------- Body bdy2 = bdys.Add(); Sketch skt2 = bdy2.Sketches.Add(xypln); fac2d = skt2.OpenEdition(); Circle2D c = fac2d.CreateClosedCircle(75, 75, 20); skt2.CloseEdition(); Pad p2 = shpfac.AddNewPad(skt2, 100); //3---------------------------------- Body bdy3 = bdys.Add(); Sketch skt3 = bdy3.Sketches.Add(xypln); fac2d = skt3.OpenEdition(); Point2D pt1 = fac2d.CreatePoint(75, 80); Point2D pt2 = fac2d.CreatePoint(70, 70); Point2D pt3 = fac2d.CreatePoint(80, 70); CreateTriangle(fac2d, prt, skt3, pt1, pt2, pt3); //삼각형을 만든 method를 작성했다 skt3.CloseEdition(); Pad p3 = shpfac.AddNewPad(skt3, 100); //---------------------------------------------- prt.InWorkObject = PartBody; //workobject 지정한다 shpfac.AddNewAdd(bdy1); shpfac.AddNewAdd(bdy2); shpfac.AddNewRemove(bdy3); prt.Update(); }
//Innenverzahntes Stirnrad public void ErzeugeProfilInnen(Data dat) { //KOORDINATEN ANLEGEN //Nullpunkt double x0 = 0; double y0 = 0; //Radien und Winkel umgestellt double Teilkreisradius = dat.getTeilkreisdurchmesser() / 2; //Angenährt double Hilfskreisradius = Teilkreisradius * 1.12; double Kopfkreisradius = Teilkreisradius - (1.25 * dat.getModul()); double Fußkreisradius = Teilkreisradius + dat.getModul(); double Verrundungsradius = 0.35 * dat.getModul(); double Alpha = 20; double Beta = 90 / dat.getZähnezahl(); double Betarad = Math.PI * Beta / 180; double Gamma = 90 - (Alpha - Beta); double Gammarad = Math.PI * Gamma / 180; double Totalangel = 360.0 / dat.getZähnezahl(); double Totalangelrad = Math.PI * Totalangel / 180; //Schnittpunkte und Koordinaten //Evolventenkreis Center Koordinaten double xMittelpunktaufEvol_links = Hilfskreisradius * Math.Cos(Gammarad); double yMittelpunktaufEvol_links = Hilfskreisradius * Math.Sin(Gammarad); //Schnittpkt. der Evolvente und dem Teilkreisradius double xPunktAufEvolvente = -Teilkreisradius *Math.Sin(Betarad); double yPunktAufEvolvente = Teilkreisradius * Math.Cos(Betarad); //Evolvente Radius double EvolventenkreisRadius = Math.Sqrt(Math.Pow((xMittelpunktaufEvol_links - xPunktAufEvolvente), 2) + Math.Pow((yMittelpunktaufEvol_links - yPunktAufEvolvente), 2)); //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); //Center 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); //Schnittpunkt 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); //Schnittpunkt 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); //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); //Geometrisches Set auswählen und umbennen HybridBodies catHybridBodies1 = hsp_catiaPart.Part.HybridBodies; HybridBody catHybridBody1; try { catHybridBody1 = catHybridBodies1.Item("Geometrisches Set.1"); } catch (Exception) { MessageBox.Show("Kein geometrisches Set gefunden! " + Environment.NewLine + "Ein PART manuell erzeugen und ein darauf achten, dass 'Geometisches Set' aktiviert ist.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Information); return; } catHybridBody1.set_Name("Profile"); //ERSTELLE SKIZZE FÜR SCHEIBE Sketches sketchesBohrung = catHybridBody1.HybridSketches; OriginElements catoriginelements = hsp_catiaPart.Part.OriginElements; Reference refmxPlaneX = (Reference)catoriginelements.PlaneYZ; hsp_catiaProfil = sketchesBohrung.Add(refmxPlaneX); ErzeugeAchsensystem(); hsp_catiaPart.Part.Update(); //Skizze umbenennen und öffnen hsp_catiaProfil.set_Name("Scheibe"); Factory2D catfactory2D2 = hsp_catiaProfil.OpenEdition(); //Kreis Circle2D Scheibe = catfactory2D2.CreateClosedCircle(x0, y0, dat.getAußenradius()); //Skizze schließen hsp_catiaProfil.CloseEdition(); //Update hsp_catiaPart.Part.Update(); //Erzeuge Block ShapeFactory shapeFactoryScheibe = (ShapeFactory)hsp_catiaPart.Part.ShapeFactory; hsp_catiaPart.Part.InWorkObject = hsp_catiaPart.Part.MainBody; Pad Block = shapeFactoryScheibe.AddNewPad(hsp_catiaProfil, dat.getBreite()); hsp_catiaPart.Part.Update(); //Zahnradskizze erstellen //Skizze umbenennen und öffnen Sketches catSketches1 = catHybridBody1.HybridSketches; OriginElements catOriginElements = hsp_catiaPart.Part.OriginElements; Reference catReference1 = (Reference)catOriginElements.PlaneYZ; hsp_catiaProfil = catSketches1.Add(catReference1); //Achsensystem in Skizze erstellen ErzeugeAchsensystem(); //Update hsp_catiaPart.Part.Update(); //Umbennen und öffnen hsp_catiaProfil.set_Name("Innenverzahntes Stirnrad"); Factory2D catfactory2D1 = hsp_catiaProfil.OpenEdition(); //Punkte in Skizze einzeichnen 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, yMittelpunktaufEvol_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 einzeichnen Circle2D KreisFrußkreis = catfactory2D1.CreateCircle(x0, y0, Fußkreisradius, 0, Math.PI * 2); KreisFrußkreis.CenterPoint = point_Ursprung; KreisFrußkreis.StartPoint = pointFußkreisVerrundungLinks; KreisFrußkreis.EndPoint = pointAnfangFußkreisLinks; Circle2D KreisVerrundungLinks = catfactory2D1.CreateCircle(xMittelpunktVerrundung_links, yMittelpunktVerrundung_links, Verrundungsradius, 0, Math.PI * 2); KreisVerrundungLinks.CenterPoint = pointMittelpunktVerrundungLinks; KreisVerrundungLinks.EndPoint = pointFußkreisVerrundungLinks; KreisVerrundungLinks.StartPoint = pointVerrundungEvolventeLinks; Circle2D KreisEvolventenkreisLinks = catfactory2D1.CreateCircle(xMittelpunktaufEvol_links, yMittelpunktaufEvol_links, EvolventenkreisRadius, 0, Math.PI * 2); KreisEvolventenkreisLinks.CenterPoint = pointMittelpunktevolventeLinks; KreisEvolventenkreisLinks.EndPoint = pointEvolventenKopfkreisLinks; KreisEvolventenkreisLinks.StartPoint = 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 = pointMittelpunktevolventeRechts; KreisEvolventenkreisRechts.EndPoint = pointVerrundungEvolventeRechts; KreisEvolventenkreisRechts.StartPoint = pointEvolventenKopfkreisRechts; Circle2D KreisVerrundungRechts = catfactory2D1.CreateCircle(-xMittelpunktVerrundung_links, yMittelpunktVerrundung_links, Verrundungsradius, 0, Math.PI * 2); KreisVerrundungRechts.CenterPoint = pointMittelpunktVerrundungRechts; KreisVerrundungRechts.EndPoint = pointVerrundungEvolventeRechts; KreisVerrundungRechts.StartPoint = pointFußkreisVerrundungRechts; //Schließen hsp_catiaProfil.CloseEdition(); //Updaten hsp_catiaPart.Part.Update(); //ERSTELLE KREISMUSTER HybridShapeFactory hybridShapeFactory1 = (HybridShapeFactory)hsp_catiaPart.Part.HybridShapeFactory; ShapeFactory shapeFactory1 = (ShapeFactory)hsp_catiaPart.Part.ShapeFactory; Factory2D factory2D1 = hsp_catiaProfil.Factory2D; HybridShapePointCoord ursprung = hybridShapeFactory1.AddNewPointCoord(0, 0, 0); Reference refUrsprung = hsp_catiaPart.Part.CreateReferenceFromObject(ursprung); HybridShapeDirection xRichtung = hybridShapeFactory1.AddNewDirectionByCoord(1, 0, 0); Reference refxRichtung = hsp_catiaPart.Part.CreateReferenceFromObject(xRichtung); CircPattern kreismuster = shapeFactory1.AddNewSurfacicCircPattern(factory2D1, 1, 2, 0, 0, 1, 1, refUrsprung, refxRichtung, false, 0, true, false); kreismuster.CircularPatternParameters = CatCircularPatternParameters.catInstancesandAngularSpacing; AngularRepartition angularRepartition1 = kreismuster.AngularRepartition; Angle angle1 = angularRepartition1.AngularSpacing; angle1.Value = Convert.ToDouble(360 / dat.getZähnezahl()); AngularRepartition angularRepartition2 = kreismuster.AngularRepartition; IntParam intParam1 = angularRepartition2.InstancesCount; intParam1.Value = Convert.ToInt32(dat.getZähnezahl()) + 1; //Kreismusterenden verbinden Reference refKreismuster = hsp_catiaPart.Part.CreateReferenceFromObject(kreismuster); HybridShapeAssemble verbindung = hybridShapeFactory1.AddNewJoin(refKreismuster, refKreismuster); Reference refVerbindung = hsp_catiaPart.Part.CreateReferenceFromObject(verbindung); hybridShapeFactory1.GSMVisibility(refVerbindung, 0); hsp_catiaPart.Part.MainBody.InsertHybridShape(verbindung); //Update hsp_catiaPart.Part.Update(); //Tasche ErzeugeTasche(dat, refVerbindung, shapeFactory1); hsp_catiaProfil = catSketches1.Parent as MECMOD.Sketch; hsp_catiaPart.Part.Update(); }
internal void SechseckZeichnen(Schraube arr, Sketch skizze) { double schlüsselweite = 0.5 * Convert.ToDouble(arr.schluesselbreite); double außenkreisSchraubenkopf = schlüsselweite / (Math.Sqrt(3) / 2); Factory2D catfactory2D = skizze.OpenEdition(); Point2D point2D1 = catfactory2D.CreatePoint(0, 0); Point2D point2D2 = catfactory2D.CreatePoint(0, schlüsselweite); Circle2D circle2D1 = catfactory2D.CreateClosedCircle(0, 0, außenkreisSchraubenkopf); circle2D1.CenterPoint = point2D1; circle2D1.Construction = true; Circle2D circle2D2 = catfactory2D.CreateClosedCircle(0, 0, schlüsselweite); circle2D2.CenterPoint = point2D1; circle2D2.Construction = true; Point2D point2D3 = catfactory2D.CreatePoint(0.5 * außenkreisSchraubenkopf, schlüsselweite); Point2D point2D4 = catfactory2D.CreatePoint(-0.5 * außenkreisSchraubenkopf, schlüsselweite); Point2D point2D5 = catfactory2D.CreatePoint(-1 * außenkreisSchraubenkopf, 0); Point2D point2D6 = catfactory2D.CreatePoint(-0.5 * außenkreisSchraubenkopf, -1 * schlüsselweite); Point2D point2D7 = catfactory2D.CreatePoint(0.5 * außenkreisSchraubenkopf, -1 * schlüsselweite); Point2D point2D8 = catfactory2D.CreatePoint(außenkreisSchraubenkopf, -0); Line2D line2D3 = catfactory2D.CreateLine(0.5 * außenkreisSchraubenkopf, schlüsselweite, -0.5 * außenkreisSchraubenkopf, schlüsselweite); line2D3.StartPoint = point2D3; line2D3.EndPoint = point2D4; Line2D line2D4 = catfactory2D.CreateLine(-0.5 * außenkreisSchraubenkopf, schlüsselweite, -1 * außenkreisSchraubenkopf, 0); line2D4.StartPoint = point2D4; line2D4.EndPoint = point2D5; Line2D line2D5 = catfactory2D.CreateLine(-1 * außenkreisSchraubenkopf, 0, -0.5 * außenkreisSchraubenkopf, -1 * schlüsselweite); line2D5.StartPoint = point2D5; line2D5.EndPoint = point2D6; Line2D line2D6 = catfactory2D.CreateLine(-0.5 * außenkreisSchraubenkopf, -1 * schlüsselweite, 0.5 * außenkreisSchraubenkopf, -1 * schlüsselweite); line2D6.StartPoint = point2D6; line2D6.EndPoint = point2D7; Line2D line2D7 = catfactory2D.CreateLine(0.5 * außenkreisSchraubenkopf, -1 * schlüsselweite, außenkreisSchraubenkopf, 0); line2D7.StartPoint = point2D7; line2D7.EndPoint = point2D8; Line2D line2D8 = catfactory2D.CreateLine(außenkreisSchraubenkopf, 0, 0.5 * außenkreisSchraubenkopf, schlüsselweite); line2D8.StartPoint = point2D8; line2D8.EndPoint = point2D3; Line2D line2D9 = catfactory2D.CreateLine(0, 0, 0, schlüsselweite); line2D9.Construction = true; line2D9.StartPoint = point2D1; line2D9.EndPoint = point2D2; }
//Außenverzahntes Stirnrad public void ErzeugeProfilAußen(Data dat) { //ERZEUGE SKIZZE //Geometrisches Set auswählen und umbennen HybridBodies catHybridBodies1 = hsp_catiaPart.Part.HybridBodies; HybridBody catHybridBody1; try { catHybridBody1 = catHybridBodies1.Item("Geometrisches Set.1"); } catch (Exception) { MessageBox.Show("Kein geometrisches Set gefunden! " + Environment.NewLine + "Ein PART manuell erzeugen und ein darauf achten, dass 'Geometisches Set' aktiviert ist.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Information); return; } catHybridBody1.set_Name("Profile"); Sketches catSketches1 = catHybridBody1.HybridSketches; OriginElements catOriginElements = hsp_catiaPart.Part.OriginElements; Reference catReference1 = (Reference)catOriginElements.PlaneYZ; hsp_catiaProfil = catSketches1.Add(catReference1); //Erstelle Achsensystem ErzeugeAchsensystem(); //Update hsp_catiaPart.Part.Update(); //KOORDINATEN ANLEGEN //Nullpunkt double x0 = 0; double y0 = 0; //Radien und Winkel double teilkreisradius = dat.getTeilkreisdurchmesser() / 2; double hilfskreisradius = teilkreisradius * 0.94; double fußkreisradius = teilkreisradius - (1.25 * dat.getModul()); double kopfkreisradius = teilkreisradius + dat.getModul(); double verrundungsradius = 0.35 * dat.getModul(); double alpha = 20; double beta = 90 / dat.getZähnezahl(); double betarad = Math.PI * beta / 180; double gamma = 90 - (alpha - beta); double gammarad = Math.PI * gamma / 180; double totalangle = 360.0 / dat.getZähnezahl(); double totalanglerad = Math.PI * totalangle / 180; //Schnittpunkte und Koordinaten //Evolventenkreis Center Koordinaten double mittelpunktEvol_x = hilfskreisradius * Math.Cos(gammarad); double mittelpunktEvol_y = hilfskreisradius * Math.Sin(gammarad); //Schnittpkt. der Evolvente und dem Teilkreisradius double punktEvol_x = -teilkreisradius *Math.Sin(betarad); double punktEvol_y = teilkreisradius * Math.Cos(betarad); //Evolvente Radius double EvolventenkreisRadius = Math.Sqrt(Math.Pow((mittelpunktEvol_x - punktEvol_x), 2) + Math.Pow((mittelpunktEvol_y - punktEvol_y), 2)); //Schnittpunkt Kopfkreis und Evolventenkreis double evolventenKopfk_x = Schnittpunkt_X(x0, y0, kopfkreisradius, mittelpunktEvol_x, mittelpunktEvol_y, EvolventenkreisRadius); double evolventenKopfk_y = Schnittpunkt_Y(x0, y0, kopfkreisradius, mittelpunktEvol_x, mittelpunktEvol_y, EvolventenkreisRadius); //Center Verrundung double mittelpunktVer_x = Schnittpunkt_X(x0, y0, fußkreisradius + verrundungsradius, mittelpunktEvol_x, mittelpunktEvol_y, EvolventenkreisRadius + verrundungsradius); double mittelpunktVer_y = Schnittpunkt_Y(x0, y0, fußkreisradius + verrundungsradius, mittelpunktEvol_x, mittelpunktEvol_y, EvolventenkreisRadius + verrundungsradius); //Schnittpunkt Verrundung Evolventenkreis double evolventenVer_x = Schnittpunkt_X(mittelpunktEvol_x, mittelpunktEvol_y, EvolventenkreisRadius, mittelpunktVer_x, mittelpunktVer_y, verrundungsradius); double evolventenVer_y = Schnittpunkt_Y(mittelpunktEvol_x, mittelpunktEvol_y, EvolventenkreisRadius, mittelpunktVer_x, mittelpunktVer_y, verrundungsradius); //Schnittpunkt Verrundung Fußkreis double fußkreisVer_x = Schnittpunkt_X(x0, y0, fußkreisradius, mittelpunktVer_x, mittelpunktVer_y, verrundungsradius); double fußkreisVer_y = Schnittpunkt_Y(x0, y0, fußkreisradius, mittelpunktVer_x, mittelpunktVer_y, verrundungsradius); //Anfangspunkt Fußkreis double hilfswinkel = totalanglerad - Math.Atan(Math.Abs(fußkreisVer_x) / Math.Abs(fußkreisVer_y)); double anfangspunktFußk_x = -fußkreisradius *Math.Sin(hilfswinkel); double anfangspunktFußk_y = fußkreisradius * Math.Cos(hilfswinkel); //Skizze umbenennen und öffnen hsp_catiaProfil.set_Name("Außenverzahntes Stirnrad"); Factory2D catfactory2D1 = hsp_catiaProfil.OpenEdition(); //Punkte in Skizze einzeichnen Point2D point_Ursprung = catfactory2D1.CreatePoint(x0, y0); Point2D pointAnfangFußkreis = catfactory2D1.CreatePoint(anfangspunktFußk_x, anfangspunktFußk_y); Point2D pointFußkreisVer_l = catfactory2D1.CreatePoint(fußkreisVer_x, fußkreisVer_y); Point2D pointFußkreisVer_r = catfactory2D1.CreatePoint(-fußkreisVer_x, fußkreisVer_y); Point2D pointMittelpunktVer_l = catfactory2D1.CreatePoint(mittelpunktVer_x, mittelpunktVer_y); Point2D pointMittelpunktVer_r = catfactory2D1.CreatePoint(-mittelpunktVer_x, mittelpunktVer_y); Point2D pointVerrundungEvol_l = catfactory2D1.CreatePoint(evolventenVer_x, evolventenVer_y); Point2D pointVerrundungEvol_r = catfactory2D1.CreatePoint(-evolventenVer_x, evolventenVer_y); Point2D pointMittelpunktevol_l = catfactory2D1.CreatePoint(mittelpunktEvol_x, mittelpunktEvol_y); Point2D pointMittelpunktevol_r = catfactory2D1.CreatePoint(-mittelpunktEvol_x, mittelpunktEvol_y); Point2D pointEvolventenKopfkreis_l = catfactory2D1.CreatePoint(evolventenKopfk_x, evolventenKopfk_y); Point2D pointEvolventenKopfkreis_r = catfactory2D1.CreatePoint(-evolventenKopfk_x, evolventenKopfk_y); //Kreise in Skizze einzeichnen Circle2D kreisFußkreis = catfactory2D1.CreateCircle(x0, y0, fußkreisradius, 0, Math.PI * 2); kreisFußkreis.CenterPoint = point_Ursprung; kreisFußkreis.StartPoint = pointFußkreisVer_l; kreisFußkreis.EndPoint = pointAnfangFußkreis; Circle2D kreisVerrundung_l = catfactory2D1.CreateCircle(mittelpunktVer_x, mittelpunktVer_y, verrundungsradius, 0, Math.PI * 2); kreisVerrundung_l.CenterPoint = pointMittelpunktVer_l; kreisVerrundung_l.StartPoint = pointFußkreisVer_l; kreisVerrundung_l.EndPoint = pointVerrundungEvol_l; Circle2D kreisEvolventenkreis_l = catfactory2D1.CreateCircle(mittelpunktEvol_x, mittelpunktEvol_y, EvolventenkreisRadius, 0, Math.PI * 2); kreisEvolventenkreis_l.CenterPoint = pointMittelpunktevol_l; kreisEvolventenkreis_l.StartPoint = pointEvolventenKopfkreis_l; kreisEvolventenkreis_l.EndPoint = pointVerrundungEvol_l; Circle2D kreisKopfkreis = catfactory2D1.CreateCircle(x0, y0, kopfkreisradius, 0, Math.PI * 2); kreisKopfkreis.CenterPoint = point_Ursprung; kreisKopfkreis.StartPoint = pointEvolventenKopfkreis_r; kreisKopfkreis.EndPoint = pointEvolventenKopfkreis_l; Circle2D kreisEvolventenkreis_r = catfactory2D1.CreateCircle(-mittelpunktEvol_x, mittelpunktEvol_y, EvolventenkreisRadius, 0, Math.PI * 2); kreisEvolventenkreis_r.CenterPoint = pointMittelpunktevol_r; kreisEvolventenkreis_r.StartPoint = pointVerrundungEvol_r; kreisEvolventenkreis_r.EndPoint = pointEvolventenKopfkreis_r; Circle2D kreisVerrundung_r = catfactory2D1.CreateCircle(-mittelpunktVer_x, mittelpunktVer_y, verrundungsradius, 0, Math.PI * 2); kreisVerrundung_r.CenterPoint = pointMittelpunktVer_r; kreisVerrundung_r.StartPoint = pointVerrundungEvol_r; kreisVerrundung_r.EndPoint = pointFußkreisVer_r; //Skizze schließen hsp_catiaProfil.CloseEdition(); //Update hsp_catiaPart.Part.Update(); //ERSTELLE KREISMUSTER ShapeFactory shapeFactory1 = (ShapeFactory)hsp_catiaPart.Part.ShapeFactory; HybridShapeFactory hybridShapeFactory1 = (HybridShapeFactory)hsp_catiaPart.Part.HybridShapeFactory; Factory2D factory2D1 = hsp_catiaProfil.Factory2D; HybridShapePointCoord ursprung = hybridShapeFactory1.AddNewPointCoord(0, 0, 0); Reference refUrsprung = hsp_catiaPart.Part.CreateReferenceFromObject(ursprung); HybridShapeDirection xRichtung = hybridShapeFactory1.AddNewDirectionByCoord(1, 0, 0); Reference refxRichtung = hsp_catiaPart.Part.CreateReferenceFromObject(xRichtung); CircPattern kreismuster = shapeFactory1.AddNewSurfacicCircPattern(factory2D1, 1, 2, 0, 0, 1, 1, refUrsprung, refxRichtung, false, 0, true, false); kreismuster.CircularPatternParameters = CatCircularPatternParameters.catInstancesandAngularSpacing; AngularRepartition angularRepartition1 = kreismuster.AngularRepartition; Angle angle1 = angularRepartition1.AngularSpacing; angle1.Value = Convert.ToDouble(360 / dat.getZähnezahl()); AngularRepartition angularRepartition2 = kreismuster.AngularRepartition; IntParam intParam1 = angularRepartition2.InstancesCount; intParam1.Value = Convert.ToInt32(dat.getZähnezahl()) + 1; //Kreismusterenden verbinden Reference refKreismuster = hsp_catiaPart.Part.CreateReferenceFromObject(kreismuster); HybridShapeAssemble verbindung = hybridShapeFactory1.AddNewJoin(refKreismuster, refKreismuster); Reference refVerbindung = hsp_catiaPart.Part.CreateReferenceFromObject(verbindung); hybridShapeFactory1.GSMVisibility(refVerbindung, 0); hsp_catiaPart.Part.MainBody.InsertHybridShape(verbindung); //Update hsp_catiaPart.Part.Update(); //ERSTELLE BLOCK ErzeugeBlock(refVerbindung, shapeFactory1, dat); if (dat.Bohrungsauswahl == 1) { //Skizze Sketches sketchesBohrung = catHybridBody1.HybridSketches; OriginElements catoriginelements = hsp_catiaPart.Part.OriginElements; Reference refmxPlaneX = (Reference)catoriginelements.PlaneYZ; hsp_catiaProfil = catSketches1.Add(refmxPlaneX); //Achsensystem ErzeugeAchsensystem(); //Update hsp_catiaPart.Part.Update(); //Skizze Umbennen hsp_catiaProfil.set_Name("Bohrung"); //Öffnen Factory2D catfactory2D2 = hsp_catiaProfil.OpenEdition(); //Kreis Circle2D KreisFürBohrungsskizze = catfactory2D2.CreateClosedCircle(x0, y0, dat.getBohrung()); //Schließen hsp_catiaProfil.CloseEdition(); //Update hsp_catiaPart.Part.Update(); //Tasche hsp_catiaPart.Part.InWorkObject = hsp_catiaPart.Part.MainBody; Pocket Tasche = shapeFactory1.AddNewPocket(hsp_catiaProfil, dat.getBreite()); hsp_catiaPart.Part.Update(); } if (dat.Bohrungsauswahl == 2) { //Schnittpunkte und Koordinaten //LH Schnittpunkt Passfederhöhe mit Bohrung double x_AnfangkreisZuPassfeder = -dat.getPassfederbreite() / 2; double y_AnfangkreisZuPassfeder = Math.Sqrt(Math.Pow(dat.getBohrung(), 2) - Math.Pow((dat.getPassfederbreite() / 2), 2)); //LH Schnittpunkt Breite und Höhe double x_Passfederecke = -dat.getPassfederbreite() / 2; double y_Passfederecke = dat.getPassfederhöhe(); //Skizze Sketches sketchesBohrung = catHybridBody1.HybridSketches; OriginElements catoriginelements = hsp_catiaPart.Part.OriginElements; Reference refmxPlaneX = (Reference)catoriginelements.PlaneYZ; hsp_catiaProfil = catSketches1.Add(refmxPlaneX); //Achsensystem ErzeugeAchsensystem(); //Update hsp_catiaPart.Part.Update(); //Umbennen und öffnen hsp_catiaProfil.set_Name("Bohrung mit Passfedernut"); Factory2D catfactory2D2 = hsp_catiaProfil.OpenEdition(); //Punkte in Skizze einzeichnen Point2D POINTLinksAnfangKreisZuPassfeder = catfactory2D2.CreatePoint(x_AnfangkreisZuPassfeder, y_AnfangkreisZuPassfeder); Point2D POINTLinksPassfederEcke = catfactory2D2.CreatePoint(x_Passfederecke, y_Passfederecke); Point2D POINTRechtsPassfederEcke = catfactory2D2.CreatePoint(-x_Passfederecke, y_Passfederecke); Point2D POINTRechtsAnfangKreisZuPassfeder = catfactory2D2.CreatePoint(-x_AnfangkreisZuPassfeder, y_AnfangkreisZuPassfeder); //Linien einzeichnen Line2D PassfederKanteLinks = catfactory2D2.CreateLine(x_AnfangkreisZuPassfeder, y_AnfangkreisZuPassfeder, x_Passfederecke, y_Passfederecke); PassfederKanteLinks.StartPoint = POINTLinksAnfangKreisZuPassfeder; PassfederKanteLinks.EndPoint = POINTLinksPassfederEcke; Line2D PassfederHöhenkante = catfactory2D2.CreateLine(x_Passfederecke, y_Passfederecke, -x_Passfederecke, y_Passfederecke); PassfederHöhenkante.StartPoint = POINTLinksPassfederEcke; PassfederHöhenkante.EndPoint = POINTRechtsPassfederEcke; Line2D PassfederKanteRechts = catfactory2D2.CreateLine(-x_Passfederecke, y_Passfederecke, -x_AnfangkreisZuPassfeder, y_AnfangkreisZuPassfeder); PassfederKanteRechts.StartPoint = POINTRechtsPassfederEcke; PassfederKanteRechts.EndPoint = POINTRechtsAnfangKreisZuPassfeder; Circle2D KreisFürPassfeder = catfactory2D2.CreateCircle(x0, y0, dat.getBohrung(), 0, Math.PI * 2); KreisFürPassfeder.CenterPoint = point_Ursprung; KreisFürPassfeder.EndPoint = POINTRechtsAnfangKreisZuPassfeder; KreisFürPassfeder.StartPoint = POINTLinksAnfangKreisZuPassfeder; //Skizze schließen hsp_catiaProfil.CloseEdition(); //Update hsp_catiaPart.Part.Update(); //Tasche hsp_catiaPart.Part.InWorkObject = hsp_catiaPart.Part.MainBody; Pocket Tasche = shapeFactory1.AddNewPocket(hsp_catiaProfil, dat.getBreite()); hsp_catiaPart.Part.Update(); } }
private void ProfilKopf(object[] ParameterListe) { // Listen Werte wieder in richtige Datentypen umwandeln int Kopf = Convert.ToInt32(ParameterListe[0]); double Durchmesser = Convert.ToDouble(ParameterListe[1]); double Gewindelänge = Convert.ToDouble(ParameterListe[2]); double Schaftlänge = Convert.ToDouble(ParameterListe[3]); double Steigung = Convert.ToDouble(ParameterListe[4]); int Gewindeart = Convert.ToInt32(ParameterListe[5]); double Schlüsselweite = Convert.ToDouble(ParameterListe[6]); double Kopfhöhe = Convert.ToDouble(ParameterListe[7]); double Kopfdurchmesser = Convert.ToDouble(ParameterListe[8]); string Schraubenrichtung = Convert.ToString(ParameterListe[9]); // Skizze umbenennen hsp_catiaProfil.set_Name("Kopf"); hsp_catiaProfil_Senkkopf.set_Name("Senkkopf"); //Sechskantkopf if (Kopf == 1) { // Skizze oeffnen Factory2D catFactory2D1 = hsp_catiaProfil.OpenEdition(); //Eckkoordinaten berechnen double Grad = 30; double Halbkreis = 180; double Winkel = Grad / Halbkreis * Math.PI; double swr = Schlüsselweite / 2; double x = Math.Tan(Winkel) * swr; double h = Schlüsselweite / (2 * Math.Cos(Winkel)); //Punkte zeichnen Point2D catPoint2D1 = catFactory2D1.CreatePoint(-x, swr); Point2D catPoint2D2 = catFactory2D1.CreatePoint(x, swr); Point2D catPoint2D3 = catFactory2D1.CreatePoint(h, 0); Point2D catPoint2D4 = catFactory2D1.CreatePoint(x, -swr); Point2D catPoint2D5 = catFactory2D1.CreatePoint(-x, -swr); Point2D catPoint2D6 = catFactory2D1.CreatePoint(-h, 0); //Linien zeichnen Line2D catLine2D1 = catFactory2D1.CreateLine(-x, swr, x, swr); catLine2D1.StartPoint = catPoint2D1; catLine2D1.EndPoint = catPoint2D2; Line2D catLine2D2 = catFactory2D1.CreateLine(x, swr, h, 0); catLine2D2.StartPoint = catPoint2D2; catLine2D2.EndPoint = catPoint2D3; Line2D catLine2D3 = catFactory2D1.CreateLine(h, 0, x, -swr); catLine2D3.StartPoint = catPoint2D3; catLine2D3.EndPoint = catPoint2D4; Line2D catLine2D4 = catFactory2D1.CreateLine(x, -swr, -x, -swr); catLine2D4.StartPoint = catPoint2D4; catLine2D4.EndPoint = catPoint2D5; Line2D catLine2D5 = catFactory2D1.CreateLine(-x, -swr, -h, 0); catLine2D5.StartPoint = catPoint2D5; catLine2D5.EndPoint = catPoint2D6; Line2D catLine2D6 = catFactory2D1.CreateLine(-h, 0, -x, swr); catLine2D6.StartPoint = catPoint2D6; catLine2D6.EndPoint = catPoint2D1; // Skizzierer verlassen hsp_catiaProfil.CloseEdition(); } //Zylinderkopf if (Kopf == 2) { // Skizze oeffnen Factory2D catFactory2D1 = hsp_catiaProfil.OpenEdition(); Circle2D circle2DZylinderKopf = catFactory2D1.CreateClosedCircle(0, 0, Kopfdurchmesser / 2); // Skizzierer verlassen hsp_catiaProfil.CloseEdition(); } //Senkkopf if (Kopf == 3) { // Skizze oeffnen Factory2D catFactory2D1 = hsp_catiaProfil_Senkkopf.OpenEdition(); //Punkte zeichnen Point2D catPoint2D1 = catFactory2D1.CreatePoint(0, 0); Point2D catPoint2D2 = catFactory2D1.CreatePoint(0, Kopfhöhe); Point2D catPoint2D3 = catFactory2D1.CreatePoint(Durchmesser / 2, Kopfhöhe); Point2D catPoint2D4 = catFactory2D1.CreatePoint(Kopfdurchmesser / 2, 0); //Linien zeichnen Line2D catLine2D1 = catFactory2D1.CreateLine(0, 0, 0, Kopfhöhe); catLine2D1.StartPoint = catPoint2D1; catLine2D1.EndPoint = catPoint2D2; Line2D catLine2D2 = catFactory2D1.CreateLine(0, Kopfhöhe, Durchmesser / 2, Kopfhöhe); catLine2D2.StartPoint = catPoint2D2; catLine2D2.EndPoint = catPoint2D3; Line2D catLine2D3 = catFactory2D1.CreateLine(Durchmesser / 2, Kopfhöhe, Kopfdurchmesser / 2, 0); catLine2D3.StartPoint = catPoint2D3; catLine2D3.EndPoint = catPoint2D4; Line2D catLine2D4 = catFactory2D1.CreateLine(Kopfdurchmesser / 2, 0, 0, 0); catLine2D4.StartPoint = catPoint2D4; catLine2D4.EndPoint = catPoint2D1; // Skizzierer verlassen hsp_catiaProfil.CloseEdition(); } // Part aktualisieren hsp_catiaPart.Part.Update(); }