/// <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); }
/// <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); }