Exemple #1
0
 /// <summary>
 /// 测量点到对象之间的投影距离
 /// </summary>
 /// <param name="point"></param>
 /// <param name="object">对象2</param>
 /// <param name="projectVector">投影矢量</param>
 /// <param name="type">测量类型</param>
 /// <returns>投影距离值</returns>
 public static double DistanceTo(this Point3d point, DisplayableObject @object, Vector3d projectVector, MeasureManager.ProjectionType type) => WorkPart.MeasureManager.MeasureProjectDistance(point, @object, projectVector, type);
        /// <summary>
        /// 测量点到对象之间的投影距离
        /// </summary>
        /// <param name="measureManager"></param>
        /// <param name="point"></param>
        /// <param name="object">对象2</param>
        /// <param name="projectVector">投影矢量</param>
        /// <param name="type">测量类型</param>
        /// <returns>投影距离值</returns>
        public static double MeasureProjectDistance(this MeasureManager measureManager, Point3d point, DisplayableObject @object, Vector3d projectVector, MeasureManager.ProjectionType type)
        {
            var tempPt = WorkPart.Points.CreatePoint(point);

            double distance = measureManager.MeasureProjectDistance(tempPt, @object, projectVector, type);

            tempPt.Delete();

            return(distance);
        }
        /// <summary>
        /// 测量两个对象集之间的投影距离,只能是当前工作部件中的对象,可用类型为 Point, Curve, Edge, Face, Body, Datum Plane.
        /// </summary>
        /// <param name="measureManager"></param>
        /// <param name="objects1"></param>
        /// <param name="objects2"></param>
        /// <param name="projectVector">投影矢量</param>
        /// <param name="type">测量类型</param>
        /// <returns>投影距离值</returns>
        public static (bool Success, double Distance, Point3d PointOn1stObjects, Point3d PointOn2ndObjects) MeasureProjectDistance(this MeasureManager measureManager, NXObject[] objects1, NXObject[] objects2, Vector3d projectVector, MeasureManager.ProjectionType type)
        {
            try
            {
                NXOpen.Unit lengthUnit = WorkPart.UnitCollection.FindObject("MilliMeter");

                Direction direction = WorkPart.Directions.CreateDirection(new Point3d(), projectVector, NXOpen.SmartObject.UpdateOption.WithinModeling);

                MeasureDistance minimumMeasure = measureManager.NewScDistance(lengthUnit, CreateCollector(objects1), CreateCollector(objects2), direction, type, true);

                Measure measureFeature = minimumMeasure.CreateFeature();

                var measureLine = measureFeature.GetEntities()[0] as Line;

                var minimumDistance = measureLine.GetLength();

                Point3d pointOn1stObjects = measureLine.StartPoint;

                Point3d pointOn2ndObjects = measureLine.EndPoint;

                measureFeature.Delete();

                return(true, minimumDistance, pointOn1stObjects, pointOn2ndObjects);
            }
            catch (Exception)
            {
                return(false, 0, new Point3d(), new Point3d());
            }
        }
        /// <summary>
        /// 测量两个对象之间的投影距离,返回距离以及点信息,只能是当前工作部件中的对象,可用类型为 Point, Curve, Edge, Face, Body, Datum Plane.
        /// </summary>
        /// <param name="measureManager"></param>
        /// <param name="objects1"></param>
        /// <param name="objects2"></param>
        /// <param name="projectVector">投影矢量</param>
        /// <param name="type">测量类型</param>
        /// <returns>投影距离值</returns>
        public static MeasureResult MeasureProjectDistanceWithDetail(this MeasureManager measureManager, DisplayableObject[] objects1, DisplayableObject[] objects2, Vector3d projectVector, MeasureManager.ProjectionType type)
        {
            var measure = MeasureProjectDistance(measureManager, objects1, objects2, projectVector, type);

            return(new MeasureResult(measure.Success, measure.Distance, measure.PointOn1stObjects, measure.PointOn2ndObjects));
        }
        /// <summary>
        /// 测量两个对象之间的投影距离
        /// </summary>
        /// <param name="measureManager"></param>
        /// <param name="object1">对象1</param>
        /// <param name="object2">对象2</param>
        /// <param name="projectVector">投影矢量</param>
        /// <param name="type">测量类型</param>
        /// <returns>投影距离值</returns>
        public static double MeasureProjectDistance(this MeasureManager measureManager, DisplayableObject object1, DisplayableObject object2, Vector3d projectVector, MeasureManager.ProjectionType type)
        {
            NXOpen.Unit lengthUnit = WorkPart.UnitCollection.FindObject("MilliMeter");

            Direction direction1 = WorkPart.Directions.CreateDirection(new Point3d(), projectVector, NXOpen.SmartObject.UpdateOption.WithinModeling);

            var projectDistance = measureManager.NewDistance(lengthUnit, object1, object2, direction1, type);

            return(projectDistance.Value);
        }
Exemple #6
0
 public static (bool Success, double Distance, Point3d PointOn1stObjects, Point3d PointOn2ndObjects) MeasureDistance(this MeasureManager measureManager, NXObject[] objects1, NXObject[] objects2, Vector3d projectVector, MeasureManager.ProjectionType type) => measureManager.MeasureProjectDistance(objects1, objects2, projectVector, type);
Exemple #7
0
 public static double MeasureDistance(this MeasureManager theMeasureManager, Point3d point, DisplayableObject @object, Vector3d projectVector, MeasureManager.ProjectionType type) => theMeasureManager.MeasureProjectDistance(point, @object, projectVector, type);
Exemple #8
0
 public static double MeasureDistance(this MeasureManager measureManager, DisplayableObject object1, DisplayableObject object2, Vector3d projectVector, MeasureManager.ProjectionType type) => measureManager.MeasureProjectDistance(object1, object2, projectVector, type);