Esempio n. 1
0
        public void DeleteElements()
        {
            var ctx = Context.Current;

            var sketch = TestGeomGenerator.CreateSketch(TestGeomGenerator.SketchType.Rectangle);
            var body   = TestGeomGenerator.CreateBody(sketch);

            ctx.ViewportController.ZoomFitAll();

            Assert.Multiple(() =>
            {
                var tool = new SketchEditorTool(sketch);
                ctx.WorkspaceController.StartTool(tool);
                Assert.IsFalse(ctx.WorkspaceController.CanDelete());

                // Delete Point
                ctx.SelectAt(411, 88);
                Assert.IsTrue(ctx.WorkspaceController.CanDelete());
                ctx.WorkspaceController.Delete();
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "DeleteElements01"));

                // Delete Segment
                ctx.SelectAt(90, 230);
                Assert.IsTrue(ctx.WorkspaceController.CanDelete());
                ctx.WorkspaceController.Delete();
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "DeleteElements02"));

                // Undo twice
                ctx.UndoHandler.DoUndo(2);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "DeleteElements03"));
            });
        }
Esempio n. 2
0
        public void MovePointSnap()
        {
            var ctx = Context.Current;

            var sketch = TestGeomGenerator.CreateSketch(TestGeomGenerator.SketchType.MultiCircle);
            var body   = TestGeomGenerator.CreateBody(sketch);

            ctx.ViewportController.ZoomFitAll();

            var tool = new SketchEditorTool(sketch);

            ctx.WorkspaceController.StartTool(tool);
            ctx.EditorState.SnappingEnabled    = true;
            ctx.EditorState.SnapToGridSelected = true;

            Assert.Multiple(() =>
            {
                // Select Point
                ctx.ClickAt(377, 122);
                // Move on progress
                ctx.MoveTo(390, 108);
                ctx.ViewportController.MouseDown();
                ctx.ViewportController.MouseMove(new Point(257, 83));
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "MovePointSnap01"));
                // Move released
                ctx.ViewportController.MouseUp(false);
                ctx.ClickAt(1, 1);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "MovePointSnap02"));

                // Cleanup
                tool.Stop();
            });
        }
Esempio n. 3
0
        public void RecenterGrid()
        {
            var ctx = Context.Current;

            var sketch = TestGeomGenerator.CreateSketch(TestGeomGenerator.SketchType.MultiCircle);
            var body   = TestGeomGenerator.CreateBody(sketch);

            ctx.ViewportController.ZoomFitAll();

            Assert.Multiple(() =>
            {
                var sketchEditor = new SketchEditorTool(sketch);
                ctx.WorkspaceController.StartTool(sketchEditor);

                Assert.IsTrue(SketchCommands.RecenterGrid.CanExecute());
                SketchCommands.RecenterGrid.Execute();
                Assert.IsInstanceOf <RecenterGridSketchTool>(sketchEditor.CurrentTool);

                ctx.MoveTo(200, 200);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "RecenterGrid01"));

                ctx.ClickAt(200, 200);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "RecenterGrid02"));

                // Elements selectable again
                ctx.ClickAt(288, 143);
                Assert.AreEqual(1, sketchEditor.SelectedSegments.Count);
            });
        }
Esempio n. 4
0
        public void RecenterGridSegmentTools()
        {
            // Check that segment creation tools also respect the recentered grid
            var ctx = Context.Current;

            var sketch = TestGeomGenerator.CreateSketch(TestGeomGenerator.SketchType.MultiCircle);
            var body   = TestGeomGenerator.CreateBody(sketch);

            ctx.ViewportController.ZoomFitAll();

            var sketchEditor = new SketchEditorTool(sketch);

            ctx.WorkspaceController.StartTool(sketchEditor);

            Assert.IsTrue(SketchCommands.RecenterGrid.CanExecute());
            SketchCommands.RecenterGrid.Execute();
            Assert.IsInstanceOf <RecenterGridSketchTool>(sketchEditor.CurrentTool);
            ctx.ClickAt(200, 200);

            Assert.Multiple(() =>
            {
                sketchEditor.StartSegmentCreation <SketchSegmentArcCenterCreator>();
                ctx.ClickAt(120, 120); // Center point
                ctx.MoveTo(120, 160);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "RecenterGridSegmentTools01"));
                ctx.ClickAt(120, 160); // Edge point 1
                ctx.ClickAt(160, 120); // Edge point 2
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "RecenterGridSegmentTools03"));
            });
        }
