Beispiel #1
0
        //--------------------------------------------------------------------------------------------------

        void UpdateMergeMarker()
        {
            if (MergeCandidateIndex >= 0)
            {
                var geomPoint = new Geom_CartesianPoint(_MergeCandidatePoint.X, _MergeCandidatePoint.Y, 0);
                geomPoint.Transform(_SketchEditorTool.Transform);
                if (_MergePreviewMarker == null)
                {
                    _MergePreviewMarker = new Marker(WorkspaceController, Marker.Styles.Bitmap | Marker.Styles.Topmost, Marker.RingImage);
                    _MergePreviewMarker.Set(geomPoint);
                    _MergePreviewMarker.SetColor(Colors.Highlight);
                }
                else
                {
                    _MergePreviewMarker.Set(geomPoint);
                }
            }
            else
            {
                if (_MergePreviewMarker != null)
                {
                    _MergePreviewMarker.Remove();
                    _MergePreviewMarker = null;
                }
            }

            WorkspaceController.Invalidate();
        }
Beispiel #2
0
        //--------------------------------------------------------------------------------------------------

        public override bool OnMouseMove(MouseEventData data)
        {
            if (_Moving)
            {
                // Get new point from parameters
                double u = 0, v = 0;
                ElSLib.Parameters(_Sketch.Plane, data.PointOnPlane, ref u, ref v);
                var newPoint = new Pnt2d(u, v);

                // Calc delta
                MoveDelta = new Vec2d(newPoint.Coord.Subtracted(_MoveStartPoint.Coord));

                // Apply constraints
                ApplyConstraints();
                Snap();
                ApplyConstraints();

                // Calc new 3D center
                var newPos3D = ElSLib.Value(_Center2D.X + MoveDelta.X, _Center2D.Y + MoveDelta.Y, _Sketch.Plane);
                _GizmoPlane.SetLocation(newPos3D);
                Gizmo.SetComponent(_GizmoPlane);

                // Check for point merge candidates
                _MergePreviewMarkers.ForEach(m => m.Remove());
                _MergePreviewMarkers.Clear();
                foreach (var candidate in CheckMergePoints(MoveDelta))
                {
                    var point     = _Sketch.Points[candidate.Value];
                    var geomPoint = new Geom_CartesianPoint(point.X, point.Y, 0);
                    geomPoint.Transform(_Sketch.GetTransformation());
                    var marker = new Marker(WorkspaceController, Marker.Styles.Bitmap | Marker.Styles.Topmost, Marker.RingImage);
                    marker.Set(geomPoint);
                    marker.SetColor(Colors.Highlight);
                    _MergePreviewMarkers.Add(marker);
                }

                data.ForceReDetection = true;

                if (_Coord2DHudElement == null)
                {
                    _Coord2DHudElement = WorkspaceController.HudManager?.CreateElement <Coord2DHudElement>(this);
                    _Delta2DHudElement = WorkspaceController.HudManager?.CreateElement <Delta2DHudElement>(this);
                }
                if (_Coord2DHudElement != null)
                {
                    _Coord2DHudElement.CoordinateX = _Center2D.X + MoveDelta.X;
                    _Coord2DHudElement.CoordinateY = _Center2D.Y + MoveDelta.Y;
                }
                if (_Delta2DHudElement != null)
                {
                    _Delta2DHudElement.DeltaX = MoveDelta.X;
                    _Delta2DHudElement.DeltaY = MoveDelta.Y;
                }
            }

            return(base.OnMouseMove(data));
        }
Beispiel #3
0
        //--------------------------------------------------------------------------------------------------

        public override void OnPointsChanged(Dictionary <int, Pnt2d> points, Dictionary <int, SketchSegment> segments, Dictionary <int, int> markerCounts = default)
        {
            var point     = points[PointIndex];
            var geomPoint = new Geom_CartesianPoint(point.X, point.Y, 0);

            geomPoint.Transform(Transform);

            _Marker.Set(geomPoint);
        }
        //--------------------------------------------------------------------------------------------------

        public override void OnPointsChanged(Dictionary <int, Pnt2d> points, Dictionary <int, SketchSegment> segments, Dictionary <int, int> markerCounts = default)
        {
            var point     = points[PointIndex];
            var geomPoint = new Geom_CartesianPoint(point.X, point.Y, 0);

            geomPoint.Transform(Transform);

            _Marker.Set(geomPoint);
            _Marker.SetImage(SketchUtils.IsUnconnectedEndpoint(SketchEditorTool.Sketch, PointIndex) ? Marker.RectImage : Marker.BallImage);
        }
Beispiel #5
0
        public SketchEditorPointElement(SketchEditorTool sketchEditorTool, int pointIndex, Pnt2d point, Trsf transform, Pln plane)
            : base(sketchEditorTool, transform, plane)
        {
            var geomPoint = new Geom_CartesianPoint(point.X, point.Y, 0);

            geomPoint.Transform(Transform);
            _Marker = new Marker(SketchEditorTool.WorkspaceController, Marker.Styles.Bitmap | Marker.Styles.Topmost | Marker.Styles.Selectable, Marker.BallImage);
            _Marker.Set(geomPoint);

            PointIndex = pointIndex;
        }
Beispiel #6
0
        //--------------------------------------------------------------------------------------------------

        public void Set(Geom_CartesianPoint p)
        {
            _P = p;

            if (!_EnsureAisObject())
            {
                return;
            }

            _AisPoint.SetComponent(_P);
            AisContext.Redisplay(_AisPoint, false);
        }