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