Esempio n. 5
0
        public void MovePointMerge()
        {
            var ctx = Context.Current;

            var sketch = TestGeomGenerator.CreateSketch(TestGeomGenerator.SketchType.MultiCircle);
            var body   = TestGeomGenerator.CreateBody(sketch);

            ctx.ViewportController.ZoomFitAll();

            var tool = new SketchEditorTool(sketch);

            ctx.WorkspaceController.StartTool(tool);

            // Select Point
            ctx.ClickAt(377, 122);
            Assume.That(ctx.WorkspaceController.CurrentToolAction is MoveSketchPointAction);
            // Move to MergePoint
            ctx.MoveTo(392, 116);
            ctx.WorkspaceController.MouseDown(ctx.ViewportController);
            ctx.MoveTo(265, 245);
            // Hilighted MergePoint
            AssertHelper.IsSameViewport(Path.Combine(_BasePath, "MovePointMerge01"));

            // End
            ctx.WorkspaceController.CancelTool(tool, false);
            // Check Cleanup
            AssertHelper.IsSameViewport(Path.Combine(_BasePath, "MovePointMerge02"));
        }
Esempio n. 6
0
        public void RecenterGridSnapRef()
        {
            // Check that RecenterGrid also updates the reference grid for snapping
            var ctx = Context.Current;

            var sketch = TestGeomGenerator.CreateSketch(TestGeomGenerator.SketchType.MultiCircle);
            var body   = TestGeomGenerator.CreateBody(sketch);

            ctx.ViewportController.ZoomFitAll();

            var sketchEditor = new SketchEditorTool(sketch);

            ctx.WorkspaceController.StartTool(sketchEditor);

            Assert.IsTrue(SketchCommands.RecenterGrid.CanExecute());
            SketchCommands.RecenterGrid.Execute();
            Assert.IsInstanceOf <RecenterGridSketchTool>(sketchEditor.CurrentTool);

            ctx.ClickAt(200, 200);

            SketchCommands.CreateSegment.Execute(SketchCommands.Segments.Line);
            ctx.EditorState.SnappingEnabled    = true;
            ctx.EditorState.SnapToGridSelected = true;
            ctx.MoveTo(44, 44);
            AssertHelper.IsSameViewport(Path.Combine(_BasePath, "RecenterGridSnapRef01"));
        }
Esempio n. 7
0
        public void SplitPeriodicSegment()
        {
            var ctx = Context.Current;

            var sketch = TestSketchGenerator.CreateSketch(TestSketchGenerator.SketchType.Circle);
            var body   = TestGeomGenerator.CreateBody(sketch);

            ctx.ViewportController.ZoomFitAll();

            var tool = new SketchEditorTool(sketch);

            ctx.WorkspaceController.StartTool(tool);

            Assert.Multiple(() =>
            {
                // Select Segment
                ctx.ClickAt(140, 90);

                // Start split tool
                var splitTool = new SplitElementSketchTool();
                tool.StartTool(splitTool);
                ctx.MoveTo(184, 103);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "SplitPeriodicSegment01"), 1.0);
                ctx.ClickAt(184, 103);

                // Cleanup
                tool.StopTool();
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "SplitPeriodicSegment02"), 1.0);
            });

            tool.Stop();
        }
