/// <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());
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 使用 NXOpen 测量两个对象之间的距离
        /// </summary>
        /// <param name="measureManager"></param>
        /// <param name="object1">对象1</param>
        /// <param name="object2">对象2</param>
        /// <returns>距离值</returns>
        public static (bool Success, double Distance, Point3d PointOn1stObject, Point3d PointOn2ndObject) MeasureDistance(this MeasureManager measureManager, DisplayableObject object1, DisplayableObject object2)
        {
            try
            {
                NXOpen.Unit lengthUnit = WorkPart.UnitCollection.FindObject("MilliMeter");

                MeasureDistance distance = measureManager.NewDistance(lengthUnit, MeasureManager.MeasureType.Minimum, true, object1, object2);

                var measureFeature = distance.CreateFeature();

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

                var minimumDistance = measureLine.GetLength();

                Point3d pointOn1stObject = measureLine.StartPoint;

                Point3d pointOn2ndObject = measureLine.EndPoint;

                measureFeature.Delete();

                return(true, minimumDistance, pointOn1stObject, pointOn2ndObject);
            }
            catch (Exception)
            {
                return(false, 0, new Point3d(), new Point3d());
            }
        }
Ejemplo n.º 3
0
    void Update()
    {
        /******
        * Check if player wants to enter or exit a vehicle
        ******/

        player = GameObject.FindWithTag("PlayerFps");

        if (Input.GetKeyDown("f"))
        {
            if (GameManager.isInsideVehicle == true)
            {
                //Set inside vehicle to false
                GameManager.isInsideVehicle = false;

                //Destroy camera on ship
                Destroy(GameObject.FindWithTag("MainCamera"));

                //Instantiate the player outside the vehicle
                Instantiate(InstantiatePlayer, exitPoint.transform.position, exitPoint.transform.rotation);

                //Set gravity on for vehicle
                gameObject.GetComponent <Rigidbody>().useGravity = true;
            }
            else
            {
                // Check for distance if outside of Vehicle
                if (MeasureDistance.checkDistance(6.5, player, entryPoint) == true && GameManager.hoveredObject == "shipEnterPoint")
                {
                    //Set inside to true
                    GameManager.isInsideVehicle = true;

                    //destroy player
                    Destroy(GameObject.FindWithTag("PlayerFps"));

                    //Create new camera
                    GameObject cameraPosition = GameObject.FindWithTag("ThirdPersonCameraShip");
                    var        camera         = Instantiate(cam, cameraPosition.transform.position, cameraPosition.transform.rotation);
                    camera.transform.parent = gameObject.transform;

                    //Set the vehicle to not use gravity (Only for space ships)
                    gameObject.GetComponent <Rigidbody>().useGravity = false;
                }
            }

            //Reset hovered object, since it never made an exit
            GameManager.hoveredObject = "";
        }
    }
Ejemplo n.º 4
0
    void Start()
    {
        m_TargetBuildingBehaviour = GetComponent <UserDefinedTargetBuildingBehaviour>();

        if (m_TargetBuildingBehaviour)
        {
            m_TargetBuildingBehaviour.RegisterEventHandler(this);
            Debug.Log("Registering User Defined Target event handler.");
        }

        measureDistance = FindObjectOfType <MeasureDistance>();

        m_QualityDialog = FindObjectOfType <QualityDialog>();

        if (m_QualityDialog)
        {
            //hiding Quality message at the begining if its enabled
            m_QualityDialog.GetComponent <CanvasGroup>().alpha = 0;
        }
    }
    public override void OnInspectorGUI()
    {
        serializedObject.Update();
        DrawDefaultInspector();
        MeasureDistance script = serializedObject.targetObject as MeasureDistance;

        if (script == null)
        {
            return;
        }
        Transform     startPoint = script.StartPoint;
        StringBuilder ss         = new StringBuilder("Distance: ");

        if (startPoint != null)
        {
            float distance = Vector3.Distance(startPoint.position,
                                              script.transform.position);
            ss.Append(distance);
        }
        EditorGUILayout.LabelField(ss.ToString());
        serializedObject.ApplyModifiedProperties();
    }