Exemplo n.º 1
0
        /// <summary>
        /// 计算面的面积
        /// </summary>
        /// <param name="face"></param>
        /// <returns></returns>
        public static double GetFaceArea(Face face)
        {
            NXOpen.Session theSession = NXOpen.Session.GetSession();
            NXOpen.Part    workPart   = theSession.Parts.Work;

            try
            {
                Unit   unit1    = workPart.UnitCollection.FindObject("SquareMilliMeter");
                Unit   unit2    = workPart.UnitCollection.FindObject("MilliMeter");
                double accuracy = workPart.Preferences.Modeling.AngleToleranceData;
                IParameterizedSurface[] objects1 = new IParameterizedSurface[1];
                objects1[0] = face as IParameterizedSurface;
                MeasureFaces measureface = workPart.MeasureManager.NewFaceProperties(unit1, unit2, accuracy, objects1);
                return(measureface.Area);
            }
            catch (Exception ex)
            {
                LogMgr.WriteLog("FaceUtils:GetFaceArea:" + ex.Message);
            }
            finally
            {
            }

            return(0);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 测量面的属性
        /// </summary>
        /// <param name="theMeasureManaer"></param>
        /// <param name="faces"></param>
        /// <param name="tolerance">测量公差,越接近1.0,结果越精确,但同时可能会花费较长时间</param>
        /// <returns></returns>
        public static MeasureFaces MeasureFace(this MeasureManager theMeasureManaer, Face[] faces, double tolerance = 0.999)
        {
            NXOpen.Unit areaUnit = WorkPart.UnitCollection.FindObject("SquareMilliMeter");

            NXOpen.Unit lengthUnit = WorkPart.UnitCollection.FindObject("MilliMeter");

            MeasureFaces measureFace = WorkPart.MeasureManager.NewFaceProperties(areaUnit, lengthUnit, tolerance, faces);

            return(measureFace);
        }