Esempio n. 8
0
        public void RubberbandSelection()
        {
            var ctx = Context.Current;

            var sketch = TestGeomGenerator.CreateSketch(TestGeomGenerator.SketchType.MultiCircle);
            var body   = TestGeomGenerator.CreateBody(sketch);

            ctx.ViewportController.ZoomFitAll();

            var tool = new SketchEditorTool(sketch);

            ctx.WorkspaceController.StartTool(tool);

            ctx.MoveTo(170, 50);
            ctx.ViewportController.MouseDown();
            ctx.ViewportController.StartRubberbandSelection(ViewportController.RubberbandSelectionMode.Rectangle, false);
            ctx.MoveTo(450, 300);
            ctx.ViewportController.MouseUp(false);
            AssertHelper.IsSameViewport(Path.Combine(_BasePath, "RubberbandSelection01"));
            Assert.AreEqual(4, tool.SelectedPoints.Count);
            Assert.AreEqual(1, tool.SelectedSegments.Count);

            // Cleanup
            tool.Stop();
        }
Esempio n. 9
0
        public void DeletePointOfSegmentWithConstrainedPoint()
        {
            var ctx = Context.Current;

            var sketch = TestGeomGenerator.CreateSketch(TestGeomGenerator.SketchType.Circle, true);

            ctx.ViewportController.ZoomFitAll();
            var tool = new SketchEditorTool(sketch);

            ctx.WorkspaceController.StartTool(tool);

            // Create Constraint
            ctx.SelectAt(250, 250);
            Assert.IsTrue(tool.CanCreateConstraint <SketchConstraintFixed>());
            tool.CreateConstraint <SketchConstraintFixed>();

            // Delete Segment
            ctx.SelectAt(364, 135);
            Assert.AreEqual(1, tool.SelectedPoints.Count);
            Assert.IsTrue(tool.CanDelete());
            tool.Delete();
            Assert.AreEqual(0, sketch.Segments.Count);
            Assert.AreEqual(0, sketch.Points.Count);
            Assert.AreEqual(0, sketch.Constraints.Count);
            tool.StopTool();
        }
Esempio n. 10
0
        public void SelectPointAfterMove()
        {
            var ctx = Context.Current;

            var sketch = TestGeomGenerator.CreateSketch(TestGeomGenerator.SketchType.MultiCircle);
            var body   = TestGeomGenerator.CreateBody(sketch);

            ctx.ViewportController.ZoomFitAll();

            var tool = new SketchEditorTool(sketch);

            ctx.WorkspaceController.StartTool(tool);

            // Move point
            ctx.ClickAt(377, 122);
            Assert.AreEqual(1, tool.SelectedPoints.Count);
            ctx.MoveTo(392, 104);
            ctx.ViewportController.MouseDown();
            ctx.MoveTo(387, 141);
            ctx.ViewportController.MouseUp(false);

            // Return to idle
            ctx.ClickAt(1, 1);
            ctx.ViewportController.MouseDown();
            ctx.ViewportController.MouseUp(false);
            Assert.AreEqual(0, tool.SelectedPoints.Count);

            // Try to select point
            ctx.ClickAt(371, 160);
            Assert.AreEqual(1, tool.SelectedPoints.Count);

            // Cleanup
            tool.Stop();
        }
Esempio n. 11
0
        public void MovePoint()
        {
            var ctx = Context.Current;

            var sketch = TestGeomGenerator.CreateSketch(TestGeomGenerator.SketchType.MultiCircle);
            var body   = TestGeomGenerator.CreateBody(sketch);

            ctx.ViewportController.ZoomFitAll();

            var tool = new SketchEditorTool(sketch);

            ctx.WorkspaceController.StartTool(tool);

            Assert.Multiple(() =>
            {
                // MovePoints Idle
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "MovePoint01"));
                // Hilite Point
                ctx.ViewportController.MouseMove(new Point(377, 122));
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "MovePoint02"));
                // Select Point, move gizmo shown
                ctx.ViewportController.MouseDown();
                ctx.ViewportController.MouseUp(false);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "MovePoint03"));
                // Hilite Gizmo X-Axis
                ctx.ViewportController.MouseMove(new Point(459, 122));
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "MovePoint04"));
                // Hilite Gizmo Y-Axis
                ctx.ViewportController.MouseMove(new Point(377, 38));
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "MovePoint05"));
                // Hilite Gizmo XY-Plane
                ctx.ViewportController.MouseMove(new Point(392, 104));
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "MovePoint06"));
                // Move on progress
                ctx.ViewportController.MouseDown();
                ctx.ViewportController.MouseMove(new Point(387, 141));
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "MovePoint07"));
                // Move released
                ctx.ViewportController.MouseUp(false);
                ctx.ViewportController.MouseMove(new Point(1, 1));
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "MovePoint08"));
                // Return to idle
                ctx.ViewportController.MouseDown();
                ctx.ViewportController.MouseUp(false);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "MovePoint09"));

                // Cleanup
                tool.Stop();
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "MovePoint10"));
            });
        }
