Example #1
0
        public override bool Run(FeatureContext context)
        {
            context.RenderView.SetDisplayMode((int)(EnumDisplayStyle.DS_ShadeEdge | EnumDisplayStyle.DS_Vertex));
            // construct a wire;
            TopoShape TS = GlobalInstance.BrepTools.MakeEllipse(Vector3.ZERO, 100D, 50D, Vector3.UNIT_Z);

            context.ShowGeometry(TS);

            TopoShape line = GlobalInstance.BrepTools.MakeLine(new Vector3(0, -200, 0), new Vector3(200, 200, 0));

            context.ShowGeometry(line);

            IntersectionLineCurve intersector = new IntersectionLineCurve();

            TopoExplor     tp = new TopoExplor();
            TopoShapeGroup tg = tp.ExplorEdges(TS);

            intersector.SetCurve(tg.GetAt(0));

            if (intersector.Perform(line))
            {
                int nCount = intersector.GetPointCount();

                List <Vector3> LV = new List <Vector3>();

                for (int ii = 0; ii < nCount; ++ii)
                {
                    Vector3 pt = intersector.GetPoint(ii + 1);
                    LV.Add(pt);

                    context.ShowGeometry(GlobalInstance.BrepTools.MakePoint(pt));
                }


                MessageBox.Show(String.Format("{0}", nCount));
            }



            return(true);
        }
Example #2
0
        private void curveIntersectionToolStripMenuItem_Click(object sender, EventArgs e)
        {
            TopoShape ellipseArc = GlobalInstance.BrepTools.MakeEllipseArc(Vector3.ZERO, 100, 50, 0, 90, Vector3.UNIT_Z);
            TopoShape circle = GlobalInstance.BrepTools.MakeCircle(Vector3.ZERO, 60, Vector3.UNIT_Z);

            IntersectionLineCurve intersector = new IntersectionLineCurve();
            intersector.SetCurve(ellipseArc);
            if (intersector.Perform(circle))
            {
                PointStyle ps = new PointStyle();
                ps.SetMarker("plus");
                ps.SetPointSize(10);
                

                int nCount = intersector.GetPointCount();
                for (int ii = 1; ii <= nCount; ++ii)
                {
                    if (intersector.GetSquareDistance(ii) < 0.001)
                    {
                        Vector3 pt = intersector.GetPoint(ii);

                        PointNode pn = new PointNode();
                        pn.SetPoint(pt);
                        pn.SetPointStyle(ps);
                        renderView.ShowSceneNode(pn);
                    }
                }
            }

            renderView.ShowGeometry(ellipseArc, ++shapeId);
            renderView.ShowGeometry(circle, ++shapeId);
            renderView.RequestDraw();
        }