Exemplo n.º 1
0
        public void BoxByVertex()
        {
            var box    = TestGeomGenerator.CreateBox();
            var face   = box.GetSubshapeReference(SubshapeType.Face, 1);
            var vertex = box.GetSubshapeReference(SubshapeType.Vertex, 5);
            var taper  = Taper.Create(box.Body, face, vertex, 22.5);

            // Edge orientation is Rev, Fwd
            Assert.IsTrue(taper.Make(Shape.MakeFlags.None));
            AssertHelper.IsSameModel(taper, Path.Combine(_BasePath, "BoxByVertex1"));

            // Edge orientation is Rev, Rev
            taper.BaseEdgeOrVertex = box.GetSubshapeReference(SubshapeType.Vertex, 4);
            Assert.IsTrue(taper.Make(Shape.MakeFlags.None));
            AssertHelper.IsSameModel(taper, Path.Combine(_BasePath, "BoxByVertex2"));

            // Edge orientation is Rev, Fwd
            taper.BaseEdgeOrVertex = box.GetSubshapeReference(SubshapeType.Vertex, 6);
            Assert.IsTrue(taper.Make(Shape.MakeFlags.None));
            AssertHelper.IsSameModel(taper, Path.Combine(_BasePath, "BoxByVertex3"));

            // Edge orientation is Fwd, Fwd
            taper.BaseEdgeOrVertex = box.GetSubshapeReference(SubshapeType.Vertex, 7);
            Assert.IsTrue(taper.Make(Shape.MakeFlags.None));
            AssertHelper.IsSameModel(taper, Path.Combine(_BasePath, "BoxByVertex4"));
        }
Exemplo n.º 2
0
        public void BoxByEdgeAdd()
        {
            var box   = TestGeomGenerator.CreateBox();
            var face  = box.GetSubshapeReference(SubshapeType.Face, 1);
            var edge  = box.GetSubshapeReference(SubshapeType.Edge, 4);
            var taper = Taper.Create(box.Body, face, edge, -22.5);

            Assert.IsTrue(taper.Make(Shape.MakeFlags.None));
            AssertHelper.IsSameModel(taper, Path.Combine(_BasePath, "BoxByEdgeAdd"));
        }
Exemplo n.º 3
0
        public void ConcaveVertex()
        {
            var body = TestData.GetBodyFromBRep(Path.Combine(_BasePath, "BoxJointShape_Source.brep"));

            var face   = body.Shape.GetSubshapeReference(SubshapeType.Face, 13);
            var vertex = body.Shape.GetSubshapeReference(SubshapeType.Vertex, 16);
            var taper  = Taper.Create(body, face, vertex, 3.0);

            Assert.IsTrue(taper.Make(Shape.MakeFlags.None));
            AssertHelper.IsSameModel(taper, Path.Combine(_BasePath, "ConcaveVertex"));
        }
Exemplo n.º 4
0
        public void CylinderSurface()
        {
            var cylinder = Cylinder.Create(10, 10);

            Body.Create(cylinder);

            var face  = cylinder.GetSubshapeReference(SubshapeType.Face, 0);
            var edge  = cylinder.GetSubshapeReference(SubshapeType.Edge, 2);
            var taper = Taper.Create(cylinder.Body, face, edge, 22.5);

            Assert.IsTrue(taper.Make(Shape.MakeFlags.None));
            AssertHelper.IsSameModel(taper, Path.Combine(_BasePath, "CylinderSurface"));
        }
Exemplo n.º 5
0
        public void NoAutoFaceDetection()
        {
            Context.InitWithView(500);
            var ctx = Context.Current;
            // Create a shape with a planar face, but without an opposite face
            var cylinder = Cylinder.Create(10, 10);
            var body     = Body.Create(cylinder);
            var face     = cylinder.GetSubshapeReference(SubshapeType.Face, 1);
            var edge     = cylinder.GetSubshapeReference(SubshapeType.Edge, 0);
            var taper    = Taper.Create(cylinder.Body, face, edge, 22.5);

            taper.BaseParameter = 0.0;
            Assert.IsTrue(taper.Make(Shape.MakeFlags.None));

            ctx.Document.AddChild(body);
            ctx.ViewportController.ZoomFitAll();

            // Start tool
            ctx.WorkspaceController.Selection.SelectEntity(body);
            Assert.IsTrue(ToolboxCommands.CreateEtchingMask.CanExecute());
            ToolboxCommands.CreateEtchingMask.Execute();

            var tool = ctx.WorkspaceController.CurrentTool as EtchingMaskEditTool;

            Assert.IsNotNull(tool);
            Assert.IsNotNull(ctx.WorkspaceController.CurrentToolAction);

            // Check selection filter
            ctx.MoveTo(150, 300);
            AssertHelper.IsSameViewport(Path.Combine(_BasePath, "NoAutoFaceDetection02"));

            ctx.MoveTo(250, 250);
            AssertHelper.IsSameViewport(Path.Combine(_BasePath, "NoAutoFaceDetection01"));

            ctx.ClickAt(250, 250);
            Assert.IsNull(ctx.WorkspaceController.CurrentToolAction);

            // Component should exist, even if it can not work correctly
            var component = body.FindComponent <EtchingMaskComponent>();

            Assert.IsNotNull(component);
            Assert.IsFalse(component.IsValid);
        }