Esempio n. 12
0
        public void SplitSegmentUndo()
        {
            var ctx = Context.Current;

            var sketch = TestSketchGenerator.CreateSketch(TestSketchGenerator.SketchType.Rectangle);
            var body   = TestGeomGenerator.CreateBody(sketch);

            ctx.ViewportController.ZoomFitAll();

            Assert.IsFalse(ctx.UndoHandler.CanUndo);
            Assert.IsFalse(ctx.UndoHandler.CanRedo);

            var tool = new SketchEditorTool(sketch);

            ctx.WorkspaceController.StartTool(tool);

            Assert.Multiple(() =>
            {
                // Select Segment
                ctx.ClickAt(140, 90);

                // Start split tool
                var splitTool = new SplitElementSketchTool();
                tool.StartTool(splitTool);

                // Split
                ctx.ClickAt(150, 88);
                Assert.AreEqual(5, tool.Sketch.Segments.Count);
                Assert.IsTrue(ctx.UndoHandler.CanUndo);
                Assert.IsFalse(ctx.UndoHandler.CanRedo);

                // Undo
                ctx.UndoHandler.DoUndo(1);
                Assert.AreEqual(4, tool.Sketch.Segments.Count);
                Assert.IsFalse(ctx.UndoHandler.CanUndo);
                Assert.IsTrue(ctx.UndoHandler.CanRedo);

                // Redo
                ctx.UndoHandler.DoRedo(1);
                Assert.AreEqual(5, tool.Sketch.Segments.Count);
                Assert.IsTrue(ctx.UndoHandler.CanUndo);
                Assert.IsFalse(ctx.UndoHandler.CanRedo);

                // Cleanup
                tool.StopTool();
            });

            tool.Stop();
        }
Esempio n. 13
0
        public void SnapToGrid()
        {
            var ctx = Context.Current;

            var sketch = TestGeomGenerator.CreateSketch(TestGeomGenerator.SketchType.Rectangle);
            var body   = TestGeomGenerator.CreateBody(sketch);

            ctx.ViewportController.ZoomFitAll();

            Assert.Multiple(() =>
            {
                var sketchEditor = new SketchEditorTool(sketch);
                ctx.WorkspaceController.StartTool(sketchEditor);

                ctx.EditorState.SnappingEnabled      = true;
                ctx.EditorState.SnapToVertexSelected = false;
                ctx.EditorState.SnapToEdgeSelected   = false;
                ctx.Workspace.GridStep = 3.0;
                sketchEditor.StartSegmentCreation <SketchSegmentLineCreator>();

                // Do not snap to grid
                ctx.Workspace.GridType             = Workspace.GridTypes.Rectangular;
                ctx.Workspace.GridRotation         = 0;
                ctx.EditorState.SnapToGridSelected = false;
                ctx.MoveTo(60, 60);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "SnapToGrid01"));

                // Snap to rect grid
                ctx.EditorState.SnapToGridSelected = true;
                ctx.MoveTo(60, 60);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "SnapToGrid11"));
                ctx.Workspace.GridRotation = 20;
                ctx.MoveTo(162, 219);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "SnapToGrid12"));

                // Snap to circ grid
                ctx.Workspace.GridType             = Workspace.GridTypes.Circular;
                ctx.Workspace.GridDivisions        = 8;
                ctx.Workspace.GridRotation         = 0;
                ctx.EditorState.SnapToGridSelected = true;
                ctx.MoveTo(184, 185);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "SnapToGrid21"));
                ctx.Workspace.GridRotation = 20;
                ctx.MoveTo(182, 187);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "SnapToGrid22"));
            });
        }
