public void CircleMultiLineTrimTest() { var wireCircle = OccShapeCreatorCode.CreateWireCircle(new gpAx1(new gpPnt(0, 0, 0), new gpDir(0, 0, 1)), 2); var circleEdges = GeomUtils.ExtractEdges(wireCircle); var edge1 = new BRepBuilderAPIMakeEdge(new gpPnt(-3, 0, 0), new gpPnt(3, 0, 0)).Edge; var edge2 = new BRepBuilderAPIMakeEdge(new gpPnt(0, -3, 0), new gpPnt(0, 3, 0)).Edge; Assert.IsTrue(circleEdges.Count > 0, "invalid circle edges"); var clickPoint = new Point3D(2, 0, 0); var trimmingEdges = new List <TopoDSEdge> { edge1, edge2 }; var trimmedEdges = GeomUtils.TrimGenericShape(trimmingEdges, circleEdges[0], clickPoint); Assert.IsTrue(trimmedEdges.Count == 1, "Incorrect number of trim solutions"); var trimmedCurve = new BRepAdaptorCurve(trimmedEdges[0]); var firstPoint = new Point3D(trimmedCurve.Value(trimmedCurve.FirstParameter)); var lastPoint = new Point3D(trimmedCurve.Value(trimmedCurve.LastParameter)); Assert.IsTrue(firstPoint.IsEqual(new Point3D(0, 2, 0)), "invalid trimming point"); Assert.IsTrue(lastPoint.IsEqual(new Point3D(2, 0, 0)), "invalid trimming point"); }
public override bool Execute() { var radius = Dependency[1].Real; if (radius < Precision.Confusion) { return(false); } var pointBuilder = Dependency[0].ReferenceBuilder; var sketchNode = pointBuilder.Dependency[0].ReferenceBuilder; var transformedAxis = NodeBuilderUtils.GetTransformedAxis(sketchNode); var centerAxis = new Axis { Location = pointBuilder[1].TransformedPoint3D, Direction = new Point3D(transformedAxis.Direction.X, transformedAxis.Direction.Y, transformedAxis.Direction.Z) }; var topoShape = OccShapeCreatorCode.CreateWireCircle(centerAxis.GpAxis, radius); Shape = topoShape; return(true); }