////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        // Use: Projects input point onto input plane and returns projected point
        //
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        public static Point ProjectOnPlane(Point point, Plane plane)
        {
            try
            {
                MeasureTools measureTools = InvApplication.MeasureTools;

                double minDist;
                object contextObj = null;

                minDist = measureTools.GetMinimumDistance((object)point,
                                                          plane,
                                                          InferredTypeEnum.kNoInference,
                                                          InferredTypeEnum.kNoInference,
                                                          ref contextObj);

                NameValueMap context = contextObj as NameValueMap;

                Point projectedPoint = context.get_Item(context.Count < 3 ? 2 : 3) as Point;

                return(projectedPoint);
            }
            catch
            {
                return(null);
            }
        }