Esempio n. 14
0
        public void RecenterGridSnapping()
        {
            var ctx = Context.Current;

            var sketch = TestGeomGenerator.CreateSketch(TestGeomGenerator.SketchType.Rectangle);
            var body   = TestGeomGenerator.CreateBody(sketch);

            ctx.ViewportController.ZoomFitAll();

            Assert.Multiple(() =>
            {
                var sketchEditor = new SketchEditorTool(sketch);
                ctx.WorkspaceController.StartTool(sketchEditor);

                ctx.Workspace.GridStep          = 3.0;
                ctx.EditorState.SnappingEnabled = true;
                var savedWorkingPlane           = ctx.WorkspaceController.Workspace.WorkingPlane;

                // Snap to grid
                ctx.EditorState.SnapToVertexSelected = false;
                ctx.EditorState.SnapToGridSelected   = true;
                SketchCommands.RecenterGrid.Execute();
                ctx.MoveTo(61, 61);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "RecenterGridSnapping01"));
                ctx.ClickAt(61, 61);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "RecenterGridSnapping02"));
                ctx.WorkspaceController.Workspace.WorkingPlane = savedWorkingPlane;

                // Snap to Vertex
                ctx.EditorState.SnapToGridSelected   = false;
                ctx.EditorState.SnapToVertexSelected = true;
                SketchCommands.RecenterGrid.Execute();
                ctx.MoveTo(409, 93);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "RecenterGridSnapping11"));
                ctx.ClickAt(409, 93);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "RecenterGridSnapping12"));
                // Snap to origin
                SketchCommands.RecenterGrid.Execute();
                ctx.MoveTo(252, 252);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "RecenterGridSnapping13"));
                ctx.ClickAt(252, 252);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "RecenterGridSnapping14"));
                ctx.EditorState.SnapToVertexSelected           = false;
                ctx.WorkspaceController.Workspace.WorkingPlane = savedWorkingPlane;
            });
        }
Esempio n. 15
0
        void _UpdateSketchEditTool(SketchEditorTool sketchEditorTool)
        {
            if (_CurrentSketchEditorTool != null)
            {
                _CurrentSketchEditorTool.PropertyChanged -= SketchEditorToolPropertyChanged;
                _CurrentSketchEditorTool = null;
                ActiveSketchTool         = "";
                SketchGroupVisible       = false;
            }

            if (sketchEditorTool != null)
            {
                SketchGroupVisible       = true;
                _CurrentSketchEditorTool = sketchEditorTool;
                _CurrentSketchEditorTool.PropertyChanged += SketchEditorToolPropertyChanged;
                RaisePropertyChanged(nameof(SketchClipPlaneEnabled));
            }
        }
Esempio n. 16
0
        public void DuplicateElements()
        {
            var ctx = Context.Current;

            var sketch = TestGeomGenerator.CreateSketch(TestGeomGenerator.SketchType.Rectangle);
            var body   = TestGeomGenerator.CreateBody(sketch);

            ctx.ViewportController.ZoomFitAll();

            var tool = new SketchEditorTool(sketch);

            ctx.WorkspaceController.StartTool(tool);
            Assert.IsFalse(ctx.WorkspaceController.CanDuplicate());

            // Select
            ctx.SelectAt(254, 88);
            ctx.SelectAt(411, 236, true);
            ctx.SelectAt(387, 115, true);
            Assume.That(tool.SelectedSegments.Count, Is.EqualTo(2));

            // Do it
            Assert.Multiple(() =>
            {
                Assert.IsTrue(ctx.WorkspaceController.CanDuplicate());
                ctx.WorkspaceController.Duplicate();

                // Check results
                Assert.AreEqual(7, sketch.Points.Count);
                Assert.AreEqual(6, sketch.Segments.Count);
                Assert.AreEqual(5, sketch.Constraints.Count);
                Assert.AreEqual(3, tool.SelectedPoints.Count);
                Assert.AreEqual(2, tool.SelectedSegments.Count);
                Assert.That(tool.SelectedPoints.SequenceEqual(new[] { 4, 5, 6 }));
                Assert.That(tool.SelectedSegmentIndices.SequenceEqual(new[] { 4, 5 }));
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "DuplicateElements01"));

                // Try move
                ctx.MoveTo(328, 170);
                ctx.ViewportController.MouseDown();
                ctx.MoveTo(350, 150);
                ctx.ViewportController.MouseUp(false);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "DuplicateElements02"));
            });
        }
