Exemplo n.º 1
0
        /// <summary>
        /// Get a Vector of Coordinates for a given drawing context
        /// </summary>
        /// <param name="position"></param>
        /// <param name="distancesToAnchor"></param>
        /// <param name="asPreview"></param>
        /// <param name="keyboardInput"></param>
        /// <returns></returns>
        public Vec <Coordinate> GetParametricPosition(Vec <float> position, Vec <float> distancesToAnchor, bool asPreview,
                                                      KeyboardInput.Model keyboardInput)
        {
            SnappedCoordinate = new Vec <Coordinate>();
            SnappedParameter  = new Vec <Parameter>();

            var output = new Vec <Coordinate>();

            foreach (var a in Vec.XYZ)
            {
                // a parameter is referenced in the keyboard input
                if (keyboardInput?.ParameterReferences[a] != null)
                {
                    output[a] = Axes[a].AddNewMueCoordinateWithParameterReference(
                        keyboardInput.ParameterReferences[a],
                        keyboardInput.IsDirectionNegative[a],
                        asPreview
                        );
                    continue;
                }

                // a dimension is set in the keyboard input
                if (keyboardInput?.DimensionInput[a] != null)
                {
                    output[a] = Axes[a].AddNewMueCoordinateWithParameterValue(
                        keyboardInput.DimensionInput[a].InM,
                        keyboardInput.IsDirectionNegative[a],
                        asPreview
                        );
                    continue;
                }

                // try to snap to an existing coordinate
                var snappedCoordinate = Axes[a].TryToSnapToExistingCoordinate(position[a], asPreview);
                if (snappedCoordinate != null)
                {
                    output[a]            = snappedCoordinate;
                    SnappedCoordinate[a] = snappedCoordinate;
                    continue;
                }

                // try to snap to an existing parameter
                var parameterSnap = Axes[a].TryToSnapToExistingParameter(distancesToAnchor[a], GetAllParameters());
                if (parameterSnap != null)
                {
                    output[a] = Axes[a].AddNewMueCoordinate(
                        parameterSnap.Value.parameter,
                        parameterSnap.Value.pointsInNegativeDirection,
                        asPreview
                        );
                    SnappedParameter[a] = parameterSnap.Value.parameter;
                    continue;
                }

                // create new coordinate
                output[a] = Axes[a].AddNewMueCoordinate(position[a], asPreview);
            }

            return(output);
        }
Exemplo n.º 2
0
 public void Reset()
 {
     draggedCoordinate    = null;
     keyboardInputModel   = new KeyboardInput.Model();
     incompleteGeometry   = null;
     focusPosition        = null;
     currentGeometryColor = null;
 }
Exemplo n.º 3
0
    public static Vec <Coordinate> UpdateCursorPosition(Vec <Coordinate> oldFocusPosition,
                                                        CoordinateSystem cs, KeyboardInput.Model keyboardInput)
    {
        oldFocusPosition?.ForEach(c =>
        {
            if (c.IsCurrentlyDrawn)
            {
                c.Delete();
            }
        });

        return(GetOrCreatePositionAtMousePosition(cs, cs.Anchor, true, keyboardInput));
    }
Exemplo n.º 4
0
    private static Vec <Coordinate> GetOrCreatePositionAtMousePosition(CoordinateSystem coordinateSystem,
                                                                       Anchor anchor,
                                                                       bool asPreview = false,
                                                                       KeyboardInput.Model keyboardInput = null)
    {
        var mousePosition    = MouseInput.RaycastPosition;
        var distanceToAnchor = new Vec <float>(
            mousePosition.X - anchor.PrimaryPosition.x,
            mousePosition.Y - anchor.PrimaryPosition.y,
            mousePosition.Z - anchor.PrimaryPosition.z
            );

        return
            (coordinateSystem.GetParametricPosition(mousePosition, distanceToAnchor, asPreview, keyboardInput));
    }
Exemplo n.º 5
0
 public void UpdateUI(CoordinateSystem cs, CoordinateUIStyle coordinateUIStyle,
                      KeyboardInput.Model keyboardInput, Coordinate draggedCoordinate,
                      (Coordinate coordinate, Vec.AxisID axis)?hoveredCoordinate)