private void Execute(Node node, AttributeInterpreterBase atttributeType)
        {
            var nodePoint = NodeBuilderUtils.GetNodePoint(Parent);

            if (nodePoint == null)
            {
                return;
            }
            var builder = new NodeBuilder(_node);
            var y       = builder[0].TransformedPoint3D.Y;
            var point   = (Point3D)nodePoint;

            point.Y = y;
            SetupPointCoordinate(point);
        }
        public override bool Execute()
        {
            var edgeNode      = Dependency[0].Reference;
            var edgeIndexNode = Dependency[0].ReferenceData.ShapeCount;

            if (ShapeUtils.ExtractShape(edgeNode) == null)
            {
                return(false);
            }
            var edge =
                TopoDS.Edge(ShapeUtils.ExtractSubShape(edgeNode, edgeIndexNode, TopAbsShapeEnum.TopAbs_EDGE));
            var distance = Dependency[1].Real;

            var referenceShape           = Dependency[2].Reference;
            var referebceShapePointIndex = Dependency[3].Integer;

            if (referenceShape == null)
            {
                return(false);
            }
            var point = NodeBuilderUtils.GetNodePoint(referenceShape[referebceShapePointIndex]);

            if (point != null)
            {
                var projectionPoint = GeomUtils.ProjectPointOnEdge(edge, ((Point3D)point).GpPnt);
                var newPoint        = new Point3D(projectionPoint);
                var currentDistance = projectionPoint.Distance(((Point3D)point).GpPnt);
                if (Math.Abs(currentDistance - distance) > 0.01)
                {
                    var scale = currentDistance / distance;
                    if (Math.Abs(scale - 1) > Precision.Confusion)
                    {
                        newPoint = TreeUtils.ScaleSegment(newPoint, ((Point3D)point), scale);
                    }
                }

                NodeBuilderUtils.SetupNodePoint(referenceShape[referebceShapePointIndex], newPoint);
            }
            return(true);
        }
 private void Execute()
 {
     var result = NodeBuilderUtils.GetNodePoint(Parent);
     if (result != null) SetupPointCoordinate((Point3D) result);
 }