Esempio n. 17
0
        public void CopyToAndPasteFromClipboard()
        {
            var ctx       = Context.Current;
            var clipboard = TestClipboard.Init();

            var sketch = TestSketchGenerator.CreateSketch(TestSketchGenerator.SketchType.Rectangle);
            var body   = TestGeomGenerator.CreateBody(sketch);

            ctx.ViewportController.ZoomFitAll();

            var tool = new SketchEditorTool(sketch);

            ctx.WorkspaceController.StartTool(tool);
            Assert.IsFalse(ctx.WorkspaceController.CanCopyToClipboard());

            // Select
            ctx.SelectAt(254, 88);
            ctx.SelectAt(411, 236, true);
            ctx.SelectAt(387, 115, true);
            Assume.That(tool.SelectedSegments.Count, Is.EqualTo(2));

            // Do it
            Assert.IsTrue(ctx.WorkspaceController.CanCopyToClipboard());
            ctx.WorkspaceController.CopyToClipboard();
            Assert.That(clipboard.ContainsData("Macad.SketchContent.1"));
            ctx.WorkspaceController.PasteFromClipboard();

            Assert.AreEqual(7, sketch.Points.Count);
            Assert.AreEqual(6, sketch.Segments.Count);
            Assert.AreEqual(5, sketch.Constraints.Count);
            Assert.AreEqual(3, tool.SelectedPoints.Count);
            Assert.AreEqual(2, tool.SelectedSegments.Count);
            Assert.That(tool.SelectedPoints.SequenceEqual(new[] { 4, 5, 6 }));
            Assert.That(tool.SelectedSegmentIndices.SequenceEqual(new[] { 4, 5 }));
            AssertHelper.IsSameViewport(Path.Combine(_BasePath, "DuplicateElements01"), 1.0);

            // Try move
            ctx.MoveTo(328, 170);
            ctx.ViewportController.MouseDown();
            ctx.MoveTo(350, 150);
            ctx.ViewportController.MouseUp(false);
            AssertHelper.IsSameViewport(Path.Combine(_BasePath, "DuplicateElements02"), 1.0);
        }
Esempio n. 18
0
        public void KeepSelectionAcrossSelectionContices()
        {
            var ctx    = Context.Current;
            var sketch = TestSketchGenerator.CreateRectangle(10, 19);
            var body   = sketch.Body;

            ctx.WorkspaceController.Selection.SelectEntity(body);
            Assert.AreEqual(body, ctx.WorkspaceController.Selection.SelectedEntities.FirstOrDefault());

            var sketchEditTool = new SketchEditorTool(sketch);

            ctx.WorkspaceController.StartTool(sketchEditTool);
            Assert.IsInstanceOf <SketchEditorTool>(ctx.WorkspaceController.CurrentTool);
            Assert.AreEqual(0, ctx.WorkspaceController.Selection.SelectedEntities.Count);

            ctx.WorkspaceController.CancelTool(sketchEditTool, false);
            Assert.IsNull(ctx.WorkspaceController.CurrentTool);
            Assert.AreEqual(body, ctx.WorkspaceController.Selection.SelectedEntities.FirstOrDefault());
        }
