Exemple #1
0
        public override void OnSelectionChanged(RenderControl render, PickedResult result)
        {
            var item = result.GetItem();

            if (item.GetNode() == null)
            {
                return;
            }
            var ssn = BrepSceneNode.Cast(item.GetNode());

            if (ssn == null)
            {
                return;
            }

            if (item.GetShapeType() == EnumShapeFilter.Face)
            {
                var face = ssn.GetShape().GetShape().FindChild(EnumTopoShapeType.Topo_FACE, (int)item.GetShapeIndex());
                if (face != null)
                {
                    var surface = new ParametricSurface(face);
                    var pt      = item.GetPoint().GetPosition();
                    var param   = surface.ComputeClosestPoint(pt.ToPnt(), GP.Resolution(), GP.Resolution());

                    var values  = surface.D1(param.X(), param.Y());
                    var postion = Vector3.From(values.GetPoint());
                    var vecs    = values.GetVectors();

                    var dir = Vector3.From(vecs[0].Crossed(vecs[1]));
                    dir.normalize();
                    mArrow.SetLocation(postion, dir);
                    mArrow.RequstUpdate();
                    mArrow.Update();

                    render.GetContext().GetSelection().Clear();

                    render.RequestDraw(EnumUpdateFlags.Scene);
                }
            }
        }