private void button1_Click(object sender, EventArgs e) { //List<Pnt> pList = new List<Pnt>(); List <HybridShapeTypeLib.Point> pList = new List <HybridShapeTypeLib.Point>(); //prtDoc = (PartDocument)catia.Documents.Item(1); prtDoc = (PartDocument)catia.Documents.Add("Part"); Part prt = prtDoc.Part; HybridBodies hbdys = prt.HybridBodies; HybridBody hbdy = hbdys.Add(); hbdy.set_Name("saori"); HybridShapeFactory hsFac = (HybridShapeFactory)prt.HybridShapeFactory; //string Line = textBox1.Text; string lin = ""; if (textBox1.Text == "") { MessageBox.Show("좌표를 입력해주새요"); return; } for (int i = 0; i < textBox1.Lines.Length; i++) { lin = textBox1.Lines[i]; string[] token = lin.Split(','); int x = int.Parse(token[0]); int y = int.Parse(token[1]); int z = int.Parse(token[2]); // pList.Add(new Pnt(x, y, z)); pList.Add(hsFac.AddNewPointCoord(x, y, z)); HybridShapeTypeLib.Point p = hsFac.AddNewPointCoord(x, y, z); //create a point hbdy.AppendHybridShape(p); } //create points and spline HybridShapeSpline splin = hsFac.AddNewSpline(); foreach (HybridShapeTypeLib.Point p in pList) { INFITF.Reference r = prt.CreateReferenceFromGeometry(p); // hsFac.AddNewPointDatum(r); //hbdy.AppendHybridShape(p); splin.AddPoint(r); } hbdy.AppendHybridShape(splin); prt.Update(); }
// create lines private void button1_Click(object sender, EventArgs e) { try { prtDoc = (PartDocument)catia.ActiveDocument; Part prt = prtDoc.Part; hbdy = prt.HybridBodies.Item(1); HybridShapeFactory hfac = (HybridShapeFactory)prt.HybridShapeFactory; //SelGS = (HybridBody)Sel.Item(1).Value; //INFITF.AnyObject aaa = Pts[0]; for (int i = 0; i <= (Pts.Count - 1); i++) { for (int j = i + 1; j < Pts.Count; j++) { HybridShapeTypeLib.Point pt1 = (HybridShapeTypeLib.Point)Pts.ElementAt(i); HybridShapeTypeLib.Point pt2 = (HybridShapeTypeLib.Point)Pts.ElementAt(j); INFITF.Reference ref1 = prt.CreateReferenceFromGeometry(pt1); INFITF.Reference ref2 = prt.CreateReferenceFromGeometry(pt2); HybridShapeTypeLib.Line lin = hfac.AddNewLinePtPt(ref1, ref2); hbdy.AppendHybridShape(lin); } } prt.Update(); } catch (Exception) { MessageBox.Show("선택된 정보가 없습니다."); return; } }
static void Main(string[] args) { /* * StreamReader sr = new StreamReader("point.txt"); * String line = ""; * List<Pt> ptlist = new List<Pt>(); * * while ((line = sr.ReadLine()) != null) * { * string[] token = line.Split(','); * int x = int.Parse(token[0]); * int y = int.Parse(token[1]); * int z = int.Parse(token[2]); * ptlist.Add(new Pt(x,y,z)); * } */ 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; HybridBodies hbdys = prt.HybridBodies; HybridBody hbdy = hbdys.Add(); HybridShapeFactory hsFac = (HybridShapeFactory)prt.HybridShapeFactory; try { StreamReader sr = new StreamReader("C:/Users/517-11/Desktop/saori/Automation/Catia-v5-Automation/RecapEx/point.txt"); String line = ""; //List<Pt> ptlist = new List<Pt>(); while ((line = sr.ReadLine()) != null) { string[] token = line.Split(','); int x = int.Parse(token[0]); int y = int.Parse(token[1]); int z = int.Parse(token[2]); // ptlist.Add(new Pt(x, y, z)); Point p = hsFac.AddNewPointCoord(x, y, z); hbdy.AppendHybridShape(p); } //Point p1 = hsFac.AddNewPointCoord(10, 60, 30); sr.Close(); prt.Update(); } catch (Exception e) { Console.WriteLine("파일io오류:" + e.Message); } }
//create3Dline-------------------------------------------- private void button5_Click(object sender, EventArgs e) { // object[] HpCrd1 = new object[3]; // object[] HpCrd2 = new object[3]; try { sel = catia.ActiveDocument.Selection; HyShpPtCoord1 = (HybridShapeTypeLib.Point)sel.FindObject("CATIAHybridShapePoint"); //sel = catia.ActiveDocument.Selection; HyShpPtCoord2 = (HybridShapeTypeLib.Point)sel.FindObject("CATIAHybridShapePoint"); //HyShpPtCoord1.GetCoordinates(HpCrd1); //HyShpPtCoord1.GetCoordinates(HpCrd2); PartDocument prtDoc = (PartDocument)catia.ActiveDocument; Part prt = prtDoc.Part; HybridBody hbdy = prt.HybridBodies.Item(1); HybridShapeFactory hfac = (HybridShapeFactory)prt.HybridShapeFactory; INFITF.Reference ref1 = prt.CreateReferenceFromGeometry(HyShpPtCoord1); INFITF.Reference ref2 = prt.CreateReferenceFromGeometry(HyShpPtCoord2); HybridShapeTypeLib.Line lin = hfac.AddNewLinePtPt(ref1, ref2); hbdy.AppendHybridShape(lin); prt.Update(); } catch (Exception) { MessageBox.Show("선택된 정보가 없습니다."); return; } }
private void BollToPoint_Click(object sender, EventArgs e) { this.WindowState = FormWindowState.Minimized; ReadType = 2; Selection SelectArc = null; CATIA_Class.GetSelect(CatDocument, ref SelectArc, this); if (SelectArc == null || SelectArc.Count2 == 0) { return; } int ERR = 0; object[] PointCoord = new object[] { -99, -99, -99 }; for (int i = 1; i <= SelectArc.Count2; i++) { HybridShapeFactory PartHyb = (HybridShapeFactory)PartID.HybridShapeFactory; SPAWorkbench TheSPAWorkbench = (SPAWorkbench)CatDocument.GetWorkbench("SPAWorkbench"); Reference referenceObject = SelectArc.Item(i).Reference; Measurable TheMeasurable = TheSPAWorkbench.GetMeasurable(referenceObject); TheMeasurable.GetPoint(PointCoord); //读取选择的曲面坐标 var TName = referenceObject.get_Name(); //读取选择的曲面名称 HybridShapePointCoord NewPoint = PartHyb.AddNewPointCoord(Convert.ToDouble(PointCoord[0]), Convert.ToDouble(PointCoord[1]), Convert.ToDouble(PointCoord[2])); if (KeepName.Checked) { NewPoint.set_Name(TName); } else { NewPoint.set_Name("Rx_" + i); } HybridBodies Hybs = PartID.HybridBodies; HybridBody Hyb = null; try { Hyb = Hybs.Item("几何图形集.1"); } catch (Exception) { Hyb = Hybs.Item("Geometrical Set.1"); } Hyb.AppendHybridShape(NewPoint); PartID.InWorkObject = NewPoint; try { PartID.Update(); } catch (Exception) { ERR += 1; } } if (ERR > 0) { MessageBox.Show("共计:" + ERR + "个点创建新参考点失败!"); } }
/// <summary> /// 提取边到新Part /// </summary> /// <param name="Spart">新Part</param> /// <param name="UserSelected">用户选择的参考边</param> /// <returns>创建的新边</returns> public HybridShapeExtract NwExtraEdge(Part Spart, Reference UserSelected) { HybridShapeFactory PartShape = (HybridShapeFactory)Spart.ShapeFactory; HybridShapeExtract extractWeightEdge = PartShape.AddNewExtract(UserSelected); extractWeightEdge.PropagationType = 3; extractWeightEdge.ComplementaryExtract = false; //补充模式 extractWeightEdge.IsFederated = false; HybridBodies PartHybodies = Spart.HybridBodies; HybridBody PartHyBody = PartHybodies.Item(1); PartHyBody.AppendHybridShape(extractWeightEdge); Spart.InWorkObject = extractWeightEdge; Spart.Update(); return(extractWeightEdge); }
//create a line private void button3_Click(object sender, EventArgs e) { try { prtDoc = (PartDocument)catia.ActiveDocument; HybridBody hbdy = (HybridBody)ptStrt.Parent; HybridShapeFactory hfac = (HybridShapeFactory)prtDoc.Part.HybridShapeFactory; Line lin = hfac.AddNewLinePtPt(ptStrt, ptEnd); hbdy.AppendHybridShape(lin); prtDoc.Part.Update(); } catch (Exception) { MessageBox.Show("error"); return; } }
private void buttonCreatePoint_Click(object sender, EventArgs e) { Document doc = CATIA.ActiveDocument; PartDocument partDoc = (PartDocument)doc; Part part = partDoc.Part; HybridShapeFactory factory = (HybridShapeFactory)part.HybridShapeFactory; HybridBodies hybridBodiesCur = part.HybridBodies; HybridBody hybridBodyCur = hybridBodiesCur.Item("Geometrical Set.1"); for (int i = 1; i <= 100000; i++) { HybridShapePointCoord pointCur = factory.AddNewPointCoord(100, 200, 300); hybridBodyCur.AppendHybridShape(pointCur); Reference refPoint = part.CreateReferenceFromObject(pointCur); string sSuffix = i.ToString(); string sName = textBoxSelect.Text + sSuffix; factory.ChangeFeatureName(refPoint, sName); part.Update(); } }
static void Main(string[] args) { 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; HybridBodies hybdys = prt.HybridBodies; HybridBody hybdy = hybdys.Add(); HybridShapes hyshps = hybdy.HybridShapes; HybridShapeFactory hyshfac = (HybridShapeFactory)prt.HybridShapeFactory; Point p1 = hyshfac.AddNewPointCoord(10, 60, 30); Point p2 = hyshfac.AddNewPointCoord(70, 75, 35); Point p3 = hyshfac.AddNewPointCoord(100, 80, 30); Point p4 = hyshfac.AddNewPointCoord(100, 80, 40); Point p5 = hyshfac.AddNewPointCoord(95, 20, 45); Point p6 = hyshfac.AddNewPointCoord(100, 10, 50); INFITF.Reference r1 = prt.CreateReferenceFromGeometry(p1); INFITF.Reference r2 = prt.CreateReferenceFromGeometry(p2); INFITF.Reference r3 = prt.CreateReferenceFromGeometry(p3); INFITF.Reference r4 = prt.CreateReferenceFromGeometry(p4); INFITF.Reference r5 = prt.CreateReferenceFromGeometry(p5); INFITF.Reference r6 = prt.CreateReferenceFromGeometry(p6); HybridShapeSpline hyspl1 = hyshfac.AddNewSpline(); HybridShapeSpline hyspl2 = hyshfac.AddNewSpline(); hyspl1.AddPoint(r1); hyspl1.AddPoint(r2); hyspl1.AddPoint(r3); hyspl2.AddPoint(r4); hyspl2.AddPoint(r5); hyspl2.AddPoint(r6); hybdy.AppendHybridShape(hyspl1); hybdy.AppendHybridShape(hyspl2); //AppendHybridShape 만들고 바로 해야 된다 INFITF.Reference rspl1 = prt.CreateReferenceFromGeometry(hyspl1); INFITF.Reference rspl2 = prt.CreateReferenceFromGeometry(hyspl2); HybridShapeSweepExplicit swp = hyshfac.AddNewSweepExplicit(rspl1, rspl2); hybdy.AppendHybridShape(swp); Point p = hyshfac.AddNewPointCoord(50, 30, 100); hybdy.AppendHybridShape(p); HybridShapeProject hsprjct = hyshfac.AddNewProject((INFITF.Reference)p, (INFITF.Reference)swp); prt.Update(); }
private void Creat3dPoint_Click(object sender, EventArgs e)//Creat3dBall_Click { DataGrid.AllowUserToAddRows = false; Creat3dPoint.BackColor = SystemColors.ActiveCaption; ReadType = 2; if (PartID == null) { MessageBox.Show("仿真环境未初始化!请先用工具栏初始化命令初始化运行环境!"); return; } int ERR = 0; if (DataGrid.RowCount < 1) { MessageBox.Show("数据为空,无法建立3D模型!"); return; } HybridBodies Hybs = PartID.HybridBodies; //HybridBody Hyb = Hybs.Item(1); HybridBody Hyb = Hybs.Add(); for (int i = 0; i < DataGrid.RowCount; i++) { HybridShapeFactory PartHyb = (HybridShapeFactory)PartID.HybridShapeFactory; //SPAWorkbench TheSPAWorkbench = (SPAWorkbench)CatDocument.GetWorkbench("SPAWorkbench"); //Reference referenceObject = SelectArc.Item(i).Reference; //Measurable TheMeasurable = TheSPAWorkbench.GetMeasurable(referenceObject); //TheMeasurable.GetPoint(PointCoord); //读取选择的曲面坐标 string TName; try { TName = DataGrid.Rows[i].Cells[1].Value.ToString(); //读取选择的曲面名称 } catch (Exception) { continue; } HybridShapePointCoord NewPoint = PartHyb.AddNewPointCoord(Convert.ToDouble(DataGrid.Rows[i].Cells[2].Value.ToString()), Convert.ToDouble(DataGrid.Rows[i].Cells[3].Value.ToString()), Convert.ToDouble(DataGrid.Rows[i].Cells[4].Value.ToString())); if (KeepName.Checked) { NewPoint.set_Name(TName); } else { NewPoint.set_Name("Rx_" + (i + 1)); } Hyb.AppendHybridShape(NewPoint); PartID.InWorkObject = NewPoint; try { PartID.Update(); } catch (Exception) { ERR += 1; } } if (ERR > 0) { MessageBox.Show("共计:" + ERR + "个点创建新参考点失败!"); } Creat3dPoint.BackColor = Color.Green; ShowCenter(); }
//子线程中 private void Creat3dBall_Click(object sender, EventArgs e)//Creat3dPoint_Click { progressBar.Value = 0; DataGrid.AllowUserToAddRows = false; if (PartID == null) { MessageBox.Show("仿真环境未初始化!请先用工具栏初始化命令初始化运行环境!"); return; } Creat3dBall.BackColor = SystemColors.ActiveCaption; ReadType = 2; int ERR = 0; if (DataGrid.RowCount < 1) { MessageBox.Show("数据为空,无法建立3D模型!"); return; } HybridBodies Hybs = PartID.HybridBodies; HybridBody Hyb = null; //try //{ // Hyb = Hybs.Item("几何图形集.1"); //} //catch (Exception) //{ // Hyb = Hybs.Item("Geometrical Set.1"); //} progressBar.Maximum = DataGrid.RowCount; progressBar.Step = 1; Hyb = Hybs.Add(); for (int i = 0; i < DataGrid.RowCount; i++) { progressBar.PerformStep(); HybridShapeFactory PartHyb = (HybridShapeFactory)PartID.HybridShapeFactory; //SPAWorkbench TheSPAWorkbench = (SPAWorkbench)CatDocument.GetWorkbench("SPAWorkbench"); //Reference referenceObject = SelectArc.Item(i).Reference; //Measurable TheMeasurable = TheSPAWorkbench.GetMeasurable(referenceObject); //TheMeasurable.GetPoint(PointCoord); //读取选择的曲面坐标 string TName; try { TName = DataGrid.Rows[i].Cells[1].Value.ToString(); //读取选择的曲面名称 } catch (Exception) { continue; } HybridShapePointCoord NewPoint = PartHyb.AddNewPointCoord(Convert.ToDouble(DataGrid.Rows[i].Cells[2].Value.ToString()), Convert.ToDouble(DataGrid.Rows[i].Cells[3].Value.ToString()), Convert.ToDouble(DataGrid.Rows[i].Cells[4].Value.ToString())); Reference ShapeRef = PartID.CreateReferenceFromObject(NewPoint); HybridShapeSphere NewShape = PartHyb.AddNewSphere(ShapeRef, null, Convert.ToDouble(BallRadio.Text), -45.000000, 45.000000, 0.000000, 180.000000); NewShape.Limitation = 1; if (KeepName.Checked) { NewPoint.set_Name(TName); NewShape.set_Name(TName); } else { NewPoint.set_Name("Rx_" + (i + 1)); NewShape.set_Name("Rx_" + (i + 1)); } // Hyb.AppendHybridShape(NewPoint); Hyb.AppendHybridShape(NewShape); // PartID.InWorkObject = NewPoint; PartID.InWorkObject = NewShape; try { PartID.Update(); } catch (Exception) { ERR += 1; } Selection SetColor = CatDocument.Selection; VisPropertySet VSet = SetColor.VisProperties; SetColor.Add(NewShape); VSet.SetRealColor(128, 255, 0, 0); SetColor.Clear(); } if (ERR > 0) { MessageBox.Show("共计:" + ERR + "个点创建新参考点失败!"); } Creat3dBall.BackColor = Color.Green; ShowCenter(); progressBar.Value = DataGrid.RowCount; }
public void Senkkopf(MetrischeGewindegroesse m) { #region SKizze bauen // neue Skizze im ausgewaehlten geometrischen Set anlegen Sketches catSketches1 = catHybridBody1.HybridSketches; OriginElements catOriginElements = hsp_catiaPart.Part.OriginElements; Reference catReference1 = (Reference)catOriginElements.PlaneZX; hsp_catiaProfil = catSketches1.Add(catReference1); // Achsensystem in Skizze erstellen ErzeugeAchsensystem(); hsp_catiaProfil.set_Name("Senkkopf"); // Skizzierer verlassen hsp_catiaProfil.CloseEdition(); // Part aktualisieren hsp_catiaPart.Part.Update(); Factory2D catFactory2D1 = hsp_catiaProfil.OpenEdition(); #endregion #region Profil double tan45 = 1; double tan30 = Math.Sqrt(3) / 3; double winkel; if (m.bezeichnung <= 20) { winkel = tan45; } else { winkel = tan30; } double HoeheP4 = ((m.innenskkopfdurchmesser / 2) - (m.bezeichnung / 2)) / winkel; // erst die Punkte Point2D catPoint2D1 = catFactory2D1.CreatePoint(0, 0); Point2D catPoint2D2 = catFactory2D1.CreatePoint(m.innenskkopfhöhe, 0); Point2D catPoint2D3 = catFactory2D1.CreatePoint(m.innenskkopfhöhe, m.innenskkopfdurchmesser / 2); Point2D catPoint2D4 = catFactory2D1.CreatePoint(HoeheP4, m.innenskkopfdurchmesser / 2); Point2D catPoint2D5 = catFactory2D1.CreatePoint(0, m.bezeichnung / 2); // dann das Profil Line2D catLine2D1 = catFactory2D1.CreateLine(0, 0, m.innenskkopfhöhe, 0); catLine2D1.StartPoint = catPoint2D1; catLine2D1.EndPoint = catPoint2D2; Line2D catLine2D2 = catFactory2D1.CreateLine(m.innenskkopfhöhe, 0, m.innenskkopfhöhe, m.innenskkopfdurchmesser / 2); catLine2D2.StartPoint = catPoint2D2; catLine2D2.EndPoint = catPoint2D3; Line2D catLine2D3 = catFactory2D1.CreateLine(m.innenskkopfhöhe, m.innenskkopfdurchmesser / 2, HoeheP4, m.innenskkopfdurchmesser / 2); catLine2D3.StartPoint = catPoint2D3; catLine2D3.EndPoint = catPoint2D4; Line2D catLine2D4 = catFactory2D1.CreateLine(HoeheP4, m.innenskkopfdurchmesser / 2, 0, m.bezeichnung / 2); catLine2D4.StartPoint = catPoint2D4; catLine2D4.EndPoint = catPoint2D5; Line2D catLine2D5 = catFactory2D1.CreateLine(0, m.bezeichnung / 2, 0, 0); catLine2D5.StartPoint = catPoint2D5; catLine2D5.EndPoint = catPoint2D1; Point2D AxisPoint1 = catFactory2D1.CreatePoint(0, 0); Point2D AxisPoint2 = catFactory2D1.CreatePoint(m.innenskkopfhöhe, 0); Line2D AxisLine1 = catFactory2D1.CreateLine(0, 0, m.innenskkopfhöhe, 0); AxisLine1.StartPoint = AxisPoint1; AxisLine1.EndPoint = AxisPoint2; Reference Axisreference1 = hsp_catiaPart.Part.CreateReferenceFromObject(AxisPoint1); GeometricElements geometricElements1 = hsp_catiaProfil.GeometricElements; Axis2D catAxis2D1 = (Axis2D)geometricElements1.Item("Absolute Achse"); Line2D AxisLine2 = (Line2D)catAxis2D1.GetItem("H-Richtung"); Reference Axisreference2 = hsp_catiaPart.Part.CreateReferenceFromObject(AxisLine2); Constraints constraints1 = hsp_catiaProfil.Constraints; Constraint constraint1 = constraints1.AddBiEltCst(CatConstraintType.catCstTypeOn, Axisreference1, Axisreference2); constraint1.Mode = CatConstraintMode.catCstModeDrivingDimension; Reference Axisreference3 = hsp_catiaPart.Part.CreateReferenceFromObject(AxisLine1); Reference Axisreference4 = hsp_catiaPart.Part.CreateReferenceFromObject(AxisLine2); Constraint constraint2 = constraints1.AddBiEltCst(CatConstraintType.catCstTypeVerticality, Axisreference3, Axisreference4); constraint2.Mode = CatConstraintMode.catCstModeDrivingDimension; hsp_catiaProfil.CenterLine = AxisLine1; // Skizzierer verlassen hsp_catiaProfil.CloseEdition(); // Part aktualisieren hsp_catiaPart.Part.Update(); #endregion #region Shaft hsp_catiaPart.Part.InWorkObject = hsp_catiaPart.Part.MainBody; ShapeFactory catShapeFactory1 = (ShapeFactory)hsp_catiaPart.Part.ShapeFactory; Reference reference1 = hsp_catiaPart.Part.CreateReferenceFromObject(hsp_catiaProfil); SenkkopfShaft = catShapeFactory1.AddNewShaftFromRef(reference1); SenkkopfShaft.SetProfileElement(reference1); SenkkopfShaft.set_Name("Kopf"); // Part aktualisieren hsp_catiaPart.Part.Update(); #endregion #region Offsetebene Reference RefmyPlaneYZ = (Reference)catOriginElements.PlaneYZ; hsp_catiaPart.Part.InWorkObject = hsp_catiaPart.Part; HybridShapeFactory hybridShapeFactory1 = (HybridShapeFactory)hsp_catiaPart.Part.HybridShapeFactory; HybridShapePlaneOffset OffsetEbene = hybridShapeFactory1.AddNewPlaneOffset(RefmyPlaneYZ, m.innenskkopfhöhe, true); OffsetEbene.set_Name("OffsetEbene"); Reference RefOffsetEbene = hsp_catiaPart.Part.CreateReferenceFromObject(OffsetEbene); HybridBodies hybridBodies1 = hsp_catiaPart.Part.HybridBodies; HybridBody hybridBody1 = hybridBodies1.Item("Profile"); hybridBody1.AppendHybridShape(OffsetEbene); hsp_catiaPart.Part.Update(); Sketches catSketches2 = catHybridBody1.HybridSketches; Sketch SkizzeaufOffset = catSketches2.Add(RefOffsetEbene); hsp_catiaPart.Part.InWorkObject = SkizzeaufOffset; SkizzeaufOffset.set_Name("OffsetSkizze"); // Achsensystem in Skizze erstellen ErzeugeAchsensystem(); // Skizzierer verlassen SkizzeaufOffset.CloseEdition(); // Part aktualisieren hsp_catiaPart.Part.Update(); #endregion #region Innensechskant Factory2D catFactory2D2 = SkizzeaufOffset.OpenEdition(); // Sechskant erzeugen double cos30 = Math.Sqrt(3) / 2; double mSW = m.innensechskant / 2; // erst die Punkte Point2D catPoint2D6 = catFactory2D2.CreatePoint(mSW, tan30 * mSW); Point2D catPoint2D7 = catFactory2D2.CreatePoint(mSW, -(tan30 * mSW)); Point2D catPoint2D8 = catFactory2D2.CreatePoint(0, -(mSW / cos30)); Point2D catPoint2D9 = catFactory2D2.CreatePoint(-mSW, -(tan30 * mSW)); Point2D catPoint2D10 = catFactory2D2.CreatePoint(-mSW, tan30 * mSW); Point2D catPoint2D11 = catFactory2D2.CreatePoint(0, mSW / cos30); // dann die Linien Line2D catLine2D6 = catFactory2D2.CreateLine(mSW, tan30 * mSW, mSW, -(tan30 * mSW)); catLine2D6.StartPoint = catPoint2D6; catLine2D6.EndPoint = catPoint2D7; Line2D catLine2D7 = catFactory2D2.CreateLine(mSW, -(tan30 * mSW), 0, -(mSW / cos30)); catLine2D7.StartPoint = catPoint2D7; catLine2D7.EndPoint = catPoint2D8; Line2D catLine2D8 = catFactory2D2.CreateLine(0, -(mSW / cos30), -mSW, -(tan30 * mSW)); catLine2D8.StartPoint = catPoint2D8; catLine2D8.EndPoint = catPoint2D9; Line2D catLine2D9 = catFactory2D2.CreateLine(-mSW, -(tan30 * mSW), -mSW, (tan30 * mSW)); catLine2D9.StartPoint = catPoint2D9; catLine2D9.EndPoint = catPoint2D10; Line2D catLine2D10 = catFactory2D2.CreateLine(-mSW, (tan30 * mSW), 0, mSW / cos30); catLine2D10.StartPoint = catPoint2D10; catLine2D10.EndPoint = catPoint2D11; Line2D catLine2D11 = catFactory2D2.CreateLine(0, mSW / cos30, mSW, tan30 * mSW); catLine2D11.StartPoint = catPoint2D11; catLine2D11.EndPoint = catPoint2D6; // Part aktualisieren hsp_catiaPart.Part.Update(); #endregion #region Tasche Innensechskant // Hauptkoerper in Bearbeitung definieren hsp_catiaPart.Part.InWorkObject = hsp_catiaPart.Part.MainBody; // Tasche erzeugen erzeugen ShapeFactory catShapeFactory2 = (ShapeFactory)hsp_catiaPart.Part.ShapeFactory; SchlitzPocket = catShapeFactory2.AddNewPocket(SkizzeaufOffset, -m.schlitztiefe); // Block umbenennen SchlitzPocket.set_Name("Innensechskannt"); // Part aktualisieren hsp_catiaPart.Part.Update(); #endregion }
public void ZylinderkopfInnensechskant(MetrischeGewindegroesse m) { #region SKizze bauen // 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(); hsp_catiaProfil.set_Name("Zylinderkopf mit Innensechskannt"); // Skizzierer verlassen hsp_catiaProfil.CloseEdition(); // Part aktualisieren hsp_catiaPart.Part.Update(); Factory2D catFactory2D1 = hsp_catiaProfil.OpenEdition(); // erst die Punkte Point2D catPoint2D1 = catFactory2D1.CreatePoint(0, 0); // dann den Kreis Circle2D catCircle2D_1 = catFactory2D1.CreateCircle(0, 0, m.kopfdurchmesser / 2, 0, 0); catCircle2D_1.CenterPoint = catPoint2D1; // Skizzierer verlassen hsp_catiaProfil.CloseEdition(); // Part aktualisieren hsp_catiaPart.Part.Update(); #endregion #region Pad // Hauptkoerper in Bearbeitung definieren hsp_catiaPart.Part.InWorkObject = hsp_catiaPart.Part.MainBody; // Block(Schaft) erzeugen ShapeFactory catShapeFactory1 = (ShapeFactory)hsp_catiaPart.Part.ShapeFactory; KopfPad = catShapeFactory1.AddNewPad(hsp_catiaProfil, -m.mutterhoehe); // Block umbenennen KopfPad.set_Name("Kopf"); // Part aktualisieren hsp_catiaPart.Part.Update(); #endregion #region Offsetebene Reference RefmyPlaneYZ = (Reference)catOriginElements.PlaneYZ; hsp_catiaPart.Part.InWorkObject = hsp_catiaPart.Part; HybridShapeFactory hybridShapeFactory1 = (HybridShapeFactory)hsp_catiaPart.Part.HybridShapeFactory; HybridShapePlaneOffset OffsetEbene = hybridShapeFactory1.AddNewPlaneOffset(RefmyPlaneYZ, m.mutterhoehe, true); OffsetEbene.set_Name("OffsetEbene"); Reference RefOffsetEbene = hsp_catiaPart.Part.CreateReferenceFromObject(OffsetEbene); HybridBodies hybridBodies1 = hsp_catiaPart.Part.HybridBodies; HybridBody hybridBody1 = hybridBodies1.Item("Profile"); hybridBody1.AppendHybridShape(OffsetEbene); hsp_catiaPart.Part.Update(); Sketches catSketches2 = catHybridBody1.HybridSketches; Sketch SkizzeaufOffset = catSketches2.Add(RefOffsetEbene); hsp_catiaPart.Part.InWorkObject = SkizzeaufOffset; SkizzeaufOffset.set_Name("OffsetSkizze"); // Achsensystem in Skizze erstellen ErzeugeAchsensystem(); // Skizzierer verlassen SkizzeaufOffset.CloseEdition(); // Part aktualisieren hsp_catiaPart.Part.Update(); #endregion #region Innensechskannt Factory2D catFactory2D2 = SkizzeaufOffset.OpenEdition(); // Sechskant erzeugen double tan30 = Math.Sqrt(3) / 3; double cos30 = Math.Sqrt(3) / 2; double mSW = m.innensechskant / 2; // erst die Punkte Point2D catPoint2D2 = catFactory2D2.CreatePoint(mSW, tan30 * mSW); Point2D catPoint2D3 = catFactory2D2.CreatePoint(mSW, -(tan30 * mSW)); Point2D catPoint2D4 = catFactory2D2.CreatePoint(0, -(mSW / cos30)); Point2D catPoint2D5 = catFactory2D2.CreatePoint(-mSW, -(tan30 * mSW)); Point2D catPoint2D6 = catFactory2D2.CreatePoint(-mSW, tan30 * mSW); Point2D catPoint2D7 = catFactory2D2.CreatePoint(0, mSW / cos30); // dann die Linien Line2D catLine2D1 = catFactory2D2.CreateLine(mSW, tan30 * mSW, mSW, -(tan30 * mSW)); catLine2D1.StartPoint = catPoint2D2; catLine2D1.EndPoint = catPoint2D3; Line2D catLine2D2 = catFactory2D2.CreateLine(mSW, -(tan30 * mSW), 0, -(mSW / cos30)); catLine2D2.StartPoint = catPoint2D3; catLine2D2.EndPoint = catPoint2D4; Line2D catLine2D3 = catFactory2D2.CreateLine(0, -(mSW / cos30), -mSW, -(tan30 * mSW)); catLine2D3.StartPoint = catPoint2D4; catLine2D3.EndPoint = catPoint2D5; Line2D catLine2D4 = catFactory2D2.CreateLine(-mSW, -(tan30 * mSW), -mSW, (tan30 * mSW)); catLine2D4.StartPoint = catPoint2D5; catLine2D4.EndPoint = catPoint2D6; Line2D catLine2D5 = catFactory2D2.CreateLine(-mSW, (tan30 * mSW), 0, mSW / cos30); catLine2D5.StartPoint = catPoint2D6; catLine2D5.EndPoint = catPoint2D7; Line2D catLine2D6 = catFactory2D2.CreateLine(0, mSW / cos30, mSW, tan30 * mSW); catLine2D6.StartPoint = catPoint2D7; catLine2D6.EndPoint = catPoint2D2; // Part aktualisieren hsp_catiaPart.Part.Update(); #endregion #region Verrundung hsp_catiaPart.Part.InWorkObject = hsp_catiaPart.Part.MainBody; ShapeFactory catshapeFactoryRadius = (ShapeFactory)hsp_catiaPart.Part.ShapeFactory; Reference reference1 = hsp_catiaPart.Part.CreateReferenceFromBRepName( //Hier scheint der Fehler drin zu stecken, er erkennt nicht die richtige kante--wenn nicht die Kante, sondern die Fläche ausgewählt wird, scheint der Fehler behpoben zu sein "RSur:(Face:(Brp:(Pad.2;2);None:();Cf11:());WithTemporaryBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR15)", KopfPad); // "REdge:(Edge:(Face:(Brp:(Pad.1;0:(Brp:(Sketch.1;1)));None:();Cf11:());Face:(Brp:(Pad.1;2);None:();Cf11:());None:(Limits1:();Limits2:());Cf11:());WithTemporaryBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR15)", SchaftPad); RadiusKopf = catshapeFactoryRadius.AddNewEdgeFilletWithConstantRadius(reference1, CatFilletEdgePropagation.catTangencyFilletEdgePropagation, m.fase); RadiusKopf.set_Name("Radius"); hsp_catiaPart.Part.Update(); #endregion #region Tasche Innensechskannt // Hauptkoerper in Bearbeitung definieren hsp_catiaPart.Part.InWorkObject = hsp_catiaPart.Part.MainBody; // Tasche erzeugen erzeugen ShapeFactory catShapeFactory2 = (ShapeFactory)hsp_catiaPart.Part.ShapeFactory; SchlitzPocket = catShapeFactory2.AddNewPocket(SkizzeaufOffset, -m.innensktiefe); // Block umbenennen SchlitzPocket.set_Name("Innensechskant"); // Part aktualisieren hsp_catiaPart.Part.Update(); #endregion }
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; HybridBodies hbdys = prt.HybridBodies; HybridBody hbdy = hbdys.Add(); HybridShapeFactory hsFac = (HybridShapeFactory)prt.HybridShapeFactory; Point p1 = hsFac.AddNewPointCoord(10, 60, 30); Point p2 = hsFac.AddNewPointCoord(70, 75, 35); Point p3 = hsFac.AddNewPointCoord(100, 80, 30); Point p4 = hsFac.AddNewPointCoord(100, 80, 40); Point p5 = hsFac.AddNewPointCoord(95, 20, 45); Point p6 = hsFac.AddNewPointCoord(100, 10, 50); INFITF.Reference r1 = prt.CreateReferenceFromGeometry(p1); INFITF.Reference r2 = prt.CreateReferenceFromGeometry(p2); INFITF.Reference r3 = prt.CreateReferenceFromGeometry(p3); INFITF.Reference r4 = prt.CreateReferenceFromGeometry(p4); INFITF.Reference r5 = prt.CreateReferenceFromGeometry(p5); INFITF.Reference r6 = prt.CreateReferenceFromGeometry(p6); HybridShapeSpline hspln1 = hsFac.AddNewSpline(); HybridShapeSpline hspln2 = hsFac.AddNewSpline(); hspln1.AddPoint(r1); hspln1.AddPoint(r2); hspln1.AddPoint(r3); hspln2.AddPoint(r4); hspln2.AddPoint(r5); hspln2.AddPoint(r6); hbdy.AppendHybridShape(hspln1); hbdy.AppendHybridShape(hspln2); INFITF.Reference rspl1 = prt.CreateReferenceFromGeometry(hspln1); INFITF.Reference rspl2 = prt.CreateReferenceFromGeometry(hspln2); HybridShapeSweepExplicit swp = hsFac.AddNewSweepExplicit(rspl1, rspl2); hbdy.AppendHybridShape(swp); Point p = hsFac.AddNewPointCoord(50, 30, 100); hbdy.AppendHybridShape(p); HybridShapeProject prjct = hsFac.AddNewProject((INFITF.Reference)p, (INFITF.Reference)swp); hbdy.AppendHybridShape(prjct); prt.Update(); }