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);
        }