Esempio n. 19
0
        public void RestoreWorkingContextWithTopView()
        {
            var ctx = Context.Current;
            var viewportParameterSet = InteractiveContext.Current.Parameters.Get <ViewportParameterSet>();

            viewportParameterSet.ShowViewCube = true;

            // Create sketch
            ctx.WorkspaceController.StartTool(new CreateSketchTool(CreateSketchTool.CreateMode.WorkplaneXY));
            var sketchEditTool = ctx.WorkspaceController.CurrentTool as SketchEditorTool;

            Assert.That(sketchEditTool, Is.Not.Null);
            var sketch = sketchEditTool.Sketch;

            // Fill in anything
            sketchEditTool.StartSegmentCreation <SketchSegmentCircleCreator>();
            ctx.ClickAt(250, 250); // Center point
            ctx.ClickAt(100, 250); // Rim point

            // Exit editor
            sketchEditTool.Stop();

            // Select predefined topview
            ctx.WorkspaceController.ActiveViewControlller.SetPredefinedView(ViewportController.PredefinedViews.Top);
            Thread.Sleep(500);
            ctx.WorkspaceController.Invalidate(forceRedraw: true);
//            AssertHelper.IsSameViewport(Path.Combine(_BasePath, "RestoreWorkingContext22"), 1.0);

            // Enter editor
            sketchEditTool = new SketchEditorTool(sketch);
            ctx.WorkspaceController.StartTool(sketchEditTool);

            // move the viewport
            ctx.MoveTo(250, 250);
            ctx.ViewportController.MouseMove(new Point(150, 250), ViewportController.MouseMoveMode.Panning);

            // Leave editor
            sketchEditTool.Stop();

            AssertHelper.IsSameViewport(Path.Combine(_BasePath, "RestoreWorkingContext21"), 1.0);
        }
Esempio n. 20
0
        public void SplitPoint()
        {
            var ctx = Context.Current;

            var sketch = TestGeomGenerator.CreateSketch(TestGeomGenerator.SketchType.Rectangle);
            var body   = TestGeomGenerator.CreateBody(sketch);

            ctx.ViewportController.ZoomFitAll();

            var tool = new SketchEditorTool(sketch);

            ctx.WorkspaceController.StartTool(tool);

            Assert.Multiple(() =>
            {
                // Select Segment
                ctx.ClickAt(140, 90);

                // Start split tool
                var splitTool = new SplitElementSketchTool();
                tool.StartTool(splitTool);
                ctx.MoveTo(88, 88);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "SplitPoint01"));
                ctx.ClickAt(88, 88);

                // Cleanup
                tool.StopTool();
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "SplitPoint02"));

                // Move
                ctx.ClickAt(88, 88);
                ctx.MoveTo(95, 80);
                ctx.ViewportController.MouseDown();
                ctx.MoveTo(150, 40);
                ctx.ViewportController.MouseUp(false);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "SplitPoint03"));
            });

            tool.Stop();
        }
Esempio n. 21
0
        public void ToggleClipPlane()
        {
            var ctx = Context.Current;

            // The imprint we want to edit
            var imprint = TestGeomGenerator.CreateImprint();
            var sketch  = imprint.Sketch;

            imprint.Make(Shape.MakeFlags.None);

            // A box is in the view, which shall be clipped
            var box = TestGeomGenerator.CreateBox().Body;

            box.Position = new Pnt(0, 0, 15);

            Assert.Multiple(() =>
            {
                var sketchEditTool = new SketchEditorTool(sketch);
                ctx.WorkspaceController.StartTool(sketchEditTool);
                ctx.ViewportController.ZoomFitAll();
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "ToggleClipPlane01"));

                sketchEditTool.EnableClipPlane(false);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "ToggleClipPlane02"));

                sketchEditTool.EnableClipPlane(true);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "ToggleClipPlane01"));

                // Setting saved?
                sketchEditTool.EnableClipPlane(false);
                ctx.WorkspaceController.CancelTool(ctx.WorkspaceController.CurrentTool, false);
                sketchEditTool = new SketchEditorTool(sketch);
                ctx.WorkspaceController.StartTool(sketchEditTool);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "ToggleClipPlane02"));

                sketchEditTool.EnableClipPlane(true);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "ToggleClipPlane01"));
            });
        }
