Exemplo n.º 1
0
        public void SplitPoint()
        {
            var ctx = Context.Current;

            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.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"), 1.0);
                ctx.ClickAt(88, 88);

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

                // 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"), 1.0);
            });

            tool.Stop();
        }
        public void SelectSections()
        {
            var ctx = Context.Current;

            var body1 = TestSketchGenerator.CreateRectangle(5.0, 5.0).Body;

            var body2 = TestSketchGenerator.CreateRectangle(5.0, 5.0).Body;

            body2.Position = body2.Position.Translated(new Vec(0, 0, 10.0));
            body2.Rotation = new Quaternion(20.0.ToRad(), 20.0.ToRad(), 0.0);

            var body3 = TestSketchGenerator.CreateRectangle(5.0, 5.0).Body;

            body3.Position = body3.Position.Translated(new Vec(0, 5.0, 20.0));
            body3.Rotation = new Quaternion(40.0.ToRad(), 40.0.ToRad(), 0.0);

            Assert.Multiple(() =>
            {
                ctx.ViewportController.ZoomFitAll();
                // Select First
                ctx.SelectAt(176, 405);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "SelectSections00"));

                // Select Second
                ctx.WorkspaceController.StartTool(new CreateLoftTool());
                ctx.SelectAt(161, 300);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "SelectSections01"));

                // Select Third
                ctx.SelectAt(349, 164);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "SelectSections02"));

                // Finish
                ctx.WorkspaceController.CancelTool(ctx.WorkspaceController.CurrentTool, false);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "SelectSections03"));
                Assert.IsNull(ctx.WorkspaceController.CurrentTool);
            });
        }
Exemplo n.º 3
0
        public void CappingModeNoneWithCircle()
        {
            // For OCCT_30055, the join type must be Intersect.

            var body1 = TestSketchGenerator.CreateRectangle(5.0, 5.0).Body;

            var body2 = TestSketchGenerator.CreateCircleWithArcs(3.0, 4).Body;

            body2.Position = body2.Position.Translated(new Vec(0, 0, 10.0));
            body2.Rotation = new Quaternion(20.0.ToRad(), 20.0.ToRad(), 0.0);

            var body3 = TestSketchGenerator.CreateRectangle(5.0, 5.0).Body;

            body3.Position = body3.Position.Translated(new Vec(0, 5.0, 20.0));
            body3.Rotation = new Quaternion(40.0.ToRad(), 40.0.ToRad(), 0.0);

            var loft = Loft.Create(body1, new[] { new BodyShapeOperand(body2), new BodyShapeOperand(body3) });

            loft.StartCapping = Loft.CappingMode.None;
            loft.EndCapping   = Loft.CappingMode.None;
            Assert.IsTrue(loft.Make(Shape.MakeFlags.None));
            AssertHelper.IsSameModel(loft, Path.Combine(_BasePath, "CappingModeNoneWithCircle"));
        }
        public void SelectionFilter()
        {
            var ctx = Context.Current;

            var body1 = TestSketchGenerator.CreateRectangle(5.0, 5.0).Body;

            var body2 = TestSketchGenerator.CreateRectangle(5.0, 5.0).Body;

            body2.Position = body2.Position.Translated(new Vec(0, 0, 10.0));
            body2.Rotation = new Quaternion(20.0.ToRad(), 20.0.ToRad(), 0.0);

            var body3 = TestGeomGenerator.CreateBox().Body;

            body3.Position = body3.Position.Translated(new Vec(0, 20, 0.0));

            Assert.Multiple(() =>
            {
                ctx.ViewportController.ZoomFitAll();

                // Select First
                ctx.SelectAt(114, 261);
                ctx.WorkspaceController.StartTool(new CreateLoftTool());

                // Move to sketch, it should highlight
                ctx.MoveTo(216, 160);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "SelectionFilter00"));

                // Move to solid, it should not highlight
                ctx.MoveTo(350, 300);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "SelectionFilter01"));

                // Move to self, it should not highlight
                ctx.MoveTo(114, 261);
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "SelectionFilter01"));
            });
        }
Exemplo n.º 5
0
        public void CutToAndPasteFromClipboard()
        {
            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());
            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);
        }
Exemplo n.º 6
0
        public void ExtrudeFromNotSelectable()
        {
            var ctx = Context.Current;

            var sketch = TestSketchGenerator.CreateSketch();
            var body   = TestGeomGenerator.CreateBody(sketch, new Pnt(10, 10, 0));

            ctx.WorkspaceController.Selection.SelectEntity(body);
            ctx.ViewportController.ZoomFitAll();
            ctx.WorkspaceController.Invalidate(false, true);

            // Create Extrude from sketch
            var tool = new CreateExtrudeTool(body);

            Assert.That(ctx.WorkspaceController.StartTool(tool));
            Assert.That(ctx.WorkspaceController.CurrentTool, Is.Null);
            ctx.WorkspaceController.Invalidate(false, true);

            // Make sure that the whole shape is selectable
            ctx.WorkspaceController.Selection.SelectEntity(null);
            ctx.WorkspaceController.Invalidate(false, true);
            ctx.SelectAt(250, 250);
            Assert.AreEqual(1, ctx.WorkspaceController.Selection.SelectedEntities.Count);
        }
Exemplo n.º 7
0
        public void OpenWiresRect()
        {
            // For OCCT_30054, the join type must be Intersect.

            // Remove first segment to create open wires
            var sketch1 = TestSketchGenerator.CreateRectangle(5.0, 5.0);

            sketch1.DeleteSegment(sketch1.Segments[0]);
            var body1 = sketch1.Body;

            var sketch2 = TestSketchGenerator.CreateRectangle(4.0, 4.0);

            sketch2.DeleteSegment(sketch2.Segments[0]);
            var body2 = sketch2.Body;

            body2.Position = body2.Position.Translated(new Vec(0, 0, 10.0));
            body2.Rotation = new Quaternion(20.0.ToRad(), 20.0.ToRad(), 0.0);

            var sketch3 = TestSketchGenerator.CreateRectangle(5.0, 5.0);

            sketch3.DeleteSegment(sketch3.Segments[0]);
            var body3 = sketch3.Body;

            body3.Position = body3.Position.Translated(new Vec(0, 5.0, 20.0));
            body3.Rotation = new Quaternion(40.0.ToRad(), 40.0.ToRad(), 0.0);

            var loft = Loft.Create(body1, new[] { new BodyShapeOperand(body2), new BodyShapeOperand(body3) });

            loft.ThickenDirection = Loft.Direction.Outwards;
            Assert.IsTrue(loft.Make(Shape.MakeFlags.None));
            AssertHelper.IsSameModel(loft, Path.Combine(_BasePath, "OpenWiresRect_Out"));

            loft.ThickenDirection = Loft.Direction.Inwards;
            Assert.IsTrue(loft.Make(Shape.MakeFlags.None));
            AssertHelper.IsSameModel(loft, Path.Combine(_BasePath, "OpenWiresRect_In"));
        }