Exemplo n.º 1
0
        private void queryMultiSelectionToolStripMenuItem_Click(object sender, EventArgs e)
        {
            TopoShapeGroup group = new TopoShapeGroup();

            MultiShapeQuery query = new MultiShapeQuery();

            m_RenderView.QuerySelection(query);
            int nCount = query.GetCount();

            for (int ii = 0; ii < nCount; ++ii)
            {
                SelectedShapeQuery shapeQuery = query.GetSubContext(ii);
                TopoShape          subShape   = shapeQuery.GetSubGeometry();
                if (subShape != null)
                {
                    group.Add(subShape);
                }
            }

            // clear the scene and only keep the selected shapes
            if (group.Size() > 0)
            {
                m_RenderView.ClearScene();
                for (int ii = 0; ii < group.Size(); ++ii)
                {
                    m_RenderView.ShowGeometry(group.GetAt(ii), 100 + ii);;
                }
            }
        }
Exemplo n.º 2
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);
        }
Exemplo n.º 3
0
        public override void OnFace(TopoShape shape)
        {
            WireClassifier wc = new WireClassifier();

            if (!wc.Initialize(shape))
            {
                return;
            }

            TopoShapeGroup innerWires = wc.GetInnerWires();
            int            nCount     = innerWires.Size();

            for (int ii = 0; ii < nCount; ++ii)
            {
                SceneNode node = _Context.ShowGeometry(innerWires.GetAt(ii));
                node.SetLineStyle(_LineStyle);
            }

            SceneNode faceNode = _Context.ShowGeometry(shape);

            faceNode.SetFaceStyle(_FaceStyle);
        }
Exemplo n.º 4
0
        public override bool Run(FeatureContext context)
        {
            TopoShape arc  = GlobalInstance.BrepTools.MakeArc(new Vector3(-100, 0, 0), new Vector3(100, 0, 0), Vector3.ZERO, Vector3.UNIT_Z);
            TopoShape line = GlobalInstance.BrepTools.MakeLine(new Vector3(100, 0, 0), new Vector3(100, 200, 0));

            TopoShapeGroup group = new TopoShapeGroup();

            group.Add(arc);
            group.Add(line);

            TopoShape wire = GlobalInstance.BrepTools.MakeSpline(group);

            TopoShape splitter1 = GlobalInstance.BrepTools.MakePoint(new Vector3(0, -100, 0));
            TopoShape splitter2 = GlobalInstance.BrepTools.MakePoint(new Vector3(100, 100, 0));

            TopoShapeGroup spliterGroup = new TopoShapeGroup();

            spliterGroup.Add(splitter1);
            spliterGroup.Add(splitter2);
            TopoShape result = GlobalInstance.BrepTools.MakeSplit(wire, spliterGroup);

            TopoExplor     exp   = new TopoExplor();
            TopoShapeGroup itmes = exp.ExplorSubShapes(result);

            for (int ii = 0; ii < itmes.Size(); ++ii)
            {
                SceneNode node = context.ShowGeometry(itmes.GetAt(ii));
                LineStyle ls   = new LineStyle();
                ls.SetLineWidth(3.0f);
                ls.SetColor((ii + 1) * 50, ii * 20, ii * 10);
                node.SetLineStyle(ls);
            }


            return(true);
        }