Esempio n. 1
0
 /// <summary>
 /// Remove all of the edges and vertices from the graph.
 /// </summary>
 public virtual void Clear()
 {
     VertexOutEdges.Clear();
     m_Edges.Clear();
 }
Esempio n. 2
0
        private void ButtonBuild_Click(object sender, EventArgs e)
        {
            if (FalseWrite)
            {
                MessageBox.Show("Неправильно заданы входные параметры\nИсправьте красные поля");
                return;
            }

            string docName = "Первая деталь";

            CreateDoc(docName);

            // Создание эскиза на YX
            PlanarSketch Sketch = CompDef[docName].Sketches.Add(CompDef[docName].WorkPlanes[3]);    // 1 - YZ ; 2 - ZX; 3 - XY

            // Создание массивов Точек, Линий, Дуг, Окружностей
            List <SketchPoint>  points  = new List <SketchPoint>();  // Точки
            List <SketchLine>   lines   = new List <SketchLine>();   // Линии
            List <SketchArc>    arcs    = new List <SketchArc>();    // Дуги
            List <SketchCircle> circles = new List <SketchCircle>(); // Окружности

            /////////////////////////////////////////////////////////// Выдавливание

            points.Add(Sketch.SketchPoints.Add(TransGeom[docName].CreatePoint2d(0, 0), false));
            points.Add(Sketch.SketchPoints.Add(TransGeom[docName].CreatePoint2d(0, 5.0 / 10), false));
            lines.Add(Sketch.SketchLines.AddByTwoPoints(points[points.Count - 2], points[points.Count - 1]));

            points.Add(Sketch.SketchPoints.Add(TransGeom[docName].CreatePoint2d(0, 10.0 / 10), false));
            points.Add(Sketch.SketchPoints.Add(TransGeom[docName].CreatePoint2d(0, 15.0 / 10), false));
            arcs.Add(Sketch.SketchArcs.AddByCenterStartEndPoint(points[points.Count - 2], points[points.Count - 3], points[points.Count - 1], true));

            points.Add(Sketch.SketchPoints.Add(TransGeom[docName].CreatePoint2d(0, 20.0 / 10), false));
            lines.Add(Sketch.SketchLines.AddByTwoPoints(points[points.Count - 2], points[points.Count - 1]));

            points.Add(Sketch.SketchPoints.Add(TransGeom[docName].CreatePoint2d(20.0 / 10, 20.0 / 10), false));
            lines.Add(Sketch.SketchLines.AddByTwoPoints(points[points.Count - 2], points[points.Count - 1]));

            points.Add(Sketch.SketchPoints.Add(TransGeom[docName].CreatePoint2d(20.0 / 10, 0), false));
            lines.Add(Sketch.SketchLines.AddByTwoPoints(points[points.Count - 2], points[points.Count - 1]));

            lines.Add(Sketch.SketchLines.AddByTwoPoints(points[0], points[points.Count - 1]));

            points.Add(Sketch.SketchPoints.Add(TransGeom[docName].CreatePoint2d(10.0 / 10, 10.0 / 10), false));
            circles.Add(Sketch.SketchCircles.AddByCenterRadius(points[points.Count - 1], 4.0 / 10));

            Profile ProfileMain = (Profile)Sketch.Profiles.AddForSolid();

            ExtrudeFeature ExtrudeDef = CompDef[docName].Features.ExtrudeFeatures.AddByDistanceExtent(
                /*Эскиз*/ ProfileMain,
                /*Длина в см*/ 10.0 / 10,
                /*Направление вдоль оси*/ PartFeatureExtentDirectionEnum.kPositiveExtentDirection,
                /*Операция*/ PartFeatureOperationEnum.kJoinOperation,
                /*Эскиз*/ ProfileMain);

            /////////////////////////////////////////////////////////// Вращение

            WorkPlane WorkinPlace = CompDef[docName].WorkPlanes.AddByPlaneAndOffset(
                CompDef[docName].WorkPlanes[2], 20.0 / 10);

            WorkinPlace.Visible = false;
            Sketch = CompDef[docName].Sketches.Add(WorkinPlace);

            SketchLine line_axis;

            points.Clear();
            lines.Clear();

            points.Add(Sketch.SketchPoints.Add(TransGeom[docName].CreatePoint2d(-(10.0 - 5) / 10, 0), false));
            points.Add(Sketch.SketchPoints.Add(TransGeom[docName].CreatePoint2d(-(10.0 - 5) / 10, 10.0 / 10), false));
            lines.Add(Sketch.SketchLines.AddByTwoPoints(points[points.Count - 2], points[points.Count - 1]));

            points.Add(Sketch.SketchPoints.Add(TransGeom[docName].CreatePoint2d(-10.0 / 10, 10.0 / 10), false));
            lines.Add(Sketch.SketchLines.AddByTwoPoints(points[points.Count - 2], points[points.Count - 1]));

            points.Add(Sketch.SketchPoints.Add(TransGeom[docName].CreatePoint2d(-10.0 / 10, 0), false));
            line_axis = Sketch.SketchLines.AddByTwoPoints(points[points.Count - 2], points[points.Count - 1]);

            lines.Add(Sketch.SketchLines.AddByTwoPoints(points[0], points[points.Count - 1]));

            Profile        ProfileExternal = (Profile)Sketch.Profiles.AddForSolid();
            RevolveFeature revolvefeature  = CompDef[docName].Features.RevolveFeatures.AddFull(
                ProfileExternal,
                line_axis,
                PartFeatureOperationEnum.kCutOperation);

            Trans[docName].End();

            /////////////////////////////////////////////////////////// Вторая деталь

            docName = "Вторая деталь";
            CreateDoc(docName);

            Sketch = CompDef[docName].Sketches.Add(CompDef[docName].WorkPlanes[3]);

            points.Clear();
            lines.Clear();

            ///////////////////////////////////////////////// Шестиугольник

            double R = 2 * (4.0 / 10) / Math.Sqrt(3), Angle;

            points.Add(Sketch.SketchPoints.Add(TransGeom[docName].CreatePoint2d(
                                                   1.65 * Math.Cos(((double)210 / 180) * Math.PI),
                                                   1.65 * Math.Sin(((double)210 / 180) * Math.PI)), true));

            points.Add(Sketch.SketchPoints.Add(TransGeom[docName].CreatePoint2d(points[0].Geometry.X + R, points[0].Geometry.Y), true));
            for (int i = 2; i < 7; i++)
            {
                Angle = ((((double)i - 2) * 60 + 120) / 180);
                points.Add(Sketch.SketchPoints.Add(TransGeom[docName].CreatePoint2d(
                                                       points[i - 1].Geometry.X + R * Math.Cos(Angle * Math.PI),
                                                       points[i - 1].Geometry.Y + R * Math.Sin(Angle * Math.PI)), true));

                lines.Add(Sketch.SketchLines.AddByTwoPoints(points[i - 1], points[i]));
            }
            lines.Add(Sketch.SketchLines.AddByTwoPoints(points[6], points[1]));

            ProfileMain = (Profile)Sketch.Profiles.AddForSolid();

            ExtrudeDef = CompDef[docName].Features.ExtrudeFeatures.AddByDistanceExtent(
                /*Эскиз*/ ProfileMain,
                /*Длина*/ 10.0 / 10,
                /*Направление вдоль оси*/ PartFeatureExtentDirectionEnum.kPositiveExtentDirection,
                /*Операция*/ PartFeatureOperationEnum.kJoinOperation,
                /*Эскиз*/ ProfileMain);

            ///////////////////////////////////////////////// Фаска
            ChamferFeature Fillet;

            EdgeCollection Edges = ThisApplication.TransientObjects.CreateEdgeCollection();

            int k = 0;

            foreach (SurfaceBody SurfBody in PartDoc[docName].ComponentDefinition.SurfaceBodies)
            {
                foreach (Edge Edge in SurfBody.Edges)
                {
                    if (k == 2)
                    {
                        Edges.Add(Edge);
                    }
                    if (k == 5)
                    {
                        Edges.Add(Edge);
                    }
                    if (k == 8)
                    {
                        Edges.Add(Edge);
                    }
                    if (k == 11)
                    {
                        Edges.Add(Edge);
                    }
                    if (k == 14)
                    {
                        Edges.Add(Edge);
                    }
                    if (k == 17)
                    {
                        Edges.Add(Edge);
                    }
                    k++;
                }
            }

            Fillet = CompDef[docName].Features.ChamferFeatures.AddUsingDistance(Edges, 2.0 / 10);

            ///////////////////////////////////////////////// СОПРЯЖЕНИЕ
            FilletFeature Fillet1;

            Edges.Clear();

            int n = 0;

            foreach (SurfaceBody SurfBody in PartDoc[docName].ComponentDefinition.SurfaceBodies)
            {
                foreach (Edge Edge in SurfBody.Edges)
                {
                    if (n == 18)
                    {
                        Edges.Add(Edge);
                    }
                    if (n == 20)
                    {
                        Edges.Add(Edge);
                    }
                    if (n == 21)
                    {
                        Edges.Add(Edge);
                    }
                    if (n == 23)
                    {
                        Edges.Add(Edge);
                    }
                    if (n == 26)
                    {
                        Edges.Add(Edge);
                    }
                    if (n == 27)
                    {
                        Edges.Add(Edge);
                    }

                    n++;
                }
            }

            Fillet1 = CompDef[docName].Features.FilletFeatures.AddSimple(Edges, /*Радиус*/ 1.0 / 10);

            // Заврешение транзакции
            Trans[docName].End();
        }