Esempio n. 22
0
        public void EmptySketchMarker()
        {
            var ctx = Context.Current;

            ctx.WorkspaceController.StartTool(new CreateSketchTool(CreateSketchTool.CreateMode.WorkplaneXY));
            var sketchEditTool = ctx.WorkspaceController.CurrentTool as SketchEditorTool;

            Assert.That(sketchEditTool, Is.Not.Null);
            var sketch = sketchEditTool.Sketch;

            Assert.Multiple(() =>
            {
                // In Editor, no marker
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "EmptySketchMarker01"), 1.0);
                sketchEditTool.Stop();

                // Out of Editor, marker
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "EmptySketchMarker02"), 1.0);

                // Enter editor, no marker
                sketchEditTool = new SketchEditorTool(sketch);
                ctx.WorkspaceController.StartTool(sketchEditTool);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "EmptySketchMarker01"), 1.0);

                // Create Circle, no marker
                sketchEditTool.StartSegmentCreation <SketchSegmentCircleCreator>();
                ctx.ClickAt(200, 200); // Center point
                ctx.MoveTo(100, 100);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "EmptySketchMarker03"), 1.0);
                ctx.ClickAt(100, 250); // Rim point
                ctx.MoveTo(50, 50);    // Move crsr out of the way
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "EmptySketchMarker04"), 1.0);

                // Leave editor, no marker
                sketchEditTool.Stop();
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "EmptySketchMarker05"), 1.0);
            });
        }
Esempio n. 23
0
        public void CutToAndPasteFromClipboard()
        {
            var ctx       = Context.Current;
            var clipboard = TestClipboard.Init();

            var sketch = TestGeomGenerator.CreateSketch(TestGeomGenerator.SketchType.Rectangle);
            var body   = TestGeomGenerator.CreateBody(sketch);

            ctx.ViewportController.ZoomFitAll();

            var tool = new SketchEditorTool(sketch);

            ctx.WorkspaceController.StartTool(tool);
            Assert.IsFalse(ctx.WorkspaceController.CanCopyToClipboard());
            Assert.IsFalse(ctx.WorkspaceController.CanDelete());

            // Select
            ctx.SelectAt(254, 88);
            ctx.SelectAt(411, 236, true);
            ctx.SelectAt(387, 115, true);
            Assume.That(tool.SelectedSegments.Count, Is.EqualTo(2));

            // Do it
            Assert.IsTrue(ctx.WorkspaceController.CanCopyToClipboard());
            Assert.IsTrue(ctx.WorkspaceController.CanDelete());
            ctx.WorkspaceController.CopyToClipboard();
            ctx.WorkspaceController.Delete();
            Assert.That(clipboard.ContainsData("Macad.SketchContent.1"));
            ctx.WorkspaceController.PasteFromClipboard();

            Assert.AreEqual(6, sketch.Points.Count);
            Assert.AreEqual(4, sketch.Segments.Count);
            Assert.AreEqual(2, sketch.Constraints.Count);
            Assert.AreEqual(3, tool.SelectedPoints.Count);
            Assert.AreEqual(2, tool.SelectedSegments.Count);
        }
Esempio n. 24
0
        //--------------------------------------------------------------------------------------------------

        #endregion

        public SketchPointAction(SketchEditorTool sketchEditorTool)
            : base(sketchEditorTool)
        {
            _SketchEditorTool = sketchEditorTool;
            EnablePointMerge  = true;
        }
Esempio n. 25
0
        //--------------------------------------------------------------------------------------------------

        public SelectSketchElementAction(SketchEditorTool sketchEditorTool)
            : base(sketchEditorTool)
        {
            _SketchEditorTool = sketchEditorTool;
        }