Exemplo n.º 6
0
        public void CurvedEdges()
        {
            var cylinder = Cylinder.Create(10, 10);

            cylinder.SegmentAngle = 270;
            Body.Create(cylinder);

            var face  = cylinder.GetSubshapeReference(SubshapeType.Face, 1);
            var edge  = cylinder.GetSubshapeReference(SubshapeType.Edge, 0);
            var taper = Taper.Create(cylinder.Body, face, edge, 22.5);

            Assert.IsTrue(taper.Make(Shape.MakeFlags.None));
            AssertHelper.IsSameModel(taper, Path.Combine(_BasePath, "CurvedEdges1"));

            edge = cylinder.GetSubshapeReference(SubshapeType.Edge, 4);
            taper.BaseEdgeOrVertex = edge;
            Assert.IsTrue(taper.Make(Shape.MakeFlags.None));
            AssertHelper.IsSameModel(taper, Path.Combine(_BasePath, "CurvedEdges2"));
        }
        public void ErrorMarker()
        {
            var ctx = Context.Current;

            var box   = TestGeomGenerator.CreateBox();
            var face  = box.GetSubshapeReference(SubshapeType.Face, 1);
            var edge  = box.GetSubshapeReference(SubshapeType.Edge, 4);
            var taper = Taper.Create(box.Body, face, edge, 22.5);

            ctx.ViewportController.ZoomFitAll();

            Assert.Multiple(() =>
            {
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "ErrorMarkerInvisible"));

                taper.Angle = 80;
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "ErrorMarkerVisible"));

                taper.Angle = 22.5;
                AssertHelper.IsSameViewport(Path.Combine(_BasePath, "ErrorMarkerInvisible"));
            });
        }
Exemplo n.º 8
0
        //--------------------------------------------------------------------------------------------------

        void _OnEdgeOrVertexSelected(SelectSubshapeAction selectAction)
        {
            if (selectAction.SelectedSubshapeType == SubshapeTypes.Edge ||
                selectAction.SelectedSubshapeType == SubshapeTypes.Vertex)
            {
                selectAction.Stop();
                Stop();

                var faceRef = _TargetShape.GetSubshapeReference(_TargetBrep, _TargetFace);
                if (faceRef == null)
                {
                    Messages.Error("A subshape reference could not be produced for this face.");
                    Stop();
                    return;
                }

                var baseSubshapeRef = _TargetShape.GetSubshapeReference(_TargetBrep, selectAction.SelectedSubshape);
                if (baseSubshapeRef == null)
                {
                    Messages.Error("A subshape reference could not be produced for the selected edge or vertex.");
                    return;
                }

                // Calculate parameter on the edge, if any
                double?edgeParam = null;
                if (selectAction.SelectedSubshapeType == SubshapeTypes.Edge)
                {
                    edgeParam = _FindEdgeParam(selectAction.SelectedSubshape.ToEdge(), selectAction);
                }

                // Create or update
                if (_Mode == ToolMode.CreateNew)
                {
                    // Create new
                    var taper = Taper.Create(_TargetBody, faceRef, baseSubshapeRef, 10.0);
                    if (taper != null)
                    {
                        if (edgeParam.HasValue)
                        {
                            taper.BaseParameter = edgeParam.Value;
                        }
                        InteractiveContext.Current.UndoHandler.Commit();
                        InteractiveContext.Current.WorkspaceController.Selection.SelectEntity(_TargetBody);
                    }
                }
                else if (_Mode == ToolMode.Reselect)
                {
                    // Reselected face and base subshape
                    _TaperToChange.Face             = faceRef;
                    _TaperToChange.BaseEdgeOrVertex = baseSubshapeRef;
                    if (edgeParam.HasValue)
                    {
                        _TaperToChange.BaseParameter = edgeParam.Value;
                    }
                    else
                    {
                        _TaperToChange.CalculateBaseParameter(0.5);
                    }
                    _TaperToChange.Invalidate();
                    InteractiveContext.Current.UndoHandler.Commit();
                }
            }
        }