public void PointOnPointTest() { var document = TestUtils.DefaultsSetup(); var sketch = new SketchCreator(document); var sketchNode = sketch.BuildSketchNode(); document.Transact(); var firstPoint = sketch.GetPoint(new Point3D(3, 1, 0)); var secondPoint = sketch.GetPoint(new Point3D(4, 2, 0)); document.Commit("Draw"); var constraintBuilder = new NodeBuilder(document, Constraint2DNames.PointOnPointFunction); constraintBuilder[0].Reference = firstPoint.Node; constraintBuilder[1].Reference = secondPoint.Node; var docSolverAdapter = new DocumentToSolverAdapter(document, sketchNode); docSolverAdapter.ImpactedNodes(firstPoint.Node, -1); docSolverAdapter.Solve(); firstPoint = new NodeBuilder(firstPoint.Node); secondPoint = new NodeBuilder(secondPoint.Node); Assert.IsTrue(Math.Abs(firstPoint[1].TransformedPoint3D.X - secondPoint[1].TransformedPoint3D.X) < 0.01, "invalid x axis values"); Assert.IsTrue(Math.Abs(firstPoint[1].TransformedPoint3D.Y - secondPoint[1].TransformedPoint3D.Y) < 0.01, "invalid y axis values"); }
public static Node AddEllipseToNode(Document document, Point3D center, Point3D point2, Point3D point3) { var sketchCreator = new SketchCreator(document); var builder = sketchCreator.CreateBuilder(FunctionNames.Ellipse); builder[0].Reference = sketchCreator.GetPoint(center).Node; builder[1].Reference = sketchCreator.GetPoint(point2).Node; builder[2].Reference = sketchCreator.GetPoint(point3).Node; return(!builder.ExecuteFunction() ? null : builder.Node); }
public static Node AddArcToNode(Document document, Point3D point1, Point3D point2, Point3D point3) { var sketchCreator = new SketchCreator(document); var builder = new NodeBuilder(document, FunctionNames.Arc); builder[0].Reference = sketchCreator.GetPoint(point1).Node; builder[1].Reference = sketchCreator.GetPoint(point2).Node; builder[2].Reference = sketchCreator.GetPoint(point3).Node; return(!builder.ExecuteFunction() ? null : builder.Node); }
private NodeBuilder BuildArc(Document document, Point3D centre, Point3D point1, Point3D point2) { var sketchCreator = new SketchCreator(document); var builder = new NodeBuilder(document, FunctionNames.Arc); // center builder[0].Reference = sketchCreator.GetPoint(centre).Node; builder[1].Reference = sketchCreator.GetPoint(point1).Node; builder[2].Reference = sketchCreator.GetPoint(point2).Node; builder.ExecuteFunction(); return(builder); }
private NodeBuilder BuildLineInDocument(Document previewDocument, Point3D firstPoint, Point3D lastPoint) { var sketchBuilder = new SketchCreator(Document); var firstPointBuilder = sketchBuilder.GetPoint(firstPoint).Node; var secondPointBuilderNode = sketchBuilder.GetPoint(lastPoint).Node; var builder = new NodeBuilder(previewDocument, FunctionNames.LineTwoPoints); builder[0].Reference = firstPointBuilder; builder[1].Reference = secondPointBuilderNode; //builder.EnableSelection = false; builder.ExecuteFunction(); return(builder); }
private void ConeBaseCircle(bool updateShape) { if (Dependency.Steps[1].Data is Mouse3DPosition) { // If point received from mouse Dependency.Steps[0].Get <gpAx1>().Direction = Dependency.Steps[1].Get <Mouse3DPosition>().Axis.Direction; var currentPoint = Dependency.Steps[1].Get <Mouse3DPosition>().Point.GpPnt; Dependency.Steps[1].Data = Dependency.Steps[0].Get <gpAx1>().Location.Distance(currentPoint); } else if (Dependency.Steps[1].Data is Point3D) { var currentPoint = Dependency.Steps[1].Get <Point3D>().GpPnt; Dependency.Steps[1].Data = Dependency.Steps[0].Get <gpAx1>().Location.Distance(currentPoint); } var sketchCreator = new SketchCreator(Dependency.AnimationDocument); var center = sketchCreator.GetPoint(new Point3D((Dependency.Steps[0].Data as gpAx1).Location)).Node; sketchCreator = new SketchCreator(Dependency.AnimationDocument); var builder = new NodeBuilder(Dependency.AnimationDocument, FunctionNames.Circle); builder[0].Reference = center; builder[1].Real = Dependency.Steps[1].Get <double>(); builder.EnableSelection = false; builder.Color = Color.Red; builder.DisplayMode = AISDisplayMode.AIS_WireFrame; builder.Transparency = 0.2; builder.ExecuteFunction(); Dependency.AnimationNodeBuilder = builder; }
protected NodeBuilder GetSketchProjectedNode(Document document, Point3D point) { var sketchBuilder = new SketchCreator(document); //var projectedPoint = sketchBuilder.Project(point); //Ensure.IsNotNull(projectedPoint); return(sketchBuilder.GetPoint(point)); }
public static Node AddCircleToNode(Document document, Point3D coordinate, double radius) { var sketchCreator = new SketchCreator(document); var builder = new NodeBuilder(document, FunctionNames.Circle); builder[0].Reference = sketchCreator.GetPoint(coordinate).Node; builder[1].Real = radius; return(!builder.ExecuteFunction() ? null : builder.Node); }
public static NodeBuilder AddLineToNode(Document document, Point3D point1, Point3D point2, ObjectVisibility visibility = ObjectVisibility.ToBeDisplayed) { var sketchCreator = new SketchCreator(document); var firstPointBuilder = sketchCreator.GetPoint(point1); var secondPointBuilder = sketchCreator.GetPoint(point2); firstPointBuilder.Visibility = visibility; secondPointBuilder.Visibility = visibility; var firstPoint = firstPointBuilder.Node; var secondPoint = secondPointBuilder.Node; var builder = sketchCreator.CreateBuilder(FunctionNames.LineTwoPoints); builder[0].Reference = firstPoint; builder[1].Reference = secondPoint; builder.ExecuteFunction(); return(builder); }
public void PerpendicularTest() { var document = TestUtils.DefaultsSetup(); var sketch = new SketchCreator(document); var sketchNode = sketch.BuildSketchNode(); document.Transact(); var firstPoint = sketch.GetPoint(new Point3D(1, 1, 0)); var secondPoint = sketch.GetPoint(new Point3D(4, 1, 0)); var thirdPoint = sketch.GetPoint(new Point3D(5, 3, 0)); var line = new NodeBuilder(document, FunctionNames.LineTwoPoints); line[0].Reference = firstPoint.Node; line[1].Reference = secondPoint.Node; line.ExecuteFunction(); var line2 = new NodeBuilder(document, FunctionNames.LineTwoPoints); line2[0].Reference = secondPoint.Node; line2[1].Reference = thirdPoint.Node; line2.ExecuteFunction(); var constraintBuilder = new NodeBuilder(document, Constraint2DNames.PerpendicularFunction); constraintBuilder[0].Reference = line.Node; constraintBuilder[1].Reference = line2.Node; document.Commit("Draw"); var docSolverAdapter = new DocumentToSolverAdapter(document, sketchNode); docSolverAdapter.ImpactedNodes(firstPoint.Node, firstPoint.Node.Index); var error = docSolverAdapter.Solve(); Assert.IsTrue(error == 0, "Invalid perpendicular solution"); }
private void CirclePreview(bool updateShape) { double radius; if (Dependency.Steps[1].Data is Mouse3DPosition) { // If point received from mouse Dependency.Steps[0].Get <gpAx1>().Direction = ( Dependency.Steps[1].Get <Mouse3DPosition>().Axis.Direction); var currentPoint = Dependency.Steps[1].Get <Mouse3DPosition>().Point.GpPnt; radius = Dependency.Steps[0].Get <gpAx1>().Location.Distance(currentPoint); Dependency.Steps[1].Data = radius; } else { // If radius received from command line radius = Dependency.Steps[1].Get <double>(); } // Make the animation // Dependency.AnimationNodeBuilder = new NodeBuilder(Dependency.AnimationDocument, FunctionNames.Circle); var sketchCreator = new SketchCreator(Dependency.AnimationDocument); var center = sketchCreator.GetPoint(new Point3D((Dependency.Steps[0].Data as gpAx1).Location)).Node; sketchCreator = new SketchCreator(Dependency.AnimationDocument); var builder = new NodeBuilder(Dependency.AnimationDocument, FunctionNames.Circle); builder[0].Reference = center; builder[1].Real = radius; builder.EnableSelection = false; builder.Color = Color.Red; builder.DisplayMode = AISDisplayMode.AIS_WireFrame; builder.Transparency = 0.2; builder.ExecuteFunction(); Dependency.AnimationNodeBuilder = builder; }
private NodeBuilder BuildCircleInDocument(Document previewDocument, bool animation) { var sketchBuilder = new SketchCreator(previewDocument); //var nodeBuilder = new NodeBuilder(sketchBuilder.CurrentSketch); //nodeBuilder[0].TransformedAxis3D = normalOnPlane; ////Document.Root.Get<ShapeFunctionsInterface.Interpreters.DocumentContextInterpreter>().ActiveSketch var circleCenterPoint = Points[0]; Ensure.IsNotNull(circleCenterPoint); var firstPointBuilder = sketchBuilder.GetPoint(circleCenterPoint).Node; var builder = new NodeBuilder(previewDocument, FunctionNames.Circle); builder[0].Reference = firstPointBuilder; builder[1].Real = circleRadius > 0.0 ? circleRadius : Points[1].Distance(Points[0]); if (animation) { builder.EnableSelection = false; } builder.ExecuteFunction(); return(builder); }
private void DrawHint() { Clear(); if (!_isEnabled) { return; } _document.Transact(); var sketchBuilder = new SketchCreator(_document); var axis = new Axis(_visualHintAxis); var pointBuilder = sketchBuilder.GetPoint(axis.Location); var builder = new NodeBuilder(_document, FunctionNames.Circle); builder[0].Reference = pointBuilder.Node; builder[1].Real = 2; builder.Transparency = 0.6; builder.Color = Color.Black; builder.DisplayMode = AISDisplayMode.AIS_WireFrame; builder.EnableSelection = false; builder.ExecuteFunction(); _document.Commit("PreviewPlane"); }
public List <NodeBuilder> GetTrimResult(Document document, List <SceneSelectedEntity> trimmedEntities, Point3D mouseData) { var sketchCreator = new SketchCreator(document); var trimmingEntities = new List <SceneSelectedEntity>(); foreach (var node in document.Root.Children) { if (node.Value != trimmedEntities[0].Node && IsTrimmingWire(node.Value))// && !SameArc(node.Value, trimmedEntities[0].Node)) { var sse = new SceneSelectedEntity(node.Value) { ShapeType = TopAbsShapeEnum.TopAbs_WIRE }; trimmingEntities.Add(sse); } } trimmedEntities[0].ShapeType = TopAbsShapeEnum.TopAbs_WIRE; var newNodes = new List <NodeBuilder>(); if (trimmedEntities[0].Node.Get <ShapeFunctionsInterface.Functions.FunctionInterpreter>().Name == FunctionNames.LineTwoPoints) { var intervals = ExecuteTrim(trimmedEntities[0], trimmingEntities, mouseData.GpPnt); if (intervals == null) { return(newNodes); } if (intervals.Count == 0) { NodeBuilderUtils.DeleteNode(trimmedEntities[0].Node, Document); return(newNodes); } else { if (intervals.Count % 2 == 0) { for (int i = 0; i < intervals.Count; i += 2) { var builder = new NodeBuilder(document, FunctionNames.LineTwoPoints); builder[0].Reference = sketchCreator.GetPoint(intervals[i]).Node; builder[1].Reference = sketchCreator.GetPoint(intervals[i + 1]).Node; builder.ExecuteFunction(); newNodes.Add(builder); } } } } else if (trimmedEntities[0].Node.Get <ShapeFunctionsInterface.Functions.FunctionInterpreter>().Name == FunctionNames.Circle || trimmedEntities[0].Node.Get <ShapeFunctionsInterface.Functions.FunctionInterpreter>().Name == FunctionNames.Arc) { var centre = new NodeBuilder(trimmedEntities[0].Node.Children[1].Get <ReferenceInterpreter>().Node)[1].TransformedPoint3D; var intervals = ExecuteTrim(trimmedEntities[0], trimmingEntities, mouseData.GpPnt); if (intervals != null && intervals.Count % 2 == 0) { for (int i = 0; i < intervals.Count; i += 2) { newNodes.Add(BuildArc(document, centre, intervals[i], intervals[i + 1])); } } } else if (trimmedEntities[0].Node.Get <ShapeFunctionsInterface.Functions.FunctionInterpreter>().Name == FunctionNames.Arc3P) { var point1 = new NodeBuilder(trimmedEntities[0].Node.Children[1].Get <ReferenceInterpreter>().Node)[1].TransformedPoint3D; var point2 = new NodeBuilder(trimmedEntities[0].Node.Children[2].Get <ReferenceInterpreter>().Node)[1].TransformedPoint3D; var point3 = new NodeBuilder(trimmedEntities[0].Node.Children[3].Get <ReferenceInterpreter>().Node)[1].TransformedPoint3D; var gceCirc = new gceMakeCirc(point1.GpPnt, point2.GpPnt, point3.GpPnt); var centre = new Point3D(gceCirc.Value.Axis.Location); var intervals = ExecuteTrim(trimmedEntities[0], trimmingEntities, mouseData.GpPnt); if (intervals != null && intervals.Count % 2 == 0) { for (int i = 0; i < intervals.Count; i += 2) { newNodes.Add(BuildArc(document, centre, intervals[i], intervals[i + 1])); } } } else { var builder = new NodeBuilder(document, FunctionNames.Trim); builder[0].ReferenceList = trimmingEntities; builder[1].ReferenceData = trimmedEntities[0]; var point = sketchCreator.GetPoint(mouseData).Node; builder[2].Reference = point; if (builder.ExecuteFunction()) { newNodes.Add(builder); } //NodeBuilderUtils.DeleteNode(point, document); point.Set <DrawingAttributesInterpreter>().Visibility = ObjectVisibility.Hidden; } return(newNodes); }
private Node GetPointNode(Point3D point) { return(_sketchCreator.GetPoint